引子
众所周知国内的网络环境,对于docker的安装和使用有许多困难,在这里,面向在国内使用docker的linux用户写一篇安装指南。
这篇文章适用于systemd的Linux系统(大部分主流发行版)
安装
对于安装docker,官网给出了几个不同的方式,为了后续升级docker以及维护方便,在这里我们选择添加一个更新源的方式。
如果你是Arch用户,你可以跳过这个步骤。
Debian系
如果安装过docker,先把它们移除
sudo apt remove docker docker-engine docker.io
获取公钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - #Debian
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - #Ubuntu
如果你的网络压根无法连接到docker.com,具体体现为curl的报错。你可以使用-x选项来指定代理,例如
curl -x http://127.0.0.1:8888 -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
#Debian
curl -x http://127.0.0.1:8888 -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#Ubuntu
如果你的系统是amd64的,那么使用下面的命令来添加合适的源。以清华源为例,如果你想更改只需要把第二行的url换成你想要用的
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
$(lsb_release -cs) \
stable"
#Debian
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
#Ubuntu
对于树莓派等其它armhf架构的系统以及arm64系统来说:首先确定自己系统的是基于Debian还是Ubuntu,其次将
[arch=amd64]替换为[arch=armhf]或者[arch=arm64]
RHEL系
如果安装过docker,先把它们移除
sudo dnf remove docker docker-common docker-selinux docker-engine
#如果你没有dnf,如CentOS 6,使用yum即可
sudo yum remove docker docker-common docker-selinux docker-engine
下载repo
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
#RHEL/CentOS
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/fedora/docker-ce.repo
#Fedora
如果你的网络压根无法连接到docker.com,具体体现为wget的报错。你可以设置环境变量来临时指定代理,例如
export http_proxy=http://127.0.0.1:8888
export https_proxy=http://127.0.0.1:8888
将官方源替换为国内源
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
安装docker
sudo dnf makecache fast
sudo dnf install docker-ce
通过上述操作,我们把docker安装到了本地,并且更换了国内的源,这样我们可以使用国内源来升级、维护docker。
使用
安装后docker镜像的拉取也是一个问题。由于直连dockerhub非常慢且不稳定,对于国内用户有两种解决方法
国内镜像
由于国内镜像越来越难用(原因主要是dockerhub的拉取限制),这个方法针对没有代理的用户,目前可用的也就只有阿里云提供的镜像了。
即使使用镜像也时常出现错误,因为这只是缓存,而非完整镜像。
打开阿里云首页,找到容器镜像服务然后点击镜像加速器就可以看到当前账号对应的地址。
修改 /etc/docker/daemon.json 为
{
"registry-mirrors": ["https://你的镜像地址"]
}
注意,如果有其它配置,应该按照json语法编辑。
代理
sudo mkdir -p /etc/systemd/system/docker.service.d
在上面这个目录下创建http-proxy.conf,并将其修改为
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
接下来,尽情使用吧!