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

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. 修改配置

$ 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

参考链接

kelleygo
随笔记录,为技术沉淀.
目录
相关文章
kubernetes常用命令
1. 将service端口暴露到本地 比如将生产环境的redis暴露到本地6379端口 1 kubectl port-forward service/redis -n [namesplace] 6379:6379 2. 进入容器中 kubectl exec -it [pod] -n [namesplace] -- bash 3. 查看日志 查看最后1行的日志 kubectl logs -f --tail 1 [pod] -n [namesplace] 查看最后一分钟的所有日志 kubectl -n [namesplace] logs [pod] --since=1m 查看指定时间 kubectl -n -n [namesplace] logs -f [pod] --since-time="2022-10-24T02:54:03.467+01:00" 4. 查看配置: kubectl get pod product-6b5c98478b-rpgr6 --namespace=product-prod -o yaml kubectl describe pods product-6b5c98478b-rpgr6 --namespace=product-prod 5.
2023-5-10
centos 7.9离线安装docker
centos 7.9安装docker 1.离线下载docker https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz 2.离线安装docker 准备前: 2.0.1 关闭Selinux 首先, 执行getenforce或sestatus, 查询selinux状态, CentOS系统安装后默认为enforcing. getenforce 或 sestatus 2.0.2 修改selinux配置 1 2 3 4 5 vim /etc/selinux/config 修改selinux配置文件 SELINUX=enforcing 修改为 SELINUX=disabled 2.0.3 重复服务器以上修改生效 1 reboot 2.1 移动文件到目标服务器并执行tar命令解压,如: tar -zxvf docker-20.10.9.tgz 2.2 将/home/docker目录下解压出来的所有docker文件复制到 /usr/bin/ 目录下 cp docker/* /usr/bin/ 2.3 将docker注册为service,进入/etc/systemd/system/目录,并创建docker.service文件 1 2 cd /etc/systemd/system/ touch docker.
2023-3-2
ssh密钥对
1. ssh密钥对 ssh key的类型有四种,分别是dsa、rsa、 ecdsa、ed25519。 根据数学特性,这四种类型又可以分为两大类,dsa/rsa是一类,ecdsa/ed25519是一类,后者算法更先进。 dsa因为安全问题,已不再使用了。 ecdsa因为政治原因和技术原因,也不推荐使用。 rsa是目前兼容性最好的,应用最广泛的key类型,在用ssh-keygen工具生成key的时候,默认使用的也是这种类型。不过在生成key时,如果指定的key size太小的话,也是有安全问题的,推荐key size是3072或更大。 ed25519是目前最安全、加解密速度最快的key类型,由于其数学特性,它的key的长度比rsa小很多,优先推荐使用。它目前唯一的问题就是兼容性,即在旧版本的ssh工具集中可能无法使用。不过据我目前测试,还没有发现此类问题 2. ed25519 生成密钥对 ssh-keygen -t ed25519 -C "your_email@example.com" -f ed25519file 参数解释: -t: 指定使用的数字签名算法; -C: 注释,随便填; -f: 指定文件输出位置,可选默认为 ~/.ssh/ 3. 验证ssh密钥对 添加公钥: Gitee公钥管理页面 GitHub公钥管理页面 验证命令,前提条件: 已经添加了公钥 1 2 ssh -T git@github.com # github ssh -T git@gitee.com # gitee 4. 总结 优先选择ed25519,否则选择rsa。 RSA算法通过使用不同的密钥进行加密和解密,实现了信息的保密性和完整性。它在实际应用中被广泛使用,但需要注意选择足够大的密钥长度以确保安全性。在安全性方面,RSA算法主要受到大整数分解问题的影响,随着量子计算技术的进步,RSA算法的安全性可能会受到威胁,因此一些新的算法如Ed25519等逐渐被引入以满足未来的安全需求。
2021-3-10