应用部署
通信
- 容器内的网络服务和外部机器不能直接通信
- 外部机器和宿主机可以直接通信
- 宿主机和机器可以直接通信
- 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器访问宿主机的该端口,从而间接访问容器的服务。这种操作被称为端口映射
Dockerfile
docker镜像原理
- docker镜像是由特殊的文件系统叠加而成
- 最低端是bootfs,并使用宿主机的bootfs
- 第二层是root文件系统rootfs,称为base image
- 在往上可以叠加其他的镜像文件,eg:jdk、tomcat等
- 同一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
- 一个镜像可以放在另一个镜像的上面,位于下面的镜像称为父镜像,最底部的镜像称为基础镜像
docker小问
1、docker镜像本质是什么?
是一个分层文件系统
2、docker中一个centos镜像为什么只有200mb,而一个centos的iso文件要几个G
centos的iso镜像文件包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层
3、docker中一个tomcat镜像为什么只有500mb,而一个tomcat安装包只有70多mb?
由于docker中镜像是分层的,tomcat虽然只有70多mb,但是他需要依赖于父镜像和基础镜像,所有整个对外暴露的tomcat镜像大小500多mb
镜像制作
1、容器转为镜像
docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load -i 压缩文件名称