简介
docker是一个开源的容器引擎,沙箱机制,开销低。(一种容器技术,解决软件跨环境迁移问题----比如从生产环境迁移到测试环境运维环境)
概念
- 镜像(Image):类似root文件镜像—比如官方镜像Ubuntu
- 容器(Container):镜像和容器的关系,类似于面向对象中的类和对象的关系。镜像是类,容器是镜像运行时的实体(对象)。我们可以创建、启动、停止删除容器。
- 仓库(Repository):保存镜像(类比于maven中央仓库)
Docker命令
- 启动服务—systemctl start docker
- 停止服务—systemctl stop docker
- 重启服务—systemctl restart docker
- 查看状态—systemctl status docker
- 开机启动—systemctl enable docker
Docker容器命令
- 进入容器 docker exec 参数 # 退出容器,容器不会关闭
- 停止容器 docker stop 容器名称
- 启动容器 docker start 容器名称
- 删除容器 docker rm 容器名称
- 查看容器信息 docker inspect 容器名称
数据卷
数据卷是宿主机中的一个目录或文件,当容器目录和数据卷绑定后,会同步进行修改,可以被多个容器同时挂载。另外,一个容器可以挂载多个数据卷。
解决了以下问题:
- docker容器和外部容器不能直接交换文件(通过数据卷间接)
- 容器之间数据交互
- docker容器删除后,容器中产生的数据不会销毁。
数据卷容器:
- 创建一个容器,让它挂载一个目录,然后别的容器继承这个容器(–volume-from)
- 这样可以简单实现数据卷配置
Mysql部署
端口映射:容器内不能和外部机器直接通信,外部机器可以和宿主机进行通信,宿主机可以和容器进行通信。这样的话,我们可以将容器内提供服务的端口(比如3306)映射到宿主机的端口上(比如3307)。外部容器访问宿主机的该端口,从而间接访问容器内的服务。
Dockerfile
docker镜像原理
- Docker镜像本质是什么?为什么docker中的centos镜像只有200MB那么小(操作系统的iso文件要几个G)?为什么docker中的tomcat镜像有500MB那么大?
- 分层文件系统
- Centos中的iso镜像文件包含bootfs和rootfs,docker的centos镜像复用操作系统的bootfs,只包含rootfs和其他镜像层
- docker中镜像是分层的,tomcat依赖于父镜像和基础镜像,所以整个看起来就很大