概论
你需要64位的ubuntu操作系统 Cosmic 18.10、Bionic 18.04 (LTS)、Xenial 16.04 (LTS)其中之一。
docker支持的架构为:x86_64 (or amd64), armhf, arm64, s390x (IBM Z), and ppc64le (IBM Power)。
查看ubuntu系统是32位的还是64位的:getconf LONG_BIT
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UhhP0yiG-1612276983851)(…/images/07eda1a9-925e-4843-b8c3-a40027cefcee.png)]
查看系统信息:lsb_release -a
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B1qDb7xr-1612276983853)(…/images/2845eb76-e695-400f-ada1-3501da75c65d.png)]
查看操作系统架构:uname -a
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZZIVli7-1612276983853)(…/images/fa1e8b56-52b9-44b4-9f5e-89c43e9873a8.png)]
卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
/var/lib/docker的内容,包括镜像、容器、卷和网络,可以保留也可以删除。
执行之后,输入docker --version仍能看到docker版本
采用另一种方式:
sudo apt-get purge docker
sudo apt-get purge docker-ce
sudo apt-get remove -y docker-*
sudo rm -rf /var/lib/docker
(慎重:这是镜像和容器的默认存储位置,不要误删)
(apt-get remove 会删除软件包而保留软件的配置文件
apt-get purge 会同时清除软件包和软件的配置文件)
Install using the repository
1)sudo apt-get update
2)允许apt通过https使用repository安装软件包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
3)添加Docker官方GPG key
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
(国内阿里云版 sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
)
4)验证key的指纹
sudo apt-key fingerprint 0EBFCD88
正常输出为:
root@sunyue:/# sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
5)添加稳定版repository
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
国内阿里云版:
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
5)sudo apt-get update
6)安装最新版本的docker ce和containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
(如果您启用了多个Docker存储库,则在apt-get install或apt-get update命令中未指定版本的情况下安装或更新将始终安装尽可能高的版本)
7)安装指定版本的
查看可获取的版本 apt-cache madison docker-ce
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
8)验证:docker --version
sudo docker run hello-world
9)将非root用户加入docker组,以允许免sudo执行docker
sudo gpasswd -a 用户名 docker
重启服务并刷新docker组成员
sudo service docker restart
newgrp - docker
10)设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)
sudo systemctl enable docker
sudo systemctl start docker
11)升级版本
a) sudo apt-get update
b) 按照以上步骤安装新版本
12)安装docker-compose(二进制)
https://www.runoob.com/docker/docker-compose.html
sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
或者
在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
注:可能出现超时现象,换源:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
安装docker-compose(PIP 安装)
注1: x86_64 架构的 Linux 建议按照上边的方法下载二进制包进行安装,如果您计算机的架构是 ARM (例如,树莓派),再使用 pip 安装。
注2:pip未找到命令需要安装python3和python2
sudo apt-get install python3-pip
sudo apt-get install python-pip
如果有pip版本过低则执行
pip3 install --upgrade pip
pip3 install paramiko
这种方式是将 Compose 当作一个 Python 应用来从 pip 源中安装。
执行安装命令:
$ sudo pip install -U docker-compose
(使用pip安装模块时报错: ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts. We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.
解决方法: 在pip命令中加入–use-feature=2020-resolver参数就可以了, 比如pip install xxx --use-feature=2020-resolver)
可以看到类似如下输出,说明安装成功。
Collecting docker-compose
Downloading docker-compose-1.17.1.tar.gz (149kB): 149kB downloaded
…
Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress
安装docker-compose(bash 补全命令)
$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
查看版本docker-compose --version
###容器中执行
Compose 既然是一个 Python 应用,自然也可以直接用容器来执行它。
$ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
实际上,查看下载的 run.sh 脚本内容,如下
set -e
VERSION="1.8.0"
IMAGE="docker/compose:$VERSION"
# Setup options for connecting to docker host
if [ -z "$DOCKER_HOST" ]; then
DOCKER_HOST="/var/run/docker.sock"
fi
if [ -S "$DOCKER_HOST" ]; then
DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
else
DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
fi
# Setup volume mounts for compose config and context
if [ "$(pwd)" != '/' ]; then
VOLUMES="-v $(pwd):$(pwd)"
fi
if [ -n "$COMPOSE_FILE" ]; then
compose_dir=$(dirname $COMPOSE_FILE)
fi
# TODO: also check --file argument
if [ -n "$compose_dir" ]; then
VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
fi
if [ -n "$HOME" ]; then
VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config
fi
# Only allocate tty if we detect one
if [ -t 1 ]; then
DOCKER_RUN_OPTIONS="-t"
fi
if [ -t 0 ]; then
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
fi
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"
可以看到,它其实是下载了 docker/compose 镜像并运行。
###卸载
如果是二进制包方式安装的,删除二进制文件即可。
$ sudo rm /usr/local/bin/docker-compose
如果是通过 pip 安装的,则执行如下命令即可删除。
$sudo pip uninstall docker-compose
补充
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
Docker 官方提供的中国 registry mirror
阿里云加速器
DaoCloud 加速器
我们以 Docker 官方加速器为例进行介绍。
Ubuntu 14.04、Debian 7 Wheezy
对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
重新启动服务。
$ sudo service docker restart
Ubuntu 16.04+、Debian 8+、CentOS 7
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{"registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"]}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
如果出现
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
注意:如果您之前查看旧教程,修改了 docker.service 文件内容,请去掉您添加的内容(–registry-mirror=https://registry.docker-cn.com),这里不再赘述。
Windows 10
对于使用 Windows 10 的系统,在系统右下角托盘 Docker 图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Daemon。在 Registry mirrors 一栏中填写加速器地址 https://registry.docker-cn.com,之后点击 Apply 保存后 Docker 就会重启并应用配置的镜像地址了。
###macOS
对于使用 macOS 的用户,在任务栏点击 Docker for mac 应用图标 -> Perferences… -> Daemon -> Registry mirrors。在列表中填写加速器地址 https://registry.docker-cn.com。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。
###检查加速器是否生效
配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。
{"registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"]}
如果出现错误WARNING: No swap limit support
vi /etc/default/grub
找到下面信息 Set the GRUB_CMDLINE_LINUX value as follows: GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
修改并保持
Update GRUB sudo update-grub
reboot. 重启后就没有该信息了.