Docker是什么?它是一个容器,相当于一个虚拟机,可以在容器里面安装各种镜像。例如安装nginx、redis、wordpress等,只需要去docker镜像市场下载对应软件的镜像可以实现一键安装,再也不用去配置各种麻烦的配置文件和环境变量了,因为镜像里面全部设置好了。同时可以实现秒级启动,容器的开销也极低。

简单来说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。

50af48fd26322db57ed715bbe08d2d38.png

今天我们就以docker安装以及使用docker安装nginx为例进行阐述。

安装与启动docker

使用yum命令查看可安装的docker版本:yum list | grep docker

安装命令:yum install docker-ce.x86_64启动:service docker start停止:service docker stop

设置docker 镜像源地址加速

如果docker不是官方镜像源地址,需要手动进行修改地址

修改方法:

使用 json 配置文件的方式,默认为 /etc/docker/daemon.json,在该文件中加入如下内容

{"registry-mirrors": ["https://registry.docker-cn.com"]}

docker常用操作命令

搜索docker镜像程序,例如搜索 nginx 镜像

命令:docker search nginx
b17c55daff068fa2f70b19cd8848d0bf.png

拉取镜像,例如拉取上面NAME为nginx的镜像

docker pull nginx

运行容器

运行nginx容器

docker run --name myNginx -d -p 80:80 -v /usr/docker/myNginx/html:/usr/share/nginx/html -v /usr/docker/myNginx/conf.d:/etc/nginx/conf.d -v /usr/docker/myNginx/logs:/var/log/nginx Nginx

命令说明请看下面nginx具体的安装步骤

查看正在运行的镜像

命令:docker ps
b81555cc31275a2edd14d5e09293ae36.png

查看历史运行的镜像

命令:docker ps -a

进入容器内部,例如进入name为nginx81的容器内部

命令:docker exec -it nginx81 bash

命令说明:nginx81 指的是创建容器的名称,用 docker ps 可以看到正在运行的容器名称

2ceb1b661213c4bae9c60aa869d4d36e.png

进入容器也可以用容器的ID进入docker exec -it 0117fdb52af6 bash

其中0117fdb52af6 为容器的id

324a8b043d8d5975e5d6083940aa42e6.png

容器时区与系统时区同步

容器内部时区默认是UTC而系统时区是CST,时间相差8个小时,为了同步时区从而达到同步时间运行容器的时候 将系统时区文件映射到容器中。

运行时加上参数 -v /etc/localtime:/etc/localtime

例如运行nginx容器:

命令:docker run --name myNginx -d -p 80:80 -v /etc/localtime:/etc/localtime nginx

如果是自己构建的docker容器,构建时注意设置时区问题

docker容器与系统之间文件拷贝

拷贝容器文件到系统:例如拷贝容器id为b62d9360c8bb的/etc/nginx/nginx.conf 到 系统/usr目录

命令: docker cp b62d9360c8bb:/etc/nginx/nginx.conf /usr

若是从容器内拷贝文件出来只需两个路径对调一下顺序即可

docker查看镜像以及镜像、容器的删除

查看已下载到系统的镜像文件

命令:docker images
fb397957fa8e926f00c20718c53fc3f4.png

其中 TAG 为镜像的版本号,IMAGE ID为镜像ID

删除镜像

命令:docker rmi 313343fef30b

其中313343fef30b为镜像的ID,需要注意的是删除镜像前需要确保该镜像不在容器中运行,且通过该镜像所构建的容器已经删除掉,否则删除报错

删除容器

命令:docker rm 7246d006ec9b

其中 7246d006ec9b 为容器ID,删除前容器必须是停止状态,否则删除报错

docker的卸载

查看已安装的 docker版本

yum list installed | grep docker
abf584714fc44546e7909667579923ce.png

卸载docker

yum -y remove docker-ce.x86_64yum -y remove docker-client.x86_64yum -y remove docker-common.x86_64

docker 安装nginx

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器以及做负载均衡、web缓存等

搜索nginx镜像

命令:docker search nginx
c146140f67378586917169912cd89271.png

5.2拉取nginx镜像

例如拉取上面NAME为nginx的镜像

命令:docker pull nginx

查看所下载的nginx镜像

命令:docker images
65188ff853424283eb697a85bdd22069.png

运行nginx容器

docker run --name myNginx -d -p 443:443 -v /usr/docker/myNginx/html:/usr/share/nginx/html -v /usr/docker/myNginx/conf.d:/etc/nginx/conf.d -v /usr/docker/myNginx/logs:/var/log/nginx ginx:latest

命令说明:

docker run :运行容器

--name:为容器取得别名

myNginx:容器的别名,自定义

-d:指定容器的运行方式为后台运行

-p:指定将系统的443端口映射到nginx容器中的443端口

:linux命令换行符

-v:映射容器中的目录到系统中的目录

-v /usr/docker/myNginx/html:/usr/share/nginx/html :映射nginx静态页面目录系统目录便于部署静态页面项目

-v /usr/docker/myNginx/conf.d:/etc/nginx/conf.d 映射nginx配置文件目录到系统目录便于配置nginx

-v /usr/docker/myNginx/logs:/var/log/nginx设置nginx日志文件到系统目录便于查看nginx日志

nginx:latest :nginx为镜像名称,latest为版本号

nginx代理服务配置

例如需要把域名xxx.com所有以/order/为前缀的请求代理转发到http://168.168.28.35:8080/ORDERSERVICE服务进行处理

(1) 在nginx的配置目录下增加配置文件eur.conf名字自定义,文件后缀必须为conf,配置文件的目录如5.3所运行的容器,已把nginx容器的配置文件目录映射到了系统的/usr/docker/myNginx/conf.d目录

(2) 编写代理配置文件

server{      listen 443;      server_name xxx.com;      location / {          root /usr/share/nginx/html;          index index.html index.htm;      }      location /order/ {      proxy_pass http://168.168.28.35:8080/ORDERSERVICE/;      }}

配置说明:

isten 443:表示监听443端口,此端口需与容器映射端口对应,例如运行nginx容器时

将系统的443映射到容器的443端口则此处配置应监听443,若系统程序端口是8081,此时将系统8081端口映射到容器的80端口,那么配置文件需要监听的是80端口。

server_name:服务的域名

location / :nginx默认访问请求,root 指nginx访问的静态文件目录,index 指定默认的首页

location /order/ :处理jiahetech.com/order/开头的请求

proxy_pass:处理请求的服务地址

nginx配置https

把https相关的证书文件和证书key放到配置目录下面,再将上面配置修改如下

server{    listen 443 ssl;    server_name xxx.com;    ssl_certificate /etc/nginx/conf.d/ssl/server.crt;    ssl_certificate_key /etc/nginx/conf.d/ssl/server.key;    location / {        root /usr/share/nginx/html;        index index.html index.htm;    }    location /order/ {    proxy_pass http://168.168.28.35:5581/ORDERSERVICE/;    }}

配置说明:

listen 443 ssl:监听443端口,开启ssl

ssl_certificate :ssl证书的路径(容器内的路径,不是映射到宿主机的路径)

ssl_certificate_key :证书key文件路径(容器内的路径,不是映射到宿主机的路径)

5.6nginx反向代理请求头问题

若业务需要获取客户端的请求的真实IP,手动设置相关请求头信息,默认不设置话,业务服务端获取的IP信息为nginx的IP地址

location /order/ {    proxy_pass http://168.168.28.35:5581/ORDERSERVICE/;    #设置代理请求头信息    proxy_set_header Host $host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}

5.7.nginx常用操作命令

nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。

nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。

nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。

nginx -s reopen 重新打开日志文件。

------------------------------------------------END-----------------------------------------------------------------

你的一个赞一个关注是我创作的动力,是我持续输出的能量源泉,老铁关注一波吧

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐