系统清理明显小技巧

快速删除所有已经停止的容器

  1. docker system prune -f

快速删除所有的镜像

  1. docker image prune -a

容器启动命令 CMD

CMD可以用来设置容器启动时默认会执行的命令。

  • 容器启动时默认执行的命令
  • 如果docker container run启动容器时指定了其它命令,则CMD命令会被忽略
  • 如果定义了多个CMD,只有最后一个会被执行。
  1. FROM ubuntu:20.04
  2. ENV VERSION=2.0.1
  3. RUN apt-get update && \
  4. apt-get install -y wget && \
  5. wget https://github.com/ipinfo/cli/releases/download/ipinfo-${VERSION}/ipinfo_${VERSION}_linux_amd64.tar.gz && \
  6. tar zxf ipinfo_${VERSION}_linux_amd64.tar.gz && \
  7. mv ipinfo_${VERSION}_linux_amd64 /usr/bin/ipinfo && \
  8. rm -rf ipinfo_${VERSION}_linux_amd64.tar.gz
  1. $ docker image build -t ipinfo .
  2. $ docker container run -it ipinfo
  3. root@8cea7e5e8da8:/#
  4. root@8cea7e5e8da8:/#
  5. root@8cea7e5e8da8:/#
  6. root@8cea7e5e8da8:/# pwd
  7. /
  8. root@8cea7e5e8da8:/#

默认进入到shell是因为在ubuntu的基础镜像里有定义CMD

  1. $docker image history ipinfo
  2. IMAGE CREATED CREATED BY SIZE COMMENT
  3. db75bff5e3ad 24 hours ago RUN /bin/sh -c apt-get update && apt-get 50MB buildkit.dockerfile.v0
  4. <missing> 24 hours ago ENV VERSION=2.0.1 0B buildkit.dockerfile.v0
  5. <missing> 7 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
  6. <missing> 7 days ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B
  7. <missing> 7 days ago /bin/sh -c [ -z "$(apt-get indextargets)" ] 0B
  8. <missing> 7 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 811B
  9. <missing> 7 days ago /bin/sh -c #(nop) ADD file:d6b6ba642344138dc… 74.1MB