Debian docker 安装及 Debian in docker

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 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

删除安装包:

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"