centos 安装docker

#!/bin/bash

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd


sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io

# 加入国内镜像源:在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

       {
        "registry-mirrors": [
          "https://hub-mirror.c.163.com",
          "https://mirror.baidubce.com"
        ]
      }


# 启动docker
sudo systemctl start docker

# 设置开机启动
sudo systemctl enable docker

# 加载docker配置,重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker

Dockerfile 中 CMD 和ENTRYPOINT 的区别

1-联系

  • 允许用户指定容器的默认执行的命令

2-区别

  • CMD有3种格式,Exec 格式是 CMD 的推荐格式

    Exec 格式:CMD ["executable","param1","param2"]
    CMD ["param1","param2"] 为 ENTRYPOINT 提供额外的参数,此时 ENTRYPOINT 必须使用 Exec 格式。
    Shell 格式:CMD command param1 param2
    
  • ENTRYPOINT 有两种格式

    Exec 格式:ENTRYPOINT ["executable", "param1", "param2"] 这是 ENTRYPOINT 的推荐格式
    Shell 格式:ENTRYPOINT command param1 param2
    
    ## Exec 格式
    
    ENTRYPOINT 的 Exec 格式用于设置要执行的命令及其参数,同时可通过 CMD 提供额外的参数。
    
    ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。
    
    比如下面的 Dockerfile 片段:
    
    ENTRYPOINT ["/bin/echo", "Hello"]  
    CMD ["world"]
    
    当容器通过 docker run -it [image] 启动时,输出为:
    Hello world
    
    而如果通过 docker run -it [image] CloudMan 启动,则输出为:
    Hello CloudMan
    
    ## Shell 格式
    
    ENTRYPOINT 的 Shell 格式会忽略任何 CMD 或 docker run 提供的参数。
    
  • 如果 docker run 指定了其他命令,CMD 指定的默认命令将被忽略。

  • 如果 Dockerfile 中有多个 CMD 指令,只有最后一个 CMD 有效。

  • ENTRYPOINT 看上去与 CMD 很像,它们都可以指定要执行的命令及其参数。不同的地方在于 ENTRYPOINT 不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令。

Docker 避免每次更新代码后都重新安装依赖

  • 先单独拷贝依赖文件(requirements.txt)到docker中,再立即安装依赖。由于通常在更新代码之后,依赖文件并没有改变(改变的代码部分在下一步才会被拷贝到镜像中),因此docker在build中会显示“using cache”(调用缓存),从而避免了重新安装依赖。
FROM python:3.6
WORKDIR /qqzone
# 先将依赖文件拷贝到项目中
COPY requirements.txt /qqzone
# 执行指令,安装依赖
RUN pip install -i -r requirements.txt
# 拷贝项目文件和代码
COPY . /qqzone
CMD python src/web/server.py

原文地址:http://www.cnblogs.com/beihangxuwei/p/16870260.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性