Aliens

Docker常用操作

May 9, 2021

docker 安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# sudoers
curl -sSL get.docker.com | DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce sudo -E bash
wget -qO- get.docker.com | DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce sudo -E bash
# root
curl -sSL get.docker.com | DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce bash
wget -qO- get.docker.com | DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce bash
## Deprecated
#curl -sSL get.docker.com | sudo bash -s -- --mirror Aliyun
# 或者使用 wget
#wget -qO- get.docker.com | sudo bash -s -- --mirror Aliyun

docker-compose安装

通过apt安装的docker-compose版本太老,所以还是使用官网的方式安装。

  1. 下载

    1
    
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
  2. 添加可执行权限

    1
    
    sudo chmod +x /usr/local/bin/docker-compose
    
  3. 添加bash-completion(可选)

    1
    2
    3
    
    sudo curl \
        -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
        -o /usr/share/bash-completion/completions/docker-compose
    

    https://docs.docker.com/compose/install/#install-compose-on-linux-systems

    https://docs.docker.com/compose/completion/#install-command-completion

使用 namespace remap

配置

首先需要修改 /etc/subuid/etc/subgid

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
$ sudo vi /etc/subuid
------------
# 修改前
user0:100000:65536
------------
# 修改后
# 1000 代表 user0 的 uid
user0:1000:1
user0:100000:65536
------------
=================
$ sudo vi /etc/subgid
------------
# 修改前
user0:100000:65536
------------
# 修改后
# 1000 代表 user0 的 gid
user0:1000:1
user0:100000:65536
------------

然后需要修改 docker 的 daemon.json

1
2
3
4
5
6
$ sudo vi /etc/docker/daemon.json
-----------------------------
{
    "userns-remap": "user0:user0"
}
------------------------------

最后,重启 docker 服务

1
sudo service docker restart

docker 重启后,便可以在 /var/lib/docker 中看到名为 1000.1000 的目录。

临时禁用

如果某个 container 需要使用 privileged ,那么可以再加上 --userns=HOST, 单独对这个 container 禁用 namespace remap。

https://echorand.me/posts/docker-user-namespacing-remap-system-user/ https://github.com/moby/moby/issues/17409 https://github.com/moby/moby/pull/20111