Duas maneiras de criar imagens com o Docker

Duas maneiras de criar imagens com o Docker

Há duas maneiras de o Docker criar uma imagem: o docker compromete-se a criar uma imagem e criar uma imagem com base no dockerfile.No dddd , falamos sobre como usar o dockerfile para criar uma imagem.Somente os comandos FROM e RUN são usados, o que é relativamente simples.

Este artigo fala sobre como usar o docker commit para criar imagens e outros comandos e o uso do dockerfile.

Primeiro, os estivadores se comprometem a criar uma imagem

Faça uma imagem através do docker confirmar, execute uma imagem básica, instale o software e modifique o arquivo de configuração na imagem básica. Em seguida, envie as alterações para a nova imagem.

1 run docker run

1) Imagens do Docker primeiro verifique se existe uma imagem local, selecione a imagem básica necessária, se não for necessário, use o docker pull para puxar a imagem necessária

2) Em seguida, use o docker run para executar a imagem como um contêiner

2. docker commit - uma informação do autor - m descrição informações nome do contêiner nome do espelho (faça você mesmo)

-a Especifique as informações do autor -m Envie as informações da descrição -p suspenda o contêiner por padrão ao confirmar

A implementação específica é a seguinte:

 

 

Na última caixa vermelha, o comando docker commit finalmente salva o nome da imagem modificada, basta escolher uma

3. docker diff Visualizar alterações na camada de armazenamento de imagens

4 history histórico do docker

-q exibe apenas o ID do espelho

 

Descrição:

1) Além do que você realmente deseja modificar com a imagem de confirmação, outros arquivos serão alterados ou adicionados devido à execução do comando.Se você estiver instalando pacotes de software, compilando e construindo, será adicionado muito conteúdo estranho, que será Fazendo com que a imagem no espelho fique extremamente inchada ,

A confirmação do Docker significa que as operações de espelhamento são todas de caixa preta , é difícil para outras pessoas saberem o que está acontecendo lá dentro e a manutenção é muito difícil. O funcionário não recomenda a criação por confirmação.

2) Esse método é o mais gratuito e mais fácil se você não se preocupar com o espelho se tornando cada vez maior.

Segundo, o comando Dockerfile

Dockerfile é um arquivo de texto, que contém uma série de instruções (Instrução); cada instrução cria uma camada; portanto, o conteúdo de cada instrução é para descrever como a camada deve ser construída.

Nota: Ao criar uma imagem, adicione apenas o que você realmente precisa adicionar a cada camada

1. FROM especifica a imagem base

FROM : FROM <imagem> 或者 FROM <imagem>: <tag>

Por exemplo: FROM centos: 7

2. MANUTENÇÃO  designada informação do mantenedor

 

Formato: MAINTAINER <name>

Por exemplo: MAINTAINER hxq [email protected]

3. Executar comando

1) modo Shell:

EXECUTAR <comando> é como o comando inserido diretamente na linha de comando

RUN <comando> usa `/ bin / sh -c` por padrão para executar comandos

Anterior: EXECUTAR yum install -y httpd

R: EXECUTAR echo '<h1> Olá, Docker! </h1>'> /usr/share/nginx/html/index.html

2) modo exec

RUN ["arquivo executável", "parâmetro 1", "parâmetro 2"], é mais parecido com o formato em uma chamada de função

Nota: O comando RUN é usado para executar a linha de comando. Note que cada uso de um RUN (comando dockerfile) é adicionar mais uma camada à imagem (o limite máximo é de 127 camadas).

          Execute várias instruções para conectar-se ao && (apt-get plus -y, o que significa que as solicitações de instalação do sistema selecionam yes por padrão; caso contrário, o espelhamento falha; se houver uma quebra de linha entre o comando &&, lembre-se de trazer \ após a linha )

 

4. Copie arquivos de cópia

格式:COPY src desc
复制本地主机src目录或文件到容器的desc目录,desc不存在时会自动创建。

5、ADD 高级复制

 

格式:ADD src dest
该命令将复制指定本地目录中的文件到容器中的dest中,src可以是是一个绝对路径,也可以是一个URL或一个tar文件,tar文件会自动解压为目录。

 

6、CMD 容器启动命令

 

是可以被 docker run 指令覆盖的,而ENTRYPOINT的参数可以被--entrypoint覆盖;会比CMD或者docker run指定的命令要靠前执行。

 

7、ENTRYPOINT 入口点
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1,param2 会在shell中执行。
用于配置容器启动后执行的命令,这些命令不能被docker run提供的参数覆盖。和CMD一样,每个Dockerfile中只能有一个ENTRYPOINT,当有多个时最后一个生效。

 

8、ENV 用设置环境变量

 

这些环境变量,后续可以被RUN指令使用,容器运行起来之后,也可以在容器中获取这些环境变量。
格式为:EVN key value
ENV word hello
RUN echo $word

 

9、ARG 构建参数

 

10、VOLUMN 定义匿名卷

 

格式: VOLUME ["/data"]
作用是创建在本地主机或其他容器可以挂载的数据卷,用来存放数据。

 

11、EXPOSE 暴露端口

在启动容器的使用使用-P,Docker会自动分配一个端口和转发指定的端口,使用-p可以具体指定使用哪个本地的端口来映射对外开放的端口。
格式: EXPOSE port [port2,port3,...]
比如:EXPOSE 80 这条指令告诉Docker服务器暴露80端口,供容器外部连接使用。

 

12、WORKDIR  指定工作目录

 

为后续的RUN CMD ENTRYPOINT指定配置工作目录,可以使用多个WORKDIR指令,若后续指令用得是相对路径,则会基于之前的命令指定路径。
格式: WORKDIR /path
比如: WORKDIR /path/to/workdir

 

13、USER 指定容器运行时的用户名或UID

 

后续的RUN也会使用指定的用户。要临时使用管理员权限可以使用sudo。在USER命令之前可以使用RUN命令创建需要的用户。
格式为:USER username
比如:RUN groupadd -r docker && useradd -r -g docker docker

 

14、HEALTHCHECK 健康检查

15、ONBUILD 镜像触发器

 

格式:ONBUILD [INSTRUCTION]
该配置指定当所创建的镜像作为其他新建镜像的基础镜像时所执行的指令。
例如下面的Dockerfile创建了镜像A:
ONBUILD ADD . /app
ONBUILD RUN python app.py

 

则基于镜像A创建新的镜像时,新的Dockerfile中使用from A 指定基镜像时,会自动执行ONBBUILD指令内容,等价于在新的要构建镜像的Dockerfile中增加了两条指令:
FROM A
ADD ./app
RUN python app.py
16、docker build
创建好Dockerfile之后,通过docker build命令来创建镜像,该命令首先会上传Dockerfile文件给Docker服务器端,服务器端将逐行执行Dockerfile中定义的指令。
通常建议放置Dockerfile的目录为空目录。另外可以在目录下创建.dockerignore文件,让Docker忽略路径下的文件和目录,这一点与Git中的配置很相似。

 

通过 -t 指定镜像的标签信息,例如:docker build -t regenzm/first_image . ## "."指定的是Dockerfile所在的路径

 

Acho que você gosta

Origin www.cnblogs.com/hld123/p/12751539.html
Recomendado
Clasificación