一
docker build命令可以利用工作目录的项目生成新的镜像文件,但是时间比较长,如果项目的改动不大,可以使用commit命令提交新版本的镜像,也不会影响老镜像
需要同时开启三个Linux服务器终端窗口,1是生成原有镜像的容器并运行 2是进入旧容器进行文件修改和安装等操作 3是在窗口2运行的情况下提交更改生成新镜像,需要注意的是在3窗口新镜像生成之后在窗口2才能执行exit,退出容器
1)窗口1中,把旧镜像RUN起来,生成旧容器,用如下命令查看运行中的容器,并记录CONTAINER ID字段
sudo docker ps -a
2)交互模式进入旧容器
窗口2中执行
sudo docker exec -it 086c814d /bin/bash
086c814d 就是窗口1的CONTAINER ID
3)窗口3,在窗口2中做出改变后,在窗口3执行提交命令并为新镜像命名new_image
docker commit -m "修改了xx" -a="作者名字xx" 086c814d new_image
使用命令docker images查看已经生成的新镜像
二
容器映射宿主机端口
1)映射方法
在运行
docker run -p 宿主端口:容器端口 镜像名称
访问宿主机服务器服务的时候,直接访问宿主端口就可以了。容器端口是容器内工程代码开放的端口比如listen(8005)。
2)映射原理
iptables
3)删除方法
先查看iptables规则,找到端口对应的规则 然后删除规则
iptables -t nat -nL --liner-number
iptables -t nat -D DOCKER $num
三
容器映射宿主机目录
1)docker images
查看镜像,因为要通过现有的镜像搞一个新容器,用新容器进行工作目录映射
运行docker images, 显示的字段 “REPOSTORY :TAG” 就是镜像名称
2)docker ps
查看容器,通过字段"STATUS"查看是否正在运行,“IMAGE”字段就是镜像名称,“NAMES”字段就是容器名称
3)找到镜像中合适的位置,作为下一步的path2
需要进入镜像对应的一个正在运行的容器中确认,比如上图中的tomcat8080
docker exec -it tomcat8080 /bin/bash
根据项目情况,目标位置在“webapps”中,还要加上前面的红框里面的路径,共同构成了第四步中的path2“/usr/local/tomcat/webapps”
4)
docker run -d --name tomcat8082 -p 8082:8080 -v /root/tomcat/webapps/:/usr/local/tomcat/webapps tomcat
-d 代表在后台运行
--name tomcat8082 是新的容器名称自己起一个就可以
-p 8082:8080 将容器的8080(程序指定的端口)映射到宿主机8082端口
-v path1:path2 path1是宿主机上的位置,path2是容器内的位置
tomcat 是镜像名称,在docker ps时的"IMAGE"字段中可以看到