Docker 是什么

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

Docker 的理念

一次构建处处运行:

  1. 更快速的应用交付和部署;
  2. 更便捷的升级和扩缩容;
  3. 更简单的系统运维;
  4. 更高效的计算资源利用。

解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

Docker 的用途

Docker 的主要用途,目前有三大类。

  • 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
  • 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
  • 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

Docker 基本组成

  • 镜像 (image)
  • 容器 (container)
  • 仓库 (repository)

Docker 架构图

docker容器 没有vim docker vlmcsd_docker

Docker 的安装

主要介绍 CentOS 6 和 CentOS 7 安装 Docker。

CentOS 6 安装 Docker

yum install -y repel-release
yum install -y docker-io

查看 Docker 配置文件

cat /etc/sysconfig/docker

启动 Docker

service docker start

查看 Docker 版本

docker version

CentOS 7 安装 Docker

Docker 中文官网有提供 CentOS 7 安装 Docker 步骤,我在这里就不啰嗦了。

Docker 配置国内镜像加速

国内直接从 Docker Hub 拉取镜像比较慢,推荐使用国内阿里云镜像加速和网易云镜像加速。我这里简单介绍阿里云镜像加速使用。

注册或使用淘宝账号进行登录。

找到 控制台 - 管理控制台 - 产品与服务 - 弹性计算 - 容器镜像服务 - 镜像加速器,找到自己的加速器地址。

docker容器 没有vim docker vlmcsd_CentOS_02


CentOS 6 配置镜像加速地址

vim /etc/sysconfig/docker

添加如下配置

docker容器 没有vim docker vlmcsd_docker容器 没有vim_03


重启 Docker 服务

service docker restart

查看 Docker 加速镜像是否配置成功

docker容器 没有vim docker vlmcsd_docker容器 没有vim_04


CentOS 7 配置镜像加速地址

执行以下操作,完成 CentOS 7 镜像加速配置操作

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://***.mirror.aliyuncs.com"]    ### 填写自己的加速器地址
}
EOF

systemctl daemon-reload
systemctl restart docker

Docker 运行 hello-world

docker run hello-world

由于本地没有 hello-world 这个镜像,所以会下载一个 hello-world 镜像,并在容器内运行。

docker容器 没有vim docker vlmcsd_docker容器 没有vim_05


简单介绍以下 docker run 的流程

  • Docker 在本机中寻找 hello-world 镜像
  • 如果本机有 hello-world 镜像,则以该镜像为模板生产容器实例运行
  • 如果本机没有 hello-world 镜像,去 Docker Hub 上查找该镜像
  • 在 Docker Hub 查到该镜像,则下载到本地,以该镜像为模板生产容器实例运行
  • 在 Docker Hub 查不到该镜像,则返回失败错误

Docker 是怎么工作的

Docker 是一个 Client-Server 结构的系统,Docker 守护进程运行在主机上,然后通过 Socket 连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器。

docker容器 没有vim docker vlmcsd_Docker_06