使用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