在安装好docker后,会默认初始化一个 docker0的网桥
docker0 Link encap:Ethernet HWaddr ee:8c:1f:8b:d7:59
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
...
在host机器上,会为每一个容器生成一个默认的网卡类似这样的 vethdBVa1H veth*
这个网卡的一端连接在容器的eth0,一端连接到docker0.这样就实现了每个容器有一个单独的IP.
这里如果需要容器访问外网,需要将eth0设置为混杂模式:
$ifconfig eth0 promisc
这样看来,容器会从172.17.0.0/24 这个网段选择一个IP作为eth0的IP,这样,容器就可以和外部通过 docker0网桥通信了.
在容器内部监听一个端口 python -m SimpleHTTPServer 80 >> /tmp/log.log &
从ghost访问 telnet 172.17.0.2 80
在容器中看到如下:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2823/python
tcp 0 0 172.17.0.2:80 172.17.42.1:46142 TIME_WAIT -
在host上看到
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 172.17.42.1:46142 172.17.0.2:80 ESTABLISHED 10244/telnet
如果需要外部能够访问容器,需要做端口映射规则,和配置虚拟机一样的道理, 只不过这里可以看到的是,80端口并没有占用了本地端口,而是在容器内部做了监听,外部是通过docker0 桥接过去的,每个容器间也做到了端口和网络隔离.
6.日志记录
不多说,在 /var/lib/docker/containers/<image-long-id>.log 下
7.变更管理
Docker的变更管理看做是git的版本管理好了。
生成镜像的时候,未做改动的部分就是上一个版本的镜像的引用,如果做了改动,就是一个新的文件。
将刚才操作的容器做成镜像
docker commit <image-id> <REPOSITORY>
此时的镜像多出来的部分,比如我在这个镜像中安装了Python,那么多出来的部分作为新文件,其他部分任然是上一个版本的引用。
你可以搭建自己的镜像服务器,push到自己的镜像服务器,从其他机器拉下来后直接可以运行。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:Docker 常用命令整理并介绍pipework docker无法使用ip netns命令解决办法Docker学习之常用的基础命令总结Docker 清理命令集锦简单谈谈Docker镜像的使用方法docker kubernetes dashboard安装部署详细介绍Docker 命令教程(附中文解释)










