1. Docker概述

1.1.Docker概述

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  • Docker应用场景
    • Web 应用的自动化打包和发布
    • 自动化测试和持续集成、发布
    • 在服务型环境中部署和调整数据库或其他的后台应用

使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。
image.png
Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

1.2. Docker容器与传统虚拟机比较

  • 传统虚拟机
    image.png

传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如:VirtualBox和VMWare等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。

  • Docker
    image.png

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

1.3. Docker组成部分

image.png
|名称 |说明|
|-------|-------|
|Docker 镜像(Images)|Docker 镜像是用于创建 Docker 容器的模板。 镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。|
|Docker 容器(Container)|容器是独立运行的一个或一组应用。镜像相当于类,容器相当于类的实例|
|Docker 客户端(Client) |Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。|
|Docker 主机(Host)|一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。|
|Docker守护进程|是Docker服务器端进程,负责支撑Docker 容器的运行以及镜像的管理。|
|Docker 仓库DockerHub(Registry)|Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub提供了庞大的镜像集合供使用。用户也可以将自己本地的镜像推送到Docker仓库供其他人下载。|

2. Docker安装与启动

2.1. Docker安装

Docker可以运行在MAC、Windows、CentOS、DEBIAN、UBUNTU等操作系统上,提供社区版和企业版,本课程基于CentOS安装Docker。CentOS6对docker支持的不好,使用docker建议使用CentOS7。

以下是在CentOS7中安装Docker的步骤:

# 1、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依
赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 2、 设置yum源
# 2.1、方案一:使用ustc的
sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 2.2、方案二:使用阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 3、 安装docker;出现输入的界面都按 y
sudo yum install -y docker-ce

# 4、 查看docker版本
docker -v

2.2. 设置ustc镜像

1、 编辑文件/etc/docker/daemon.json

# 执行如下命令:
mkdir /etc/docker
vim /etc/docker/daemon.json

2、在文件中加入下面内容

{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

2.3. Docker启动与停止命令

# 启动docker服务:
systemctl start docker
# 停止docker服务:
systemctl stop docker
# 重启docker服务:
systemctl restart docker
# 查看docker服务状态:
systemctl status docker
# 设置开机启动docker服务:
systemctl enable docker
# 查看docker镜像
docker images
# 查看dokcer容器服务运行状态
docker ps -a
# # 启动所有的容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
# 停止所有的容器
docker stop $(docker ps -aq)
# 删除所有的容器
docker rm $(docker ps -aq)
# 删除所有的镜像
docker rmi $(docker images -q)

Q.E.D.