首页
文章
标签
关于
docker基础应用
发布于: 2021-3-2   更新于: 2025-7-19   未收录
文章字数: 1796   阅读时间: 4 分钟   阅读量:

1.指定docker数据存储路径

1.1 环境:

  • centos 7.9
  • Docker version 20.10.10, build b485636

1.2 设置docker工作目录:

  1. 查看docker配置文件root目录
    [root@localhost ~]# cat /usr/lib/systemd/system/docker.service |grep "ExecStart"
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    
  2. 停止正在运行的docker镜像以及docker服务
  3. 查看docker实际的数据存储目录,移动源(旧)数据到新的docker root目录:
    1
    2
    3
    
    docker info |grep "Docker Root Dir"
    systemctl stop docker.socket
    mv  /var/lib/docker /data
    
  4. 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
  1. 重启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:

  1. Run docker login -u {name}

  2. 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权限

1
2
3
4
sudo vi /etc/sudoers
# 添加行
root    ALL=(ALL)       ALL
test    ALL=(ALL)       ALL

4.3 将用户加入docker用户组:

1
2
3
4
su test
sudo groupadd docker
sudogpasswd -a test docker
newgrp 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.1 nano方式 修改配置

$ 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"

1.2 显示配置结果:

systemctl show --property Environment docker.service

2.1 vi方式 修改配置

1
2
3
4
5
6

# vi  /usr/lib/systemd/system/docker.service
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:10081"
Environment="HTTPS_PROXY=http://127.0.0.1:10081"
Environment="NO_PROXY=localhost,127.0.0.1"

3 重新启动服务生效

systemctl daemon-reload
systemctl restart docker.service

参考链接