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

    • 容器启动时默认执行的命令
    • 如果docker container run启动容器时指定了其他命令,则CMD命令会被忽略
    • 如果定义了多个CMD,只有最后一个会被执行。
      1. FROM ubuntu:21.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
      清理容器
      docker system prune -f
      
      清理没有使用到的镜像命令
    docker image prune -a
    
    docker container run -it ipinfo
    

    会自动进入这个容器的shell,为什么我们没有没有cmd这命令,还会进入shell
    执行以下的命令:

    docker image history ipinfo
    

    image.png
    我们再运行这个container的时候还可以指定命令
    第二个就是指定的命令ipinfo

    docker container run -it ipinfo ipinfo
    
    FROM ubuntu:21.04
    ENV VERSION=2.0.1
    RUN apt-get update && \
        apt-get install -y wget && \
        wget https://github.com/ipinfo/cli/releases/download/ipinfo-${VERSION}/ipinfo_${VERSION}_linux_amd64.tar.gz && \
        tar zxf ipinfo_${VERSION}_linux_amd64.tar.gz && \
        mv ipinfo_${VERSION}_linux_amd64 /usr/bin/ipinfo && \
        rm -rf ipinfo_${VERSION}_linux_amd64.tar.gz
    CMD ["ipinfo"]
    

    CMD优先级,最后一个CMD优先级最高