Docker 常见安装步骤,包括安装最新版本 Docker 和安装指定版本 Docker
no-userns vs userns vs rootless 区别

-
区别:
No UserNSdockerd 以 root 权限运行,容器中的 root 和宿主机的 root 权限相同With UserNSdockerd 以 root 权限运行,通过--userns-remap标识,将容器 user 映射为 subuid/gid 后的用户,配置daemon.json(更多参考)
{ "userns-remap":"dockertest" }rootlessdockerd 以普通用户权限运行,容器内的 root 映射为 dockerd 启动用用户,其他用户映射为 subuid/gid 后的用户
-
验证
- 启动后,用户可以在容器内的
/proc/self/uid_mapand/proc/self/gid_map查看实际的 uid/gid 映射关系
- 启动后,用户可以在容器内的
安装最新 Docker
官方安装脚本
curl https://get.docker.io/ | shDaocloud 安装脚本
curl -sSL https://get.daocloud.io/docker | shCentOS
安装指定版本的 docker 的 rpm 发布在:https://yum.dockerproject.org/repo/main/centos
# 我们以安装docker 17.03.1为例
DOCKER_VERSION=17.03.1
# 下载 docker-engine
wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-${DOCKER_VERSION}-1.el7.centos.x86_64.rpm
# 下载 docker-engine-selinux
wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-${DOCKER_VERSION}-1.el7.centos.noarch.rpm
yum install -y libtool-ltdl policycoreutils-python
# 先安装 docker-engine-selinux,再安装 docker-engine-selinux
rpm -ivh docker-engine-selinux-${DOCKER_VERSION}-1.el7.centos.noarch.rpm
rpm -ivh docker-engine-${DOCKER_VERSION}-1.el7.centos.x86_64.rpm
# 下面就可以开启docker服务了
systemctl start docker
systemctl enable dockerUbuntu
- 配置源
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"- 安装最新版本
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io- 安装指定版本
sudo apt update
apt list -a docker-ce
sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.iodocker 配置
以下内容均需要修改 /etc/docker/daemon.json 配置文件
配置私有镜像仓库
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"registry.docker-cn.com"
]
}镜像加速
配置日志
{
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}其中 log-opts 用于限制容器日志的大小
配置网段
- 为 docker0 网桥指定网段
{
"bip": "172.17.0.1/16"
}- 生效
systemctl restart docker配置数据目录
# systemctl cat docker 在 StartExec 中指定
dockerd --data-root <path/of/data>配置 Docker 以使用 Nvidia 驱动程序
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker- 启动容器
docker run -d --gpus=all <image> ...docker in docker
- docker dind(docker in docker) 方式:在 docker 容器内启动 docker daemon 服务,创建一个与宿主机隔离的环境
docker run -it -d --rm --privileged docker:dind- 挂载宿主机 socket 方式
docker run -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock ...普通用户执行 Docker 命令
- 正在将用户
xiexianbin加入到docker组中
sudo gpasswd -a xiexianbin docker- 重启
sudo systemctl restart docker- 需改 sock 权限
$ ls -lhart /var/run/docker.sock
srw-rw---- 1 root docker 0 Dec 15 13:31 /var/run/docker.sock
$ sudo chmod a+rw /var/run/docker.sock
$ ls -lhart /var/run/docker.sock
srw-rw-rw- 1 root docker 0 Dec 15 13:31 /var/run/docker.sock- 若不修改权限,会报错
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied最近更新
最新评论