Docker 安装基础教程

Docker 是什么


我们常常说,“在我电脑上跑的好好的啊!怎么你这就不行了?”

由于各式各样的环境配置,总是能导致我们辛辛苦苦写出来的代码,遇到各种问题。

虚拟机是个不错的解决方案。然而虚拟机是一个完整的操作系统,需要为它开辟指定的内存和磁盘,这些系统资源并不会因为你的服务没有占用而释放,同时,也因为是一个完整的操作系统,启动必然很慢。

后来 linux 开发出了 LXC(Linux Containers) 技术,所谓的内核容器虚拟化技术。它通过 linux 内核提供的 cgroups 和 namespace 特性,能很好的实现容器虚拟化。

那么 cgroups 和 namespace 又是什么东西呢?这里先不说。

Docker 的早期版本中,LXC 作为底层架构的一个模块,用来创建容器,现在用的则是自己开发的 libcontainer 。无论是 LXC 还是 libcontainer ,都离不开 cgroup 和 namespace。

Docker 的主旨是 BUILD,SHIP,RUN ,即构建镜像,装进仓库,启动镜像。通常对应三个命令:

<code>docker build 
docker push
docker run/<code>

Docker 相比传统的虚机,能用更少的资源、更小的体积

、更方便的操作以及更快的速度启动我们的服务。

Docker 单机版安装(Linux 版)


内核版本及硬件平台(hardware-platform)

<code>➜  ~ uname -ir
4.18.0-147.5.1.el8_1.x86_64 x86_64/<code>

操作系统发行版本

<code>➜  ~ lsb_release -a
LSB Version:   :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:   CentOS Linux release 8.1.1911 (Core)
Release:        8.1.1911
Codename:       Core/<code>

Docker 提供社区版和 pro 版本,分别叫做 CE(Community Edition) 和 EE(Enterprise Edition),我们肯定选 CE,毕竟 EE 可是要收费的。

0. 卸载 Docker

如果之前没有安装过 Docker ,这一步可直接忽略。我会先卸载,再重新安装一次。

ps:如果只有 yum ,需要将下述命令的 dnf 改成 yum

<code># 官方给的删除方案
sudo dnf remove docker \\
                docker-client \\
                docker-client-latest \\
                docker-common \\
                docker-latest \\

                docker-latest-logrotate \\
                docker-logrotate \\
                docker-ce/<code>

这个时候,我们需要再看下还有没有未删除的:

<code>➜  ~ sudo dnf list installed  | grep docker
Repository epel is listed more than once in the configuration
docker-ce-cli.x86_64                        1:19.03.8-3.el7                                 @docker-ce-stable/<code>

可以看到,还有 cli (当然你可以不删除),这里我把它也删掉:

<code>sudo dnf -y remove docker-ce-cli/<code>

如果你想删除的十分彻底,你甚至可以这样做(请务必保证你知道你在干什么

<code># 这会把你之前下载的镜像、容器、网络、卷等等,一起干掉,请务必小心!!!
sudo rm -rf /var/lib/docker
# 有关 docker 的一些配置,如 registry mirror, 登录信息等
sudo rm -fr /etc/docker
sudo rm -fr ~/.docker/<code>

到这里, 你机器上有关 docker 的东西就都删除完毕了。

1. 设置 docker 源(非必须)

我们为什么要设置源,因为这能让我们安装的更加快速。

<code># yum 用户请安装 yum-utils , 可以提供 yum-config-manager 

sudo yum install -y yum-utils/<code>

这里我们使用 阿里云 docker-ce.repo

<code>sudo dnf config-manager \\
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum 用户这样操作:
sudo yum-config-manager \\
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo dnf makecache && sudo yum makecache

# 查看安装的源
dnf repolist
# 或者
yum repolist/<code>


2. 安装 Docker

Docker 官方提供了三种安装方式:

  • 通过 docker repo 安装(推荐)
  • 下载 RPM package 安装
  • 通过脚本安装

这里我们使用第一种安装方式,后两种请参考 这里


查看 Dokcer 版本

<code>➜  ~ dnf list docker-ce --showduplicates | sort -r | head -n 3
docker-ce.x86_64            3:19.03.8-3.el7                     docker-ce-stable

docker-ce.x86_64            3:19.03.7-3.el7                     docker-ce-stable

➜ ~ dnf list docker-ce-cli --showduplicates | sort -r | head -n 3
docker-ce-cli.x86_64              1:19.03.8-3.el7               docker-ce-stable
docker-ce-cli.x86_64              1:19.03.7-3.el7               docker-ce-stable/<code>

安装 Docker 的指定版本

我们先按照官网给的步骤走一遍:

<code># 这里注意下 docker ce 和 cli 的版本,去冒号 : 和中划线 - 之间的部分, 我这里选的 19.03.8
sudo dnf -y install docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
...
Installed:
docker-ce-3:19.03.8-3.el7.x86_64 docker-ce-cli-1:19.03.8-3.el7.x86_64   libcgroup-0.41-19.el8.x86_64/<code>

使用了阿里云的 repo 后,安装一下子快乐起来,很开心。

可以看到,我们安装了

  • docker-ce-3:19.03.8-3.el7.x86_64
  • docker-ce-cli-1:19.03.8-3.el7.x86_64
  • libcgroup-0.41-19.el8.x86_64

3. Docker 开机自启动

这个时候,如果我们运行 docker version ,会提示 docker daemon 无法连接。因为 Docker 是 CS 架构,docker daemon 此时还未启动。

<code># 启动 docker daemon
sudo systemctl start docker
sudo systemctl status docker # 此时可以看到 docker 处于 active(running) 状态

# 设置开机自启动
sudo systemctl enable docker/<code>

Docker 验证

<code>sudo docker run hello-world/<code>

输出了一大堆东西,可是我们还是看到了 Hello from Docker! 字样,说明我们 Docker 已经可以正常工作了。

docker run 这个命令,事实上做了两个动作

  • docker pull : 发现没有 hello-world 镜像时,先 pull 镜像,然后再 run
  • docker run : 运行 hello-world 镜像



4. 非 root 账号使用 Docker

docker 会创建 docker group,我们可以把自己加入到该用户组,以避免通过 root 来使用 docker

<code># 当前所在组
groups
dylan wheel nginx

# 查看 docker 用户组是否已存在
sudo cat /etc/group | grep docker

# 把当前用户加入 docker 组
sudo usermod -aG docker $USER

# 更新用户组

newgrp docker

# 再次查看,已经计入了 docker 用户组
groups
docker wheel nginx dylan/<code>

通过 docker version 查看,版本为 19.03.8 ,完美。

<code>➜  ~ docker version
Client: Docker Engine - Community
Version:           19.03.8

Server: Docker Engine - Community
Engine:
Version:          19.03.8/<code>

至此,Docker 安装就结束了。


5. 镜像加速

如果你使用阿里云,可以在 这里 找到你的镜像加速专属地址:

Docker 安装基础教程

其他镜像加速地址:

  • 七牛云: https://reg-mirror.qiniu.com
  • 中科大: https://docker.mirrors.ustc.edu.cn
  • 网易云: https://hub-mirror.c.163.com
  • 腾讯云: https://mirror.ccs.tencentyun.com


Links

阿里云开源镜像站 : 这个可以说很良心了,基本上涵盖了国外的很多软件,更新也很及时,deserve it。



分享到:


相關文章: