
1.指定docker数据存储路径
1.1 环境:
- centos 7.9
- Docker version 20.10.10, build b485636
1.2 设置docker工作目录:
- 查看docker配置文件root目录
[root@localhost ~]# cat /usr/lib/systemd/system/docker.service |grep "ExecStart" ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
- 停止正在运行的docker镜像以及docker服务
- 查看docker实际的数据存储目录,移动源(旧)数据到新的docker root目录:
1 2 3
docker info |grep "Docker Root Dir" systemctl stop docker.socket mv /var/lib/docker /data
- docker指定data存储位置 配置注意事项
- 1:以下内容中 –insecure-registry=192.168.0.15 此处改为你自己服务器ip。 或者不填写也可以;
- 2:以下内容中 -graph /data/docker 是指定docker root路径
- 3:Docker version 23.0.0, build e92dd87 docker 23.0.0版本指定docker root路径 –data-root /data/docker
20.10.10 配置root路径 –graph:
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --graph /data/docker -H fd:// --containerd=/run/containerd/containerd.sock
23.0.0 以及以后的版本配置root路径 -data-root:
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --data-root /data/docker -H fd:// --containerd=/run/containerd/containerd.sock
- 重启docker 生效
systemctl daemon-reload
systemctl restart docker
2. 常用命令
2.1 编译docker镜像操作
去缓存构建镜像:
docker build -t test:1.1 --no-cache .
2.2 进入容器
docker exec -it 63021ad8716d /bin/bash
2.3 查看使用状态
docker stats
2.4 查看Docker正在运行的容器是通过什么命名启动的
docker ps -a --no-trunc
docker history minio/minio:latest --format "table {{.ID}}{{.CreatedBy}}" --no-trunc
2.5 查看docker 占用的空间
docker system df
docker system df -v
2.6 清理docker磁盘空间
docker system prune -a
sudo apt-get clean
2.7 批量删除镜像
-
2.7.1 批量删除无tag标签镜像
docker images|grep none|awk '{print $3}'|xargs docker rmi
-
2.7.2 批量删除已经退出的容器:
docker ps -a |grep Exited|awk '{print $1}'|xargs docker rm
-
2.7.3 强制删除所有的镜像
docker rmi -f $(docker images -qa)
2.8 查看日志
- 2.8.1 查看指定时间日志:
docker logs -t --since="2022-11-16" d1826d2bb544
docker logs minio --since="2022-11-16" 2>&1 --until "2022-11-16T18:30"
docker logs minio --since="2022-11-16" 2>&1 --until "2022-11-16T18:30" |grep "error"
docker logs minio --since="2022-11-16" 2>&1 --until "2022-11-16T18:30" |grep "error" -C 10
- 2.8.2 查看最后10条日志
docker logs -f --tail 10 f7255fec27e5
docker logs -f --tail 10 f7255fec27e5 2>&1 |grep "error"
docker logs -f --tail 10 f7255fec27e5 2>&1 |grep "error" -C 10
2.9 对已经启动的容器设置开机自启动:
docker update –restart=always 你的镜像名称
2.10 docker 镜像内复制文件到宿主机上
docker cp iotsquare:/etc/iotsquare/iotsquare.toml .
2.11 宿主机上文件复制到 docker 镜像内
docker cp iotsquare.toml iotsquare:/home
2.10 docker 保存镜像
docker save -o test.tar registry.cn-shenzhen.aliyuncs.com/{{name}}/{object}:{version}
2.11 docker 加载镜像
docker load --input test.tar
2.12. 创建和运行容器:
docker run
:运行一个新的容器。docker start
:启动一个已停止的容器。docker stop
:停止一个运行中的容器。docker restart
:重启一个容器。docker exec
:在正在运行的容器中执行命令。
2.13 管理容器:
docker ps
:列出正在运行的容器。docker ps -a
:列出所有容器,包括已停止的。docker rm
:删除一个或多个容器。
2.14. 管理镜像:
docker images
:列出本地镜像。docker pull
:从 Docker Hub 下载镜像。docker build
:构建一个镜像。docker rmi
:删除一个或多个本地镜像。
2.15. 容器和主机之间的拷贝:
docker cp
:在容器和主机之间拷贝文件。
2.16. 管理数据卷:
docker volume ls
:列出所有数据卷。docker volume create
:创建一个新的数据卷。docker volume rm
:删除一个数据卷。
2.17. 查找容器和镜像:
docker search
:在 Docker Hub 上搜索镜像。
2.18. 暂停和恢复容器:
docker pause
:暂停一个运行中的容器。docker unpause
:恢复一个暂停的容器。
2.19 docker 容器网络相关命令操作
2.19.1 查看容器网络映射端口
docker network inspect bridge
管理网络命令:
docker network ls
:列出所有网络。docker network create
:创建一个新的网络。docker network rm
:删除一个网络。
2.19.2 获取容器的 IP 地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器ID>
2.19.3 配置docker0指定网段
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --graph /data/docker -H fd:// --containerd=/run/containerd/containerd.sock --bip=10.10.0.1/24
重启修改配置生效
systemctl daemon-reload
systemctl restart docker
2.19.4 查看docker容器是否挂载到默认docker0网卡上
interfaces对应的网卡名字
root@localhost ~ # brctl show
bridge name bridge id STP enabled interfaces
br-3c3c69c1af70 8000.0242191f898e no
br-c1bd82c3b0ee 8000.0242d2a24e8a no veth010f1c4
veth017a0ef
veth17af67a
veth5541ca4
veth5b5f808
veth5cc4a8c
veth5cd963b
veth755356b
vethab98f97
vethb531aec
vethba02947
vethc3e34a8
vethe75c364
docker0 8000.02424791fe9e no
2.19.5 添加和删除路由
添加路由:
route add -net 10.20.0.0/24 gw 192.168.159.132 # 宿主机docker0网断段
route add -net 172.20.0.0/24 gw 192.168.159.132 # 宿主机docker里的容器网段
iptables -A FORWARD -s 192.168.0.0/21 -j ACCEPT # 宿主机默认网关的网段
删除路由:
route delete -net 172.20.0.0/24
清除所有路由规则:
sudo ip route flush cache
2.19.6 tcpdump分析ping包是否正常
源主机ping目的主机,在源主机分析tcp包
ping 172.20.0.1
tcpdump -i ens33 -vnn icmp
2.19.7 查看ARP记录,根据三层IP地址查询对应的二层Mac地址
查询宿主机的网卡设备ARP记录:
ip neigh show dev ens33
查询目的地址二层数据帧:
bridge fdb show |grep "{{mac address}}"
3. [docker镜像库]
3.1官方镜像库(https://hub.docker.com/)
To use the access token from your Docker CLI client:
-
Run docker login -u {name}
-
At the password prompt, enter the personal access token. xx-xx-xx-xx
3.2 自建私有库
harbor官网安装和说明链接
https://goharbor.io/
4. 以普通用户运行docker容器
4.1 root账户下添加用户:
passwd test
4.2 修改用户可以使用root权限
|
|
4.3 将用户加入docker用户组:
|
|
5. docker-compose 安装:
curl -L https://github.com/docker/compose/releases/download/1.24.0-rc3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
6. docker 配置代理
1. 修改配置
$ systemctl edit docker.service
[Service]
Environment="HTTP_PROXY=http://192.168.159.132:8123"
Environment="HTTPS_PROXY=http://192.168.159.132:8123"
Environment="NO_PROXY=localhost,127.0.0.1"
2. 显示配置结果:
systemctl show --property Environment docker.service
3. 重新启动服务
systemctl restart docker.service
参考链接
