容器技术的起源
当我们将自己的代码交给测试、运维人员时,经常会出现环境问题,大部分人的反应通常会是这样的:
“明明在人家的环境上是可以运行的。”
上面这个过程,总共需要搭建三套环境,费时费力,还需要程序员表演。因此,docker技术应运而生。
docker的优势
容器的英文是container,它还有集装箱的意思。集装箱在海运史上是一项了不起的发明,大大降低了运输成本。下面是docker的优点:
- 集装箱之间相互隔离
- 长期反复使用
- 快速装载和卸载
- 规格标准,跨平台使用
docker架构
-
镜像(Image):任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
-
容器(Container):容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。
-
仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。
docker相关操作指令
镜像
1 容器转为镜像
[root@xxx ~]# docker commit 容器id 镜像名称:版本号
[root@xxx ~]# docker save -o 压缩文件名称 镜像名称:版本号
[root@xxx ~]# docker load –i 压缩文件名称
2 dockerfile
- Dockerfile 是一个文本文件
- 包含了一条条的指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
- 对于运维人员:在部署时,可以实现应用的无缝移植
容器
基于镜像创建一个容器,即docker run操作
[root@xxx ~]# docker run -it centos:latest
查看所有容器
[root@xxx ~]# docker ps -a
启动容器
[root@xxx ~]# docker start 容器名称
停止容器
[root@xxx ~]# docker stop 容器名称
删除容器
[root@xxx ~]# docker rm 容器名称
数据卷
数据卷的定义
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
数据卷作用
- 容器数据持久化
- 外部机器和容器间接通信
- 容器之间数据交换
配置数据卷
[root@xxx ~]# docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
注意事项
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷