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. 镜像加速
如果你使用阿里云,可以在 这里 找到你的镜像加速专属地址:
其他镜像加速地址:
- 七牛云: 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。
閱讀更多 iyuhp 的文章