Debian Docker 安装
Docker 支持以下的 Debian 版本:
- Buster 10
- Stretch 9 (stable) / Raspbian Stretch
Docker Engine-Community 在 x86_64(或 amd64 )armhf,和 arm64 体系结构上受支持。
使用官方安装脚本自动安装
安装命令如下:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
手动安装
卸载旧版本
Docker 的旧版本被称为 docker,docker.io 或 docker-engine,如果已安装,请卸载它们:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
安装 Docker Engine-Community
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
Raspbian 用户不能使用此方法!
对于 Raspbian,尚不支持使用仓库进行安装。您必须改为使用 shell 脚本方式。
设置仓库
更新 apt 包索引。
$ sudo apt-get update
安装 apt 依赖包,用于通过 HTTPS 来获取仓库。
$ **sudo** **apt-get install** \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
添加 Docker 的官方 GPG 密钥:
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
$ **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
使用以下指令设置稳定版仓库:
$ **sudo** add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian **\
** $(lsb_release -cs) **\
** stable"
安装 Docker Engine-Community
更新 apt 包索引:
$ sudo apt-get update
安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
建立 docker 用户组:
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
建立 docker 组:
$ sudo groupadd docker
将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER
要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本:
$ **apt-cache** madison docker-ce
docker-ce **|** 5:18.09.1~3-0~debian-stretch **|** https:**//**mirrors.ustc.edu.cn**/**docker-ce**/**linux**/**debian stretch**/**stable amd64 Packages
docker-ce **|** 5:18.09.0~3-0~debian-stretch **|** https:**//**mirrors.ustc.edu.cn**/**docker-ce**/**linux**/**debian stretch**/**stable amd64 Packages
docker-ce **|** 18.06.1~ce~3-0~debian **|** https:**//**mirrors.ustc.edu.cn**/**docker-ce**/**linux**/**debian stretch**/**stable amd64 Packages
docker-ce **|** 18.06.0~ce~3-0~debian **|** https:**//**mirrors.ustc.edu.cn**/**docker-ce**/**linux**/**debian stretch**/**stable amd64 Packages
...
使用第二列中的版本字符串安装特定版本,例如 5:18.09.1~3-0~debian-stretch 。
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:
$ **sudo** docker run hello-world
Unable to **find** image 'hello-world:latest' locally
latest: Pulling from library**/**hello-world
1b930d010525: Pull **complete** Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image **for** hello-world:latest
Hello from Docker**!**
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
\1. The Docker client contacted the Docker daemon.
\2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
**(**amd64**)**
\3. The Docker daemon created a new container from that image **which** runs the
executable that produces the output you are currently reading.
\4. The Docker daemon streamed that output to the Docker client, **which** sent it
to your terminal.
To try something **more** ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu **bash**
Share images, automate workflows, and **more** with a **free** Docker ID:
https:**//**hub.docker.com**/**
For **more** examples and ideas, visit:
https:**//**docs.docker.com**/**get-started**/**
卸载 docker
删除安装包:
sudo apt-get purge docker-ce
删除镜像、容器、配置文件等内容:
sudo rm -rf /var/lib/docker
拉取最新版的 debian 镜像
$ docker pull debian
或者:
$ docker pull debian:latest
后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
$ docker run -itd --name debian debian
启动容器的时候加上“--add-host”把hosts配置上
docker run --add-host=dkdebian:10.180.8.1 -name debian debian
进入容器
docker exec -it debian /bin/bash
改主机名
启动docker容器后,进入容器时发现对应的主机名是一段编码(默认就是container ID前缀),在容器维护时记不住是哪个机器,容易搞错,所以干脆直接改掉,见名知义。
不能直接在容器内修改/etc/hostname文件,因为容器stop/restart后会重置,导致配置丢失,并且容器中服务器也没法reboot无法立即生效,所以需要从根本上解决问题。
具体操作有如下几种:
在docker run的时候,指定hostname
参数即可,这个参数会直接将对应主机名写入机器的/etc/hostname文件中:
docker run -itd --network $netname --hostname $host --name $name yourimage
也可以增加hostname:使用add-host=$hostname:$ip
参数即可,这个参数会在容器内的/etc/hostname
文件中追加一行映射:
docker run -itd --network $netname --add-host=$host:$ip --name $name yourimage
如果是通过docker-compose方式,则需要通过extra_hosts
参数:
# docker-compose.yml
extra_hosts:
- "host1:172.18.0.3"
- "host2:172.18.0.4"