Sintaxe de imagem-build de imagem-Dockerfile personalizada do Docker

Imagem de construção de imagem personalizada do Docker

Dockerfile

Um Dockerfile é um arquivo de texto usado para definir uma imagem Docker.Ele contém uma série de instruções e parâmetros para orientar o mecanismo Docker na construção da imagem.

Estrutura básica e sintaxe

A estrutura básica do Dockerfile é a seguinte:

# Comment
INSTRUCTION arguments
  • # Comment: Comentário, usado para explicar instruções ou fornecer informações relevantes.
  • INSTRUCTION: diretiva, usada para especificar as operações executadas pelo mecanismo Docker.
  • arguments: Parâmetros da instrução, utilizados para especificar o conteúdo específico da operação.

Comandos comuns

No Dockerfile, podemos usar uma variedade de instruções para definir o processo de construção da imagem. Aqui estão algumas instruções comumente usadas:

DE

FROMA diretiva é usada para especificar a imagem base, ou seja, a imagem da qual depende a nova imagem. Exemplo:

FROM ubuntu:latest

FROM ubuntu:latestÉ uma instrução no Dockerfile FROM, usada para especificar a imagem base na qual construir uma nova imagem. Aqui está uma explicação detalhada dos parâmetros deste comando:

  • ubuntu: Este é o nome da imagem base, indicando que o sistema operacional Ubuntu é usado como imagem base. Ubuntu é uma distribuição Linux popular amplamente usada para desenvolver e implantar aplicativos.
  • latest: esta é uma tag para a imagem base que especifica a versão específica a ser usada. Neste exemplo, latestsignifica usar a versão mais recente do Ubuntu como imagem base.

CORRER

RUNAs diretivas são usadas para executar comandos na imagem. Várias RUNdiretivas podem ser usadas para executar vários comandos. Exemplo:

RUN apt-get update && apt-get install -y package

RUN apt-get update && apt-get install -y packageÉ uma instrução do Dockerfile RUN, usada para executar comandos na imagem. Aqui está uma explicação detalhada dos parâmetros deste comando:

  • apt-get: Esta é uma ferramenta de gerenciamento de pacotes em sistemas Ubuntu e Debian usada para instalar, atualizar e remover pacotes de software.
  • update: Este é apt-getum subcomando que atualiza a lista de pacotes para obter as informações mais recentes sobre pacotes disponíveis.
  • &&: Este é o operador lógico AND no Shell, usado para conectar dois comandos, e o último comando será executado somente após o comando anterior ser executado com sucesso.
  • install: Este é apt-getoutro subcomando usado para instalar o pacote especificado.
  • -y: esta é apt-get installuma opção do comando para responder automaticamente aos prompts de confirmação durante a instalação para evitar a necessidade de confirmação manual durante a instalação.
  • package: Este é o nome do pacote a ser instalado.

Resumindo, RUN apt-get update && apt-get install -y packageo objetivo do comando é executar dois comandos na imagem: primeiro atualizar a lista de pacotes e, em seguida, instalar o pacote especificado e responder automaticamente ao prompt de confirmação durante o processo de instalação.

CÓPIA DE

COPYA diretiva é usada para copiar um arquivo ou diretório do contexto de construção para um caminho especificado na imagem. Exemplo:

COPY src/ /app/

COPY src/ /app/É uma diretiva em um Dockerfile COPYque copia um arquivo ou diretório do contexto de construção para um caminho especificado na imagem. Aqui está uma explicação detalhada dos parâmetros deste comando:

  • src/: Este é o caminho para o arquivo ou diretório de origem a ser copiado. Neste exemplo, src/significa o diretório no contexto de construção src/, que é o diretório abaixo do diretório onde o Dockerfile está localizado src/.
  • /app/: este é o caminho de destino, especificando onde na imagem o arquivo ou diretório de origem deve ser copiado. Neste exemplo, /app/representa o diretório na imagem /app/.

Resumindo, COPY src/ /app/a função do comando é copiar o diretório no contexto de construção src/para o diretório na imagem /app/. Desta forma, ao executar o container, você pode acessar os arquivos ou diretórios copiados na imagem.

DIRTRABALHO

WORKDIRO comando é usado para definir o diretório de trabalho, que é o diretório padrão ao executar comandos subsequentes na imagem. Exemplo:

WORKDIR /app

WORKDIR /appÉ a instrução no Dockerfile WORKDIR, usada para definir o diretório de trabalho dentro do contêiner. Aqui está uma explicação detalhada dos parâmetros deste comando:

  • /app: Este é o caminho para o diretório de trabalho a ser definido. Neste exemplo, /apprepresenta o diretório no diretório raiz dentro do contêiner app.

Resumindo, WORKDIR /appa função do comando é definir o diretório de trabalho dentro do contêiner para /appo diretório. Isso significa que nos comandos subsequentes, se o caminho completo não for especificado, os caminhos relativos serão /appresolvidos em relação ao diretório. Isso facilita a manipulação e o gerenciamento de arquivos no contêiner.

EXPOR

EXPOSEA diretiva é usada para declarar a porta que o contêiner precisa escutar durante a execução. Exemplo:

EXPOSE 8080

EXPOSE 8080é uma diretiva em um Dockerfile EXPOSEque declara a porta de rede que o contêiner escutará durante a execução. Aqui está uma explicação detalhada dos parâmetros deste comando:

  • 8080: Este é o número da porta de rede a ser declarado. Neste exemplo, 8080representa o número da porta de rede que o contêiner irá escutar.

Para resumir, EXPOSE 8080o que o comando faz é declarar uma porta que o contêiner escutará durante a execução, 8080para que outros contêineres ou hosts possam se comunicar com o contêiner por meio dessa porta. Esta declaração não mapeia automaticamente a porta do contentor para o anfitrião.É necessário utilizar -pparâmetros ao executar o contentor para realizar o mapeamento da porta.

DMC

CMDAs diretivas são usadas para especificar comandos a serem executados quando o contêiner for iniciado. Várias CMDinstruções podem ser usadas, mas apenas a última entra em vigor. Exemplo:

CMD ["npm", "start"]

CMD ["npm", "start"]É uma diretiva no Dockerfile CMDusada para definir o comando padrão a ser executado quando o contêiner for iniciado. Aqui está uma explicação detalhada dos parâmetros deste comando:

  • ["npm", "start"]: Este é o comando padrão a ser executado. Neste exemplo, npm starté um comando comum usado para iniciar um aplicativo Node.js.

Resumindo, CMD ["npm", "start"]a função do comando é definir o comando padrão a ser executado quando o contêiner for iniciado npm start. Isso significa que quando o contêiner for iniciado, ele executará automaticamente npm starto comando para iniciar o aplicativo Node.js. Se outros comandos forem fornecidos ao executar o contêiner, o comando padrão será substituído.

Etapas e considerações para construir uma imagem

As etapas para construir uma imagem são as seguintes:

  1. Crie um novo Dockerfile e defina o processo de construção da imagem nele.
  2. Use o comando no terminal docker buildpara construir a imagem, especificando o caminho para o Dockerfile.

Ao construir uma imagem, você também precisa prestar atenção ao seguinte:

  • Cada instrução cria uma nova camada de imagem, então tente juntar operações semelhantes para reduzir o número de camadas de imagem.
  • Use mecanismos de cache apropriados para evitar downloads e instalações repetidos de dependências.
  • Tente usar imagens de base oficiais ou imagens verificadas e mantidas.

Caso de exemplo

Aqui está um exemplo de Dockerfile que demonstra como construir uma imagem de um aplicativo Node.js simples:

# 使用Node.js官方基础镜像
FROM node:14

# 设置工作目录
WORKDIR /app

# 复制项目文件到镜像中
COPY package.json .
COPY package-lock.json .

# 安装依赖
RUN npm install

# 复制应用代码到镜像中
COPY . .

# 暴露应用的端口
EXPOSE 3000

# 启动应用
CMD ["npm", "start"]

Neste exemplo, primeiro FROMespecificamos a imagem base como Node.js versão 14 usando a diretiva. Em seguida, use WORKDIRo comando para definir o diretório de trabalho /appe copiar os arquivos do projeto para a imagem. Em seguida, use RUNo comando para instalar as dependências e, em seguida, use COPYo comando para copiar o código do aplicativo para a imagem. Finalmente, use EXPOSEa diretiva para declarar a porta do aplicativo e use CMDa diretiva para especificar o comando para iniciar o aplicativo.

Resumir

Dockerfile é o arquivo chave que define uma imagem Docker. Ao escrever um Dockerfile, podemos definir e construir uma imagem Docker personalizada para atender às necessidades específicas do aplicativo. Este artigo apresenta a estrutura básica e as instruções comuns do Dockerfile e fornece um exemplo de caso para demonstrar como construir uma imagem simples de aplicativo Node.js.

Se quiser aprender e compreender mais o uso e as técnicas mais avançadas do Dockerfile, você pode consultar os seguintes recursos:

  • Documentação oficial do Docker: https://docs.docker.com/engine/reference/builder/
  • Práticas recomendadas do Dockerfile: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

Acho que você gosta

Origin blog.csdn.net/qq_51447496/article/details/132825328
Recomendado
Clasificación