Docker的初步认知
注:文章内容仅作为学习交流。
一、Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
二、Docker的架构与构建
1.Docker的架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
容器 | 对象 |
镜像 | 类 |
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
Docker由什么组成呢, 包括三个基本概念:
仓库(Repository)
镜像(Image)
容器(Container)
2.对Docker的构建
仓库(Repository)
Registry是Docker用于存放镜像文件的仓库,可以理解为类似于虚拟的物流仓储的仓库,里面存放的货物就是镜像文件。
基础操作:
Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上
(1)root账户登录,查看内核版本如下:
uname -a
(2)把yum包更新到最新
yum update
(期间要选择确认,输入 y 即可)
(3)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
(4)设置yum源(选择其中一个)
中央仓库:
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
或阿里仓库:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(5)查看特定的版本
yum list docker-ce --showduplicates | sort -r
(6)安装Docker,命令:yum install docker-ce-版本号。
yum install docker-ce-18.06.3.ce-3.el7
(期间要选择确认,输入 y 即可)
(7)启动Docker,命令:systemctl start docker,然后加入开机启动.
systemctl start docker
systemctl enable docker
docker version #查看docker信息
镜像(Image)
镜像就是构建容器的源代码,是一个只读的模板,由一层一层的文件系统组成的,类似于虚拟机的镜像。可以理解为类似于虚拟的物流网络,规定了每个集装箱的一些基本框架。
基础操作:
(1)列出镜像列表
docker images
(2)获取一个新的镜像,以ubuntu为例。
docker pull ubuntu:13.10
注意:如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。
下载完成后,我们可以直接使用这个镜像来运行容器。
容器(Container)
容器就是由Docker镜像创建的运行实例,类似于虚拟机,容器之间是相互隔离的,包含特定的应用及其所需的依赖文件。可以理解为类似于虚拟的物流车辆,相对独立,按照自身规定的逻辑执行。
基本操作:
(1)使用 ubuntu 镜像启动一个容器
docker run -it ubuntu /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit
(2)启动或停止的容器
docker ps #查看正在运行的容器
docker ps -a #查看所有的容器
docker start [容器名称ID]#启动某个容器
docke stop [容器名称ID]#停止某个容器
三、Docker的理解
对于仓库、镜像、容器来讲关系十分密切,现在应用docker容器技术的场景也越来越多。经过上述构建docker的操作过程想必对这三者的关系已经有所体会,它们之间的结构层次和仓库集装箱的结构类似。
Docker容器技术的优势是部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本。