docker | install | 基础命令

347 阅读1分钟

@TOC

docker install

docke 安装 官网

dockerfile

FROM

FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]

  • FROM 命令是一个 Dockerfile 的起始命令 创建基本的镜像
  • ARG 命令是唯一 一个可以出现在 FROM 命令之前的 命令 通常用来指定 要拉取基础镜像的 tag 理解他与FROM是怎样交互的
  • FROM命令可以出现多次,可以当作下面 FROM 的依赖阶段,需要注意的是 每个FROM 命令 都会清除掉之前 FROM所创建的状态


ARG 与 FROM 的交互

ARG  CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD  /code/run-app

FROM extras:${CODE_VERSION}
CMD  /code/run-extras
  • 定义在 一个 FROM 之前的 ARG是独立于所构建的镜像状态之外的,所以他不能用在FROM之后的任何命令内
  • 但是如果要使用 定义在 FROM 之前的 ARG的默认初始值,那么可以 在 FROM之后再次声
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version

实验

Dockerfile

ARG VERSION=5.7.41
FROM mysql:${VERSION}
ARG VERSION
ENV MYSQL_ROOT_PASSWORD=myrootpass \
    MYSQL_DATABASE=yq_crawler \
    MYSQL_USER=crawler \
    MYSQL_PASSWORD=123456
RUN echo $VERSION > version_image
  • sudo docker build . -t mysql-test:0.1
  • sudo docker run -d -p 3306:3306 --name mysql-test mysql-test:0.1
  • sudo docker exec -it mysql-test-1 bash

921cef2df9005f811948a59e67dc5354.png

RUN

docker 以 层 的方式构建镜像.......

  • RUN命令有两种form
  • RUN 在shell中运行 linux上默认为 /bin/sh -c
  • exec from RUN ["executable","p1","p2"]
  • RUN命令会在 当前最顶层上提交结果,被提交的新的镜像会被Dockerfile的下一步使用
RUN /bin/bash -c 'source $HOME/.bashrc && echo $HOME'    # Shell form
RUN ["/bin/bash","-c","source $HOME/.bashrc && echo $HOME"]
  • RUN命令的cache不会被自动消除,除非在构建镜像的时候指定 docker build --no-cache .,
  • 第一个 ADD或者COPY命令中的 <src>内容发生变化,则会使 这以下的 Dockerfile 中的缓存全部失效 包括 对于RUN生成的cache ,
ARG VERSION=latest
FROM alpine:$VERSION
RUN ["apk", "add", "git"]
RUN ["git","clone", "https://github.com/jyxzwd/jyxzwd.github.io.git"]

08280b7cd5330d6e28fc6a6746877647.png

--no-cache

ae323b3d208d8da1c10da437260a2469.png

ADD https://s2.loli.net/2022/06/19/iO3N8W6V41DZE7a.jpg /tmp/test.jpg

ADD 命令之后的cache全部失效

ARG VERSION=latest
FROM alpine:$VERSION
ADD https://s2.loli.net/2022/06/19/iO3N8W6V41DZE7a.jpg /tmp/test.jpg
RUN ["apk", "add", "git"]
RUN ["git","clone", "https://github.com/jyxzwd/jyxzwd.github.io.git"]

35c68d392e2f0d6a512523a30f6c37d1.png