距离上一次更新该文章已经过了 589 天,文章所描述的內容可能已经发生变化,请留意。
Docker命令大全
配置docker登陆时命令非明文
环境变量的登录方式(通过/etc/profile设置PASSWORD变量),以下示例从变量读取密码,然后使用STDIN将其传递给docker login命令:
bash
1 | echo "$PASSWORD" | docker login --username <xxx> --password-stdin ${REGISTRY_ADDRESS} |
Docker命令记录(长期)
ctr为镜像打tag
bash
1 | ctr images tag oldimage:v1 newimage:v2 |
docker为镜像打tag
bash
1 | docker tag oldimage:v1 newimage:v2 |
从容器里面拷文件到宿主机
plaintext
1 | docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 |
从宿主机拷文件到docker容器里面
plaintext
1 | docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径 |
docker内部安装工具/插件/软件
plaintext
1 | 需要知道docker是一个最小体积的"vm",所以里面几乎什么都没有,如果想用些第三方的软件,需要自行安装.如下: |
配置docker登陆时命令非明文
环境变量的登录方式(通过/etc/profile设置PASSWORD变量),以下示例从变量读取密码,然后使用STDIN将其传递给docker login命令:
plaintext
1 | echo "$PASSWORD" | docker login --username <xxx> --password-stdin ${REGISTRY_ADDRESS} |
删除无用镜像和容器
dockerfile
1 | # 先查看空间占用情况 |
containerd删除无用镜像
plaintext
1 | crictl images|grep 'none'|awk '{print $3}'|xargs crictl rmi |
docker crontab删除容器内部文件
sh
1 | # 每五个小时运行一次, 删除/tmp目录上早于5个小时的/tmp文件 |
docker save 用来将一个或多个image打包保存。
如:将本地镜像库中的image1和image2打包到images.tar中
sh
1 | docker save -o images.tar image1:v1 image2:v1 |
docker save 也可以打包container,保存的是容器背后的image.
docker load用于将打包的tar中包含的镜像load到本地镜像库,但不能重命名其中的镜像名。
bash
1 | docker load -i images.tar |
docker export 打包container文件系统
bash
1 | docker export -o the_container.tar container_name |
使用 docker import 载入,可以为新镜像指定name和tag
bash
1 | docker import the_container.tar new_image_name:tag |
总结一下
tex
1 | docker save保存的是镜像(image),docker export保存的是容器(container); |
查找那个容器输出日志占用最大
sh
1 | # docker |
利用docker ps -a --format
命令
获取镜像,ID,端口号,状态
bash
1 | docker ps -a --format "table {{.Image}}\t{{.ID}}\t{{.Ports}}\t{{.Status}}" |
列出正在运行的容器
bash
1 | docker ps -a -f "status=running" |
列出退出的容器
bash
1 | docker ps -a -f "status=exited" |
查看容器磁盘信息
bash
1 | docker ps -a --format "table {{.Size}}\t{{.Names}}" |
获取容器的IP
bash
1 | docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q) |
获取容器的mac地址
bash
1 | docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $(docker ps -a -q) |
获取容器name
bash
1 | docker inspect --format='{{.Name}}' $(docker ps -aq) |
获取容器的Hostname
bash
1 | docker inspect --format '{{ .Config.Hostname }}' $(docker ps -q) |
获取hostname,ip
bash
1 | docker inspect --format 'Hostname:{{ .Config.Hostname }} Name:{{.Name}} IP:{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q) |
获取容器的log path
bash
1 | docker inspect --format='{{.LogPath}}' `docker ps -a -q` |
获取容器的镜像
bash
1 | docker inspect --format='{{.Config.Image}}' `docker ps -a -q` |
验证overlayfs文件系统挂载(可通过overlayfs/snapshots/{id}来查找对应服务)
bash
1 | mount |grep overlayfs|grep {id} |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小五的个人杂货铺!