因为单位安全要求,以前合作厂商部署的项目的docker内nginx需要升级(内网环境),平时主要负责开发,很少接触运维,因此记录下相关过程:
1.在能连外网的设备上打包nginx镜像:
1)docker pull nginx(下载 默认nginx:latest)
2)docker run --name nginx -p 9001:80 -d nginx(测试运行)
3)docker stop nginx、 docker save nginx -o nginx.tar、chmod 777 nginx.tar (打包,赋权)
2.将nginx.tar拷入内网设备
docker load -i nginx.tar
3.因为当时厂商用docker compose安装的service,各service间都有依赖关系,写在docker-compose.yaml文件中,所以docker stop nginx之后 再用docker-compose -f docker-compose up -d --no-recreate nginx:latest会因为依赖关系优先创建其他service的容器,而因为其他service的容器还在运行,导致容器名/端口冲突,无法正常启动nginx。
解决方法为还是用docker run 启动nginx 根据yaml中nginx的各项配置添加参数,如:
docker run {--add-host (对应yaml中extra_hosts配置)} -p (yaml中port) --name (自定义新容器名称) {--network (对应yaml中networks,需要找到network名)} -v (yaml中volumes 写绝对路径) -d nginx:latest
查看状态 docker ps -a ,为up即启动成功