Docker学习

2020-03-04  本文已影响0人  AI科技智库

1 Docker指令

2 dockerfile debain和pip替换国内镜像源

2.1 debain使用国内镜像源

dockerfile中添加

COPY sources.list /etc/apt/

dockerfile目录中创建sources.list,并添加

deb http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib

2.2 pip添加国内镜像源

dockerfile中添加

COPY pip.conf /etc/pip.conf

dockerfile目录中创建pip.conf,并添加

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple 

2.3 npm添加国内镜像源

dockerfile中添加

RUN npm config set registry https://registry.npm.taobao.org
RUN npm install

3 dockerfile指令

FROM

Docker基础镜像的来源,尽可能使用当前官方仓库作为你构建镜像的基础

RUN

RUN 指令最常见的用法是安装包用的 apt-get,apt-get update 和 apt-get install 被放在一个 RUN 指令中执行,这样能够保证每次安装的是最新的包。如果 apt-get install 在单独的 RUN 中执行,则会使用 apt-get update 创建的镜像层,而这一层可能是很久以前缓存的。

RUN apt-get update && apt-get install -y \
                        package-bar \
                        package-baz \
                        package-foo

CMD

CMD 指令用于执行目标镜像中包含的软件

CMD ["executable", "param1", "param2"...]

EXPOSE

EXPOSE 指令用于指定容器将要监听的端口

EXPOSE 80

ENV

可以使用 ENV 来为容器中安装的程序更新 PATH 环境变量

ENV PATH /usr/local/nginx/bin:$PATH

ADD 和 COPY

虽然 ADD 和 COPY 功能类似,但一般优先使用 COPY 。因为它比 ADD 更透
明。 COPY 只支持简单将本地文件拷贝到容器中,而 ADD 有一些并不明显的功
能(比如本地 tar 提取和远程 URL 支持)。因此, ADD 的最佳用例是将本地 tar
文件自动提取到镜像中,例如

ADD rootfs.tar.xz 
COPY requirements.txt /tmp/

ENTRYPOINT

ENTRYPOINT 的最佳用处是设置镜像的主命令

WORKDIR

WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行

WORKDIR /mydir
CMD ["more" ,"test.txt"]

4 docker compose分配资源

redis服务被限制为使用不超过50M的内存和0.50(不超过单个内核的50%)可用处理时间(CPU),并且具有保留20M的内存和0.25CPU时间(始终可用)。

version: "3.7"
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        # 设置容器的资源限制
        limits:
          cpus: '0.50'
          memory: 50M
        #设置为容器预留的系统资源(随时可用)
        reservations:
          cpus: '0.25'
          memory: 20M
上一篇 下一篇

猜你喜欢

热点阅读