云计算_Dockerfile流程

基本内容

 ${variable:-word}表示如果variable设置,则结果将是该值。如果variable未设置,word则将是结果。
     如${variable:-word},表示如果变量值存在,就使用原来的变量,
 	                    变量为空时,就使用word的值作为变量的值,
 ${variable:+word}表示如果variable设置则为word结果,否则为空字符串。
 .dcokerignore:把文件路径写入到.dockerignore,对应的路径将不会被打包到新镜像

Dockerfile指令

  FROM
  COPY ADD ADD支持使用 TAR文件和 URL路径
  CMD、ENTRYPOINT
  只能用于 FROM 指令中
  ENV  ARG  ARG用于指定传递给构建运行时的变量-构建时变量,镜像建立完成后就失效
            ARG变量不会像ENV变量那样持久化到构建好的镜像中--ARG也被称为构建时变量
			image被创建和container启动之后,无效
  WORKDIR   EXPOSE  USER

示例

 FROM test/dock:v1  as RunData
 COPY scripts/entrypoint.sh /entrypoint.sh
 ARG http_proxy
 ARG https_proxy
 RUN apt-get update && apt-get install --no-install-recommends -y \
     &&  python-rosdep \
 	 && mkdir -p /opt/test  \
     && rm -rf /var/lib/apt/lists/*
 RUN apt-get update	\ 
    && git config --global http.proxy $http_proxy \
    && git config --global https.proxy $http_proxy  \
    && git clone https://github.com/test \
    && git config --global --unset http.proxy \
    && git config --global --unset https.proxy \	 
	
 FROM test/dock:v1 as Builder
 COPY --from=RunData /opt/test/ /opt/test/
 COPY --from=RunData /entrypoint.sh /entrypoint.sh
 ENTRYPOINT '/entrypoint.sh'

docker build 命令

 docker build 命令用于使用 Dockerfile 创建镜像
   说明 --rm :设置镜像成功后删除中间容器
    -t , --tag: 镜像的名字及标签,通常 name:tag 或者 name 格式;
	--build-arg=[] :设置镜像创建时的变量
	 --no-cache=true来强制重新生成中间镜像 Docker 一开始的设计既考虑了外部依赖的问题,用户可以使用参数 --no-cache 确保获取最新的外部依赖
	 如RUN apt-get update,那么随着时间的推移,基于同一个基础镜像,一年的 apt-get update 和一年后的 apt-get update, 
	 由于软件源软件的更新,从而导致产生的镜像理论上应该不同。
	 如果继续使用 cache 机制,将存在不满足用户需求的情况
	 

  docker build -t  test:v1
        --no-cache --rm\
        --build-arg NAMR_ID=exp\
		--build-arg http_proxy="10.10.10.11" \
        --build-arg https_proxy="10.10.10.11" \
        --add-host  test.com:10.10.10.10\
        .

检查

 docker inspect container_id
 docker  history 	 

docker run 命令

说明: -i: 以交互模式运行容器,通常与 -t 同时使用 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
docker run /bin/bash \
  --entrypoint  ""\
  --gpus all \
  -it \
  -e user_id=001 \
  -v /data:/data \
  -w /test \
  --name "test" \
  test:v1

Linux

  01.unset  http_proxy  unset https_proxy,
  02.export  http_proxy="" ,问题未解;
  03. /etc/enviroment  中的代理去掉
posted @ 2022-06-16 17:50  辰令  阅读(52)  评论(0编辑  收藏  举报