什么是docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
摘至菜鸟教程, https://www.runoob.com/docker/docker-tutorial.html
举个简单的例子,如果项目新下来10台应用服务器(或者需要做服务器迁移),而这时候你是否会选择重复10次的操作,将每台服务器的基础环境都安装一遍;还是会选择一个已打包好的应用容器,直接“开箱即用”呢?Docker做为一个应用容器引擎,开发者可以将应用或者依赖全部打包到一个可移植的容器中,然后发布到任意一台Linux服务器上。
Centos8.0 安装docker
经测试,centos必须再7.0及以上的版本进行安装。这里使用centos8.0。
可以根据以下命令查看centos版本,以及内核版本。
安装过程使用root用户,如果是非root用户,都需要使用sudo。
[root@iZuf68t6hada0ayijajs45Z ~]# lsb_release -a //查看CentOS版本
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 8.2.2004 (Core)
Release: 8.2.2004
Codename: Core
[root@iZuf68t6hada0ayijajs45Z ~]# uname -r //系统内核版本,要求系统为64位
4.18.0-193.el8.x86_64
1、查看是否已安装docker
[root@iZuf68t6hada0ayijajs45Z ~]# yum list installed | grep docker
如果已安装,将其卸载
[root@iZuf68t6hada0ayijajs45Z ~]# yum remove docker docker-common docker-selinux docker-engine
2、安装依赖包
[root@iZuf68t6hada0ayijajs45Z ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
yum-utils 提供了yum-config-manager,而 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
3、设置yum源
官方地址:
[root@iZuf68t6hada0ayijajs45Z ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
阿里:
[root@iZuf68t6hada0ayijajs45Z ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清华大学:
[root@iZuf68t6hada0ayijajs45Z ~]# yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
4、查看仓库中所有docker-ce版本,选择合适的版本安装。
[root@iZuf68t6hada0ayijajs45Z ~]# yum list docker-ce --showduplicates | sort -r
docker在17.03之后的版本分为CE(社区版)和EE(企业版),我们使用CE版本。
5、安装docker
[root@iZuf68t6hada0ayijajs45Z ~]# yum install docker-ce-17.12.1.ce
这里我选择了17.12.1-ce的版本安装,过程中提示了一个错误:
Last metadata expiration check: 0:01:05 ago on Wed 22 Jul 2020 04:10:27 PM CST.
Error:
Problem: package docker-ce-3:19.03.12-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
- cannot install the best candidate for the job
- package containerd.io-1.2.10-3.2.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.13-3.1.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.13-3.2.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.2-3.3.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.2-3.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.4-3.1.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.5-3.1.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.6-3.3.el7.x86_64 is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
这是由于未安装containerd.io依赖,或者是containerd.io版本过低。
安装,有点慢:
[root@iZuf68t6hada0ayijajs45Z ~]# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.2-3.3.el7.x86_64.rpm
在重新安装docker,成功。
[root@iZuf68t6hada0ayijajs45Z ~]# yum install docker-ce-17.12.1.ce
再确认是否已经正确安装,版本17.12.1.ce-1.e17.centos已安装
[root@iZuf68t6hada0ayijajs45Z ~]# yum list installed | grep docker
docker-ce.x86_64 17.12.1.ce-1.el7.centos @docker-ce-stable
6、启动docker,配置开机自启
[root@iZuf68t6hada0ayijajs45Z ~]# systemctl start docker
[root@iZuf68t6hada0ayijajs45Z ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
7、验证
[root@iZuf68t6hada0ayijajs45Z ~]# docker version
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:15:20 2018
OS/Arch: linux/amd64
Server:
Engine:
Version: 17.12.1-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:17:54 2018
OS/Arch: linux/amd64
Experimental: false
[root@iZuf68t6hada0ayijajs45Z ~]#
8、修改docker默认存储位置
[root@iZuf68t6hada0ayijajs45Z ~]# vim /usr/lib/systemd/system/docker.service
加上自己的路径。
保存,重启。
[root@iZuf68t6hada0ayijajs45Z ~]# systemctl daemon-reload
[root@iZuf68t6hada0ayijajs45Z ~]# systemctl restart docker
在查看目录:
[root@iZuf68t6hada0ayijajs45Z ~]# docker info
已修改。
至此,docker的安装就已完成。