本文主要记录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_PROXY
和 HTTPS_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
|
参考链接