本文主要记录docker使用过程中一些笔记。

安装

可以访问外网的话,参考 官网 对应系统安装的说明操作即可。

CentOS离线安装

安装依赖包:

1
yum install -y libcgroup container-selinux

这里 下载docker-ce, docker-ce-cli, containerd.io 的rpm,然后通过rpm安装:

1
2
3
yum remove -y runc

rpm -ivh containerd.io-*.rpm docker-ce-*.rpm

启动docker服务:

1
2
3
systemctl start docker
systemctl enable docker
systemctl status docker

非root用户使用

默认情况下,非root用户需要sudo才能执行docker相关命令。
加入docker组之后,可以不带sudo执行。

1
2
groupadd docker
usermod -aG docker 你的用户名

需要重新登录或者重启电脑才生效。

代理

如果机器设置了代理,那么docker也需要同步代理的设置。

1
2
mkdir /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-proxy.conf

编辑 http-proxy.conf 文件,添加内容如下:

1
2
[Service]    
Environment="HTTP_PROXY=http://dev-proxy.oa.com:8080/" "HTTPS_PROXY=http://dev-proxy.oa.com:8080/" "NO_PROXY=127.0.0.1,localhost"

HTTP_PROXYHTTPS_PROXY 的值替换为公司的代理地址, NO_PROXY 添加不需要代理的地址。
确认配置后重启docker服务:

1
2
3
4
systemctl daemon-reload
# 确认配置的Environment
systemctl show --property=Environment docker
systemctl restart docker

私有docker仓库

如果需要拉取私有的docker仓库镜像,一般需要把仓库地址加入到 insecure-registries
/etc/docker/daemon.json 文件(没有则新建)中加入以下内容:

1
2
3
{
  "insecure-registries" : ["mycompany.com:8080"]
}

日常使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 拉取镜像
docker pull centos:7

# 临时使用
docker run -it --privileged --rm centos:7 bash

# 生成镜像
docker build --network=host -t xxx-mod-dev:v1 .
docker run -it --net=host --name xxxModDev -v /home/用户名:/home/用户名 xxx-mod-dev:v1 /bin/bash

# 容器中
cd /home/用户名

# 退出容器
exit

# 再次进入容器
docker start -i xxxModDev

# 上传镜像(先登录)
TAG_VER=`date +%y%m%d%H`
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname

# 清理悬空镜像
# docker image prune
docker rmi -f $(docker images -q -f dangling=true)

# 清理停掉24小时以上的容器(要保留的容器可以start,stop下)
docker container prune --filter "until=24h"

# 清理已停止容器、悬空镜像(比较暴力,建议使用上面两条命令)
# docker system prune

# 普通用户没有sudo权限,以root用户执行命令(安装软件)
docker exec -it -u root --privileged 容器Id或名称 bash

权限管理

方法一是给用户添加sudo权限,方法二是在已启动容器以root身份执行命令。

1
docker exec -it -u root --privileged 容器Id或名称 bash

参考链接