Docker CE是Docker Community Edition的简写,也就是Docker社区版,适合希望开始使用Docker并尝试使用基于容器的应用程序的开发人员和小型团队。
要在CentOS上开始使用Docker CE,请确保满足一些先决条件,然后才能安装。
1. 先决条件
-
操作系统要求
要求是CentOS7的维护版本,系统的内核版本高于 3.10 ,可以通过 uname -r
命令查看你当前的内核版本。
必须启用centos-extras
存储库。默认情况下,此存储库已启用,但如果已将其禁用,则需要重新启用它。
存储驱动推荐overlay2
-
卸载旧版本
较旧版本的Docker被称为docker
或docker-engine
。如果已安装这些,请卸载它们以及相关的依赖项。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
如果yum
报告没有安装这些软件包,那就可以了。
保留/var/lib/docker/
的内容,包括images映像,containers容器,volumes卷以及networks网络。
Docker CE包现在称为docker-ce。
2. 安装Docker CE
安装Docker CE有几种不同的方式,取决于你的需要。
- 大多数用户通过设置Docker仓库并从中进行安装,以便于安装和升级,这是推荐的方法。
- 有些用户下载RPM软件包并手动安装并完全手动管理升级,主要用于在无法连接互联网的系统环境中安装Docker。
- 在测试和开发环境中,一些用户选择使用自动便捷脚本来安装Docker。
2.1 使用repository仓库安装
在新主机上首次安装Docker CE之前,需要设置Docker repository。然后,就可以从repository安装和更新Docker。
2.1.1 设置repository
- 安装所需的包
yum-utils
提供yum-config-manager实用程序,device-mapper-persistent-data
和lvm2
是devicemapper存储驱动程序所需。
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置stable repository
$ sudo yum-config-manager \
--add-repo https://download.docker.com/linux/centos/docker-ce.repo
科学上网情况下有可能会报错,可以用aliyun的源来替代
$ sudo yum-config-manager \
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.1.2 安装Docker CE
- 安装最新版本的Docker CE,或转到下一步安装特定版本。
$ sudo yum install docker-ce
Docker已安装但尚未启动,且已创建docker组,但未向该组添加任何用户。
- 安装特定版本的Docker CE
①列出repo中可用的版本并排序,比如按版本号从高到低
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
②安装特定版本,通过包名称(即docker-ce)加上版本字符串(第2列,直到第一个连字符),用连字符( - )分隔,例如,docker-ce-18.03.0.ce。
$ sudo yum install docker-ce-<VERSION STRING>
- 启动Docker,以及加入开机启动(可选)
$ sudo systemctl start docker
$ sudo systemctl enable docker
- 通过运行hello-world映像验证是否正确安装了docker
$ sudo docker run hello-world
此命令会下载测试映像并在容器中运行它,运行时会打印一条消息并退出。
2.1.3 升级Docker CE
要升级Docker CE,请选择要安装的新版本,按上述安装说明安装。
2.2 使用离线包安装
如果您无法使用Docker Repository来安装Docker,则可以下载适用于您的发行版的.rpm文件并手动安装。每次要升级Docker时都需要下载新文件。
- 在 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 下载要安装的Docker版本的.rpm文件。
- 安装Docker CE,将下面的路径更改为您下载Docker软件包的路径。
$ sudo yum install /path/to/package.rpm
启动和验证Docker与2.1一致
- 要升级Docker CE,请下载较新的软件包文件并重复安装过程,但使用
yum -y upgrade
命令而不是yum -y install
,并指向新文件。
3. 卸载Docker CE
使用如下指令卸载docker包
$ sudo yum remove docker-ce
但需注意,主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷,可以执行指令
$ sudo rm -rf /var/lib/docker
4. 常见问题
4.1 非root用户权限问题
[xxxxxx@localhost docker_test]$ docker pull alpine
Using default tag: latest
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/create?fromImage=alpine&tag=latest: dial unix /var/run/docker.sock: connect: permission denied
可以看到非root用户执行docker命令时,会报permission denied错误,docker手册上可以找到原因以及解决方法,原文如下:
Manage Docker as a non-root user
The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.
If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.
意思就是docker daemon使用的是Unix Socket,需要root权限才能访问。有两种解决办法:要么用sudo命令,要么将当前用户添加至docker用户组。
添加docker用户组的操作命令:
$ sudo groupadd docker #添加docker用户组
$ sudo gpasswd -a $USER docker #将当期用户加入docker用户组
$ newgrp docker #更新docker用户组
$ docker ps #测试docker命令是否可以使用
网友评论