基本内容
${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 中的代理去掉