docker运行nginx的正确姿势

373 阅读2分钟

使用docker运行nginx命令记录:

拉取镜像

# 拉取镜像
docker pull nginx

创建宿主机映射目录

首先运行一个nginx容器,我们从容器里拷贝出来一些目录,这一步是为了方便我们以后修改配置,不用每次都进入镜像内操作

# 运行容器
docker run -d nginx

# 从容器中拷贝对应的目录到宿主机
docker cp 342f70d637e2:/etc/nginx/nginx.conf /data/nginx/conf/

# 创建html log ssl目录
mkdir -p /data/nginx/html
mkdir -p /data/nginx/log
mkdir -p /data/nginx/ssl

停止容器,并删除对应的容器对象

docker rm -f 342f70d637e2

启动容器

主要是指定映射端口和挂载目录

# 启动镜像
docker run -p 80:80 -p 443:443 --name myNginx -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/ssl:/usr/share/nginx/ssl -d nginx

如果中途需要新增端口或者挂载目录,可以参考如下方案:

将当前运行容器打成镜像,重新启动,命令如下:

# 停止当前容器
docker stop containerId

# 提交镜像
docker commit containerId 镜像名:tag

# 基于新镜像启动
docker run -p 80:80 -p 443:443 --name myNginx -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/ssl:/usr/share/nginx/ssl -d 新镜像名:tag

docker改名容器

docker rename 旧容器名称 新容器名称

修改配置文件

进入我们刚才设置的映射目录修改配置文件

cd /data/nginx/conf/conf.d

# 修改配置文件 略

修改后需要reload nginx

docker exec 容器id nginx -s reload

即可生效

容器间调用

桥接模式,需要从nginx访问其他容器应用

1. 新建桥接网络

docker create network [网络名]

2. 运行容器时指定桥接网络和本容器网络别名

docker run --network [网络名] --network-alias [网络别名] [容器名]

网络名就是此容器要加入的桥接网络

网络别名是在同一桥接网络下,其他容器访问本容器的标识

我们将上面的nginx删除,重新运行

docker rm -f myNginx

# 运行 指定桥接网络和网络别名
docker run -p 80:80 -p 443:443 --name myNginx -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/ssl:/usr/share/nginx/ssl --network fson_network --network-alias nginx -d nginx

这样就可以在其他容器内容使用 nginx:端口的方式调用nginx了

telnet nginx 80