用下载deb的方式来安装docker

其实,curl -sSL https://get.docker.com/ | sh一直是Debian/Ubuntu下最方便的Docker安装方式。 它的原理,就是通过添加docker的源,用apt来安装,原理详见《Get Docker CE for Ubuntu》。

但在某些环境(某些公司内网)下,这种方式有意想不到的麻烦,甚至行不通。 本文基于Ubuntu的xenial版本,介绍如何通过下载deb来进行安装。

下载deb

可以在https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/页面,找到最新的Docker CE稳定版的deb包,并下载。

download_url='https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64'
docker_version='18.06.0~ce~3-0'
wget --no-check-certificate ${download_url}/docker-ce_${docker_version}~ubuntu_amd64.deb

注意18.06是最后一个可以这么玩的版本。 从18.09开始,Docker官方把安装包拆成了多个deb,要全部下载、逐一安装才能使用。 这里介绍的方法仍然能用,只是过于麻烦。 因此,如果没有特殊功能需求,并且一定要这样安装,建议使用Docker的18.06版本。

安装deb

sudo dpkg -i docker-ce*.deb
sudo apt-get -f install

一般只有一个libltdl7的依赖。

安装完成后,可以查看docker版本。

$ docker version
Client:
 Version:           18.06.0-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        0ffa825
 Built:             Wed Jul 18 19:11:02 2018
 OS/Arch:           linux/amd64
 Experimental:      false

安装docker-compose

sudo -H pip install docker-compose

顺手装一下,早晚会用上。

配置用户组

把需要使用docker命令的用户,添加到docker用户组中。

sudo groupadd docker
sudo usermod -aG docker $USER

重新登录用户$USER,此配置才生效。

配置docker随机启动

sudo systemctl enable docker

配置镜像

修改/etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ],
    "insecure-registry": [
        "registry.docker-cn.com"
    ]
}

重启dockerd生效。

配置网络代理

Docker需要配置的网络代理分两种,一是container访问网络时的代理,二是dockerd运行时的代理,包括docker pull等操作。

配置container的代理,创建~/.docker/config.json

{
    "proxies":
    {
        "default":
        {
            "httpProxy": "http://YOUR_PROXY:PORT",
            "noProxy": "localhost,127.0.0.1,::1,10.*"
        }
    }
}

配置dockerd的代理,创建/etc/systemd/system/docker.service.d/proxy.conf

[Service]
Environment="HTTP_PROXY=http://YOUR_PROXY:PORT"
Environment="HTTPS_PROXY=http://YOUR_PROXY:PORT"
Environment="NO_PROXY=localhost,127.0.0.1,::1,10.*"

重载systemd配置、重启dockerd后,配置生效。

sudo systemctl daemon-reload
sudo systemctl restart docker.service

参考


相关笔记