docker基础

---恢复内容开始---

1.容器在执行完命令后会停止运行

2.容器=镜像+可读写文件

3.创建镜像

文件统一系统支持镜像叠加,可在基础镜像之上根据需要加入新的镜像

4.dockerfile文件

由一组有序指令和参数构成,每条指令被执行后都会生成并提交一个新的镜像层

5.若dockerfile中某条指令执行失败,之前的指令会提交一个正确的镜像

6.构建缓存的概念

若某个dockerfile被执行过,再次执行此文件时,被执行过的指令不会再次被执行,docker从第一条尚未被执行过的指令开始指向dockerfile文件

优点:利用已经生成的镜像,节省重新生成镜像所需的时间

缺点:有时需要消除缓存,使执行过的指令重新执行

完全消除缓存的方法:

docker  build  --no-cache

局部消除缓存的方法:

若某条指令需要重新执行,可在它之前加入一条新指令或对他之前的指令做修改

---恢复内容结束---

1.容器在执行完命令后会停止运行

2.容器=镜像+可读写文件

3.创建镜像

文件统一系统支持镜像叠加,可在基础镜像之上根据需要加入新的镜像

4.dockerfile文件

由一组有序指令和参数构成,每条指令被执行后都会生成并提交一个新的镜像层

5.若dockerfile中某条指令执行失败,之前的指令会提交一个正确的镜像

6.构建缓存的概念

若某个dockerfile被执行过,再次执行此文件时,被执行过的指令不会再次被执行,docker从第一条尚未被执行过的指令开始指向dockerfile文件

优点:利用已经生成的镜像,节省重新生成镜像所需的时间

缺点:有时需要消除缓存,使执行过的指令重新执行

完全消除缓存的方法:

docker  build  --no-cache

局部消除缓存的方法:

若某条指令需要重新执行,可在它之前加入一条新指令或对他之前的指令做修改

使用docker pull下载镜像时失败的原因可能是网速太慢,可以用阿里云之类的加速器

docker0好像捕捉不到数据包?

答:可能是有延迟,等一会看看

外部无法与容器应用进行主动通信是为什么?

答:因为docker容器端口没有对外公开,在dockerfile里或docker run 时应对外公开应用的端口

公开端口时可能出现如下错误:

COMMAND_FAILED: '/sbin/iptables -t nat -A Docker -p tcp -d 0/0 --dport 8111 -j DNAT --to-destination 172.17.0.6:8111 ! -i docker0' failed: iptables: No chain/target/match by that name.

解决方法如下:

pkill docker

iptables -t nat -F
ifconfig docker0 down

brctl delbr docker0

重启docker后解决

docker容器若停止运行,则对外公开的端口会失效

Dockerfile构建镜像

创建一个dockerfile文件的步骤:

1.创建一个新目录

2.进入这个目录

3.在新建目录下创建Dockerfile

4.在当前目录下执行docker build命令

docker容器为最小化安装,不带网络命令,可执行yum install net-tools,下载命令包

原文地址:https://www.cnblogs.com/adelep/p/6500802.html