docker 的 sudo权限
如果还没有 docker group 就添加一个:
sudo groupadd docker
将用户加入该 group 内。然后退出并重新登录就生效啦。
sudo gpasswd -a ${USER} docker
重启 docker 服务
sudo service docker restart
切换当前会话到新 group 或者重启 X 会话
newgrp - docker
注意:最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,所以 docker images 执行时同样有错。
Docker 服务
/usr/lib/systemd/system/docker.service
/lib/systemd/system/docker.service
/etc/systemd/system/docker.service.d
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data1/docker-data
Docker配置
Storage Driver: overlay2
Docker Root Dir: /home/var/lib/docker
Registry: https://index.docker.io/v1/
Registry Mirrors: http://docker.test.com/
Insecure Registries:127.0.0.0/8
说明
OverlayFS是内核提供的文件系统,overlay和overlay2是docker的存储驱动
storage-driver
,包括vfs、devicemapper、overlay、overlay2、aufs等等,其中最常用的就是aufs
/var/lib/docker/aufs/layers 存放着镜像ID以及层级关系
/var/lib/docker/aufs/diff 镜像层文件存储在
/var/lib/docker/graph 存放镜像 ID 以及json 文件
/var/lib/docker
builder
buildkit
containers
image
network
overlay2
plugins
runtimes
swarm
tmp
trust
volumes
sudo ls -alh overlay2/eca306ba512dcf
committed
diff
link
lower
work
/var/lib/docker 空间不足的迁移方案
0 .找个空间够的挂载点,把这目录的内容迁移过去 df
01. 停止docker服务
02. rsync -avz /var/lib/docker /opt/var/lib/
03. 配置 /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --graph=/opt/var/lib/docke
04.重新加载和重启
systemctl daemon-reload
systemctl restart docker
05.确认
docker info
Docker Root Dir
说明: rsync 全名Remote Sync
-a 选项表示,存档标志将保留从复制位置到目标位置的所有信息。比如用户权限,属主,属组,还有 metadata 元数据
-r, --recursive 对子目录以递归模式处理 -v, --verbose 详细模式输出
cp scp mv
docker配置文件
docker proxy 相关参数的使用说明,可以参阅 man dockerd 帮助信息
daemon.json 文件对 Docker Engine 进行配置和调整
vim /etc/docker/daemon.json
{
"insecure-registries": ["docker.test.com"],
"registry-mirrors": ["docker.test.com"]
}
然后执行下面命令
systemctl daemon-reload
systemctl restart docker
执行 docker info 可见下面信息: Registry Mirrors: http://docker.test.com/
如果无法解析或地址不对,请添加本地 host:11.11.11.11 docker.test.com
“registry-mirrors”: [“https://192.498.89.232:89”], ————————设置镜像加速
“insecure-registries”: [“120.123.122.123:12312”], ———————设置私有仓库地址可以设为http
登录私有仓库
01. docker login --uername $username --password $password
命令完成以后,会生成如下文件~/.docker/config.json
environment = ["DOCKER_AUTH_CONFIG={\"auths\": {\"harbor.test.com\": { \"auth\": \"XXXXX\"}}}"]
Docker排查过程
1.查看容器状态
sudo docker ps -a
# 调用容器内的 checkpoint.sh,并传入服务名称,检查该 Java 进程是否存在。
# 两次健康检查的间隔 30s,超时时间为 5s,如果超过这个时间,本次健康检查就被视为失败,
# retries 重试次数设置为 3,当连续失败指定次数后,则将容器状态视为 unhealthy
status-- Up About an hour (unhealthy)
2.查看日志
docker logs docker-swarm_dolphinscheduler-api_1
docker logs -f docker-swarm_dolphinscheduler-api_1 # 跟随日志输出
docker logs --tail 10 docker-swarm_dolphinscheduler-api_1 # 显示倒数10行日志
3.进入容器查看
Docker pull 的状态
等待、拉取开始、下载成功、检验、拉取成功:
Waiting
Downloading
Pulling fs layer
Download complete
Verifying Checksum
Pull complete
Aready exists
Retrying in 1 second
Download complete表示下载图层,
而Pull complete表示图层已下载并提取到主机上
Pull complete则是经过解压缩、校验之后导入到系统里去
批量删除docker容器
docker中批量删除 tag为none的镜像或名字是none
docker images|grep none|awk '{print $3}'|xargs docker rmi
查看docker 整体
docker info
docker system info == docker info
docker system df # 查看docker 空间使用情况
docker stats
###docker清理(清理停止的容器,没用容器使用的网络,镜像,缓存)
docker也有自带的清除命令,推荐将docker system prune -f --volumes
docker image prune
docker container prune
docker volume prune
docker network prune
docker system prune 命令是修剪镜像、容器和网络的快捷方式。
查看单个docker
--image
docker history
-- contain
docker inspect
docker diff
docker logs
docker top
-- docker images
-- docker ps -a
-- docker run == docker + docker start
删除
--- 删除所有未打 dangling 标签的镜像
docker container prune --filter "until=24h" -f
docker rmi $(docker images -q -f dangling=true) ==等价于 docker image prune -f