安装Docker
Docker官方文档:https://docs.docker.com/
在Ubuntu上安装Docker引擎
前提条件
系统条件
安装Docker
需要以下64
位Ubuntu
系统:
Ubuntu Focal 20.04 (LTS)
Ubuntu Bionic 18.04 (LTS)
Ubuntu Xenial 16.04 (LTS)
Docker
支持x86_64
(或者amd64
), armhf
, 以及arm64
架构.
卸载老版本
老版本的Docker
名为docker
, docker.io
, 或者 docker-engine
. 如果安装了这些,就卸载他们:
1 | sudo apt-get remove docker docker-engine docker.io containerd runc |
如果apt-get
提示没有安装这些那就没问题了。
/var/lib/docker/
目录包含隐藏的镜像、容器、卷、网络,Docker
包的名称现在是docker-ce
。
支持的存储引擎
Docker
在Ubuntu
上支持overlay2
, aufs
和btrfs
存储引擎。
Docker
默认使用overlay2
存储引擎。如果你需要使用aufs
,需要手动配置:use the AUFS storage driver
安装方法
根据需要,可以通过不同方式安装Docker
:
- 大多数用户为了便于安装和升级而建立Docker仓库 ,然后安装他们,这是推荐的方式。
- 一些用户下载
.DEB
包然后手动安装 ,并且完全的手动升级。这在安装Docker
到没有网络的系统的情形下很有用。 - 为了测试和开发环境,一些用户选择使用自动化便利脚本 来安装Docker。
使用仓库安装
第一次安装到一个新的机器上之前,你需要设置Docker
仓库, 然后,你可以从仓库安装、升级Docker。
设置仓库
升级
apt
包索引,然后安装包来允许apt
使用基于HTTPS
的仓库:1
2
3
4
5
6
7
8sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common添加
Docker
的官方GPG
密钥:1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
通过搜索后八位字符来验证你现在安装了指纹为
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
的密钥。1
2
3
4
5
6sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]使用以下命令来设置稳定版本的仓库, 需要安装每日构建或者测试仓库,在下面的命令中,在
stable
之后添加nightly
或者test
(或者两者都添加)。 了解关于nightly 和test 渠道。Note: 下方的
lsb_release -cs
子命令返回你的Ubuntu发行版的名字,例如xenial
。有时候在一些发行版,例如Linux Mint
,也许需要修改$(lsb_release -cs)
为其父Ubuntu发行版本,例如,对于Linux Mint Tessa
,需要使用bionic
。Docker
不提供任何保证在未经测试和未经支持的Ubuntu发行版上。x86_64 / amd64
1
2
3
4sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"armhf
1
2
3
4sudo add-apt-repository \
"deb [arch=armhf] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"arm64
1
2
3
4sudo add-apt-repository \
"deb [arch=arm64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
安装Docker引擎
升级
apt
包索引然后安装最版本的的Docker
引擎和容器化,或者进入下一步安装特定版本:1
2sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io发现多个
Docker
仓库?如果你有多个
Docker
仓库被启用,不指定特定版本,通过apt-get install
或者apt-get update
命令安装或者升级将始终安装最高可用版本,可能不符合稳定要求。为了安装特定版本的
Docker
,列举仓库中的可用版本然后选择安装:a. 列举仓库中可用的版本
1
2
3
4
5
6
7apt-cache madison docker-ce
docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
...b. 通过使用第二列的版本字符串安装特定版本,例如
5:18.09.1~3-0~ubuntu-xenial
。1
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
通过运行
hello-world
镜像来确认Docker
已经正确安装。1
sudo docker run hello-world
这个命令下载一个测试镜像并且在一个容器中运行它。当容器运行,它将打印一个提示信息并且退出。
Docker
已经安装并且运行。docker
组被运行,但是没有用户被添加进去。你需要使用 sudo
去运行Docker
命令。 继续去 Linux postinstall 允许无权限的用户去运行Docker
命令以及其他可选的配置步骤。
升级Docker
要升级Docker
,首先运行sudo apt-get update
,然后按照安装指引, 选择要安装的新版本安装。
通过使用便利脚本安装
Docker在get.docker.com和test.docker.com上提供了方便的脚本,用于将Docker Engine - Community的edge和测试版本快速、非交互式地安装到开发环境中。这些脚本的源代码在docker-install仓库中。不建议在生产环境中使用这些脚本,您应该在使用它们之前了解潜在的风险:
- 这些脚本需要
root
或sudo
权限才能运行。因此,在运行这些脚本之前,你应该仔细检查和审计它们。 - 脚本试图检测你的Linux发行版和版本,并为你配置你的软件包管理系统。此外,这些脚本不允许您自定义任何安装参数。这可能会导致不支持的配置,无论是从Docker的角度还是从你自己组织的准则和标准来看。
- 脚本会安装所有的依赖项和软件包管理器的建议,而不会要求确认。这可能会安装大量的软件包,这取决于你的主机的当前配置。
- 脚本没有提供指定安装哪个版本的Docker的选项,安装的是 “edge “频道发布的最新版本。
- 如果已经使用其他机制在主机上安装了Docker,请不要使用方便脚本。
这个例子使用get.docker.com的脚本来安装Linux上最新版本的Docker Engine - Community。要安装最新的测试版本,请使用test.docker.com 来代替。在下面的每一个命令中,用test
替换get
的每一次出现。
警告:
在本地运行之前,一定要检查从互联网下载的脚本。
1 | $ curl -fsSL https://get.docker.com -o get-docker.sh |
如果你想以非root用户的身份使用Docker,你现在应该考虑将你的用户添加到 “docker “组中,比如说。
1 | sudo usermod -aG docker your-user |
记得退出后再登录才会生效!
警告:
将用户添加到 “docker “组中,赋予他们运行容器的能力,这些容器可以用来获取Docker主机上的root权限。更多信息请参考Docker Daemon Attack Surface 。
安装了Docker Engine - Community。它在基于DEB
的发行版上会自动启动。在基于RPM
的发行版上,你需要使用适当的systemctl
或service
命令手动启动它。正如消息所显示的,非root用户默认不能运行Docker命令。
Note:
要在没有root权限的情况下安装Docker,请参见以非root用户身份运行Docker守护进程(Rootless mode)。
Rootless模式目前是作为实验性功能提供的。
使用便利脚本之后更新Docker
如果你通过便利脚本安装Docker,你需要使用你的包管理器直接升级Docker。重新运行便利脚本并没有益处,并且如果他尝试重新添加已经添加到主机上了的仓库可能会导致产生问题。
卸载Docker
卸载Docker Engine, CLI, 以及Containerd 的包:
1
sudo apt-get purge docker-ce docker-ce-cli containerd.io
主机上的镜像、容器、卷,或者自定义配置文件并没有自动删除,要删除全部的images, containers和volumes:
1
sudo rm -rf /var/lib/docker
你必须手动删除任何修改过的配置文件。