Docker的安装和第一个镜像hello-docker

一、安装使用docker

来源自官方文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#第一步,如果有旧版本就要先卸载旧版本才可以使用
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

#第二步 下载相应的依赖和配置仓库
$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#这里我们使用的镜像改成阿里云的镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


#第三步,下载相应的客户端及其他文件,这里的ce代表的是社区版,官网也推荐我们使用社区版,其他的还有的版本叫做ee,企业版
$ sudo yum install docker-ce docker-ce-cli containerd.io
#在这里我自己的下载出现问题,按照提示在后面加上 --nobest 就可以运行了;

#第四步,开始使用docker
$ sudo systemctl start docker
$ sudo docker run hello-world

#一切就绪以后,出现以下代码就代表安装成功
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

#出现一个hello from docker就代表我们的使用成功了

配置阿里云镜像加速

1
2
3
4
5
6
7
8
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qiyb9988.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

这样配置以后我们的下载速度更快

二、hello_world的运行步骤

image-20201129142722307

三、底层原理

Docker底层原理

  • Docker Engine是一个客户端-服务器应用程序,具有以下主要组件:
    一个服务器,它是一种长期运行的程序,称为守护进程(dockerd命令)。
    一个REST API,它指定程序可以用来与守护进程对话并指示它做什么的接口。
    命令行接口(CLI)客户端(docker命令)。
  • Docker是一个Client Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户 端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境就是我们前面说到的集装箱。
    Client Server结构的系统在Docker——Docker介绍中的Docker架构图解析中有阐明

为什么Docker比虚拟机快?

1.Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。

2.Docker利用的是宿主机的内核,而不需要Guest OS,因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。

Docker容器 虚拟机(VM)
操作系统 与宿主机共享OS 宿主机OS上运行宿主机OS
存储大小 镜像小,便于存储与传输 镜像庞大(vmdk等)
运行性能 几乎无额外性能损失 操作系统额外的cpu、内存消耗
移植性 轻便、灵活、适用于Linux 笨重、与虚拟化技术耦合度高
硬件亲和性 面向软件开发者 面向硬件运维者

这里的guest os指的是虚拟机的硬件,我们的Docker不用使用这个就可以运行,它实际上是用的宿主机内存;