Primeiros passos no Docker
目录
目标
要求
O que é
CLI 执行 Docker
Botando a mão na massa
Docker Compose
互补内容
结论
简单的形式和方向的发展,是Docker用户的最爱。 Nada de termos complicados, apenas uma abordagem fácil para que você possa usar container semstress。我们已经开发了Docker的必要条件和算法项目,但我们并没有考虑到这一点。您可以简单地了解应用程序的操作过程和容器化过程。
目录
目标
Docker 的主要目标和主要目的是推动Docker项目的发展。假装您的应用程序没有上下文,但我们会解释一下与互联网有关的不同形式,因此您可能会遇到一些实际问题,请以示例为例。 Esse artigo conciliado a conteúdo teórico que vou disponibilizar por links durante e ao te dar uma boa base do que é essa ferramenta e como ela funciona por baixo dos panos, ao fim de tudo eu espero que você seja capaz de dar seus primeiros passos criando container德都多🐳。
要求
Ter instalado:
O que é
Dockerfile
在配置方面,我们首先介绍一下Docker 镜像。请注意不要使用容器来配置应用程序。请参阅dockerfile手册中的列表或通过 montar 算法(不适用)作为 ligar es algo na tomada 的说明。
Docker 镜像
一个Docker 镜像是一个应用程序功能的集合体,它可以帮助您解决代码、图书馆、依赖和其他功能的问题。 Seu应用程序em uma 照片。
容器
想象一下,如果你在当地举办独立的节日,那么你可以在家里做一些事情,比如颜色和颜色。很快,节日来临了,您就可以开始使用它了,然后将其放入容器中,然后再重新启动应用程序功能。解决了“Na minha máquina funciona”的常见问题。
除了容器之外,容器还包括软件级别的环境、端口和隔离,以便允许执行和运行应用程序,这些应用程序依赖于不同的平台,从而在不同的平台上保持一致。可以灵活地进行开发、应用程序的植入和管理,确保应用程序的执行速度保持一致、独立于基础设施。
体积
简而言之,卷没有Docker的上下文,因此允许在主机和操作系统容器之间进行比较和持久化。提供设备管理和容器相关独立形式的信息。
例如,您可以使用银行的容器,将银行的卷存放在银行中,以保存银行的信息。Docker环境中的灵活性和一致性。
撰写
Docker Compose可以简化各种容器的 Docker 组合应用程序的管理。允许定义、配置和执行各种服务、重新编写卷YAML,并方便地执行环境复杂操作。
CLI 执行 Docker
Docker Desktop 的存在主要是为了进行配置、配置、配置、设置以及与用户的 pelo 终端进行交互,可以通过以下方式回复您的互联网问题:您可以使用命令格式来配置桌面应用程序的配置,并推荐使用文档。这个主题是假装最基础的指挥和最后的任务。
docker --help
简单来说,最重要的是,--helpDocker 中的所有操作都非常重要,并且您可以将这些操作与其他操作一起使用,而不需要任何其他操作。科曼多温度
您的所有指挥官都将在新版本中使用,以便您可以体验到指挥官的使用体验。但无论怎样,我们已经正式宣布了对未来作战行动的支持(como docker pse outros),并为未来的未来做好了准备。
Para gerenciar containers:
创建并执行容器:
docker container run nome-da-imagem
执行时列出容器:
docker container ls
列出待办事项操作系统容器(包含 parados):
docker container ls -a
辅助容器:
docker container stop nome-ou-ID-do-container
Iniciar um container parado:
docker container start nome-ou-ID-do-container
去除剂容器(deve estar parado):
docker container rm nome-ou-ID-do-container
## com a opção '-f' ele força a parada do container e em seguida o remove
Para Gerenciar Imagens:
Listar imagens locais:
docker image ls
Docker Hub 的 Baixar uma 镜像:
docker pull nome-da-imagem
构建 Dockerfile 的一部分的镜像:
docker build -t nome-da-imagem caminho-do-Dockerfile
移除 uma imagem 本地:
docker rm nome-da-imagem
Para Gerenciar Redes:
Listar redes Docker:
docker network ls
创建 Docker 网络:
docker network create nome-da-rede
连接 um 容器和 uma rede:
docker network connect nome-da-rede nome-ou-ID-do-container
Desconectar um 容器 de uma rede:
docker network disconnect nome-da-rede nome-ou-ID-do-container
Outros comandos úteis:
容器日志:
docker logs nome-ou-ID-do-container
容器的详细信息:
docker inspect nome-ou-ID-do-container
Botando a mão na massa
这篇文章主要介绍了React、Vite、Express和PostgreSQL等技术。
你的第一个 Dockerfile
没有任何指示可以提供任何有关烹饪功能的./front信息,但您可以定义烹饪或意大利面所需的图像。 O arquivo tem a seguinte estrutura:.dockerignore.gitignoreDockerfile
FROM node:18.17.0-alpine
WORKDIR /app
COPY package*.json ./
COPY . .
RUN npm install
RUN npm run build
EXPOSE 8080
CMD [ "npm", "run", "preview" ]
FROM
Aquié o ponto departida da sua imagem, onde você 定义了一个 seu 容器的基础,并且它是一个通用的镜像,并且它是一个node有意义18.17.0-alpine的镜像alpine,用于构建使用 Alpine Linux 的基础镜像。该图像是为了提高效率而流行、快速地在容器中执行应用程序的环境级别。
WORKDIR
定义容器的工作方向/app。这对于执行命令的人员来说非常重要。
COPY
Copia o arquivo package.json(e qualquer arquivo que comece com "package") do diretório local para o diretório /appno container.
第二步COPY复制所有本地目录或无容器目录的结尾/app。
RUN
执行容器操作npm install,根据具体情况安装package.json。
接下来RUN执行或命令npm run build构建应用程序。请务必使用编译和准备应用程序来执行。
EXPOSE
有关容器应用程序的信息,请参阅端口8080。这是一个自动打开的门,我们提供有关该门的信息,以便您可以在以后的应用程序中使用该图像。
CMD
定义一个命令来执行所有的容器基础图像以启动。下一步,您npm run preview将启动一个应用程序以获取所需的服务。
本文将作为您使用时的基本说明、其他问题和建议,为您提供有关基本技巧的文档。
Configuração do Vite
没有任何应用程序8080需要配置或配置vite.config.ts。您可以根据Vite文档推荐配置 以外的配置。
Criando a imagem do front
很快,Dockerfile我们就开始为我们的未来做准备。如果您没有任何主题,那么您CLI do Docker将无法通过终端访问直接操作./front并执行后续命令:
docker image build -t front .
-t您-tag可以使用图像名称和tag图像名称,例如,使用图像名称时,front可以使用与图像名称不同的方法,或者使用第二个参数来tag识别图像,以方便识别。。front:nome-da-tagtagfront:1.0- 没有终端 eu estou no diretório
./frontque é onde está odockerfileé por isso que só uso o.(ponto)。
如果您使用了 seu 终端,则可以使用 Docker 来执行以下操作Dockerfile。
没有 gif 可以快速构建图像,因为没有我的电脑可以在缓存中构建图像,也没有任何问题。
Criando o container do front
在前面的图像中,将其放入容器或子容器中,然后在没有 seu 终端的情况下执行命令:
docker container run -d -p 8080:8080 front
-d: É usado para executar um container em segundo plano, ou seja, em modo “detached”。完全执行容器 Docker,并在最初的计划中启动。-p 8080:8080:将 porta 8080 do 容器与 porta 8080 do 主机进行连接。front: 是我们使用的图像名称或容器。
访问http://localhost:8080并在 seu navegador já vamos conseguir acessar o front da nossa aplicação, mas ainda falta o nosso back e banco esta no ar。
Criando uma network
Dockerdocker network允许容器隔离。由于 Docker 是容器通信的基础,因此可以保证分配系统中不同组件之间的隔离、安全和灵活性。
docker network artigo
O nome da rede vai ser
artigo😁.
Baixando a imagem do Postgres
您可以通过以下方式获取 Postgres 与 Docker Hub 的图像。首先,在 seu 终端中执行以下命令:
docker pull postgres
Criando um para persistência de bados 卷
银行和银行容器的执行前,是存放数据的重要因素。请确保Postgres 的所有数据或用于interrompido 或exclído 的容器。在 seu 终端中执行以下命令:
docker volume create pgdata
O nome do volume vai ser
pgdata.
执行 Postgres 容器
com 卷 criado,agora você pode executar o 容器 Postgres。首先,在 seu 终端中执行以下命令:
docker container run -d --name postgres --network=artigo -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_HOST=postgres -e POSTGRES_DATABASE=postgres -e POSTGRES_PASSWORD=password -v pgdata:/var/lib/postgresql/data postgres
-d:在第二个计划中执行容器操作。--name postgres:com essa opção,você pode dar um nome ao seu 容器。 Neste caso,estamos nomeando o 容器como“postgres”。--network:在执行过程中使用特定的容器开发连接。-p 5432:5432:将 5432 端口的容器与主机的 5432 端口进行映射。 5432 门和 Postgres 门。-e POSTGRES_USER=postgres:可以通过 POSTGRES_USER 来定义环境变量user。由userPostgreSQL 提供postgres。-e POSTGRES_HOST=postgres:正常情况下,请参考 PostgreSQL 银行托管主机的执行情况。您可以在 Docker 容器中执行 PostgreSQL、容器名称POSTGRES_HOST或容器 IP,依赖于通信配置。-e POSTGRES_DATABASE=postgres:我们对银行的具体名称进行了操作,并提供了连接。-e POSTGRES_PASSWORD=sua-senha:可以使用 POSTGRES_PASSWORD 来定义环境变量。-v pgdata:/var/lib/postgresql/data:可以定义前部的pgdata卷或本地 Postgres 服务器的数据。-
postgres:它是容器中使用的图像名称。 -
-d(你--detach) -
-p(你--publish) -
-e(你--env) -
-v(你--volume)
Criando a imagem do back
如果没有任何指令,则无法Dockerfile启动应用程序。/backEXPOSECMD
FROM node:18.17.0-alpine
WORKDIR /app
COPY package*.json ./
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "run", "start"]
没有终端、访问或直接./back执行或后续命令:
docker image build -t back .
Criando o container do back
Segredo algum,vamos fazer 或 mesmo processo que fizemos com 或容器front。返回图像后,将其放入容器或容器中,然后在没有 seu 终端的情况下执行命令:
docker container run -d --network=artigo -p 3000:3000 back
集市上的应用程序功能已完成,可以访问http://localhost:8080并删除和删除。
Docker Compose
Podemos notar a Quantidade de comandos no end que que essa pequena aplicação fosse ao ar, com o compose vamos encurtar todo esse processo colocando tudo em um so lugar, facilitando o nosso desenvolvimento. A estrutura do compose.yamllembra um pouco o Dockerfile。
version: '3'
services:
back:
build: ./back/.
ports:
- 3000:3000
depends_on:
- postgres
front:
build: ./front/.
ports:
- 8080:8080
postgres:
image: postgres:latest
environment:
POSTGRES_USER: postgres
POSTGRES_HOST: postgres
POSTGRES_PASSWORD: password
POSTGRES_DATABASE: postgres
volumes:
- api-postgres-data:/var/lib/postgresql/data
ports:
- 5432:5432
volumes:
api-postgres-data:
version: '3':具体来说,Docker Compose 的语法是美国发送的。 Neste caso,同第 3 章。services:定义要执行的服务。back:配置“返回”服务。build: ./back/.:具体而言,“后退”服务的图像是直接构建部分的./back/。ports: - 3000:3000:将 porta 3000 do 容器映射到 porta 3000 do 主机。depends_on: - postgres:Indica que o serviço“back”depende do serviço“postgres”,garantindo que o serviço“postgres”seja iniciado antes do serviço“back”。
front:配置“前端”服务。build: ./front/.:具体而言,“前线”服务的图像是直接构建的./front/。ports: - 8080:8080:Mapeia a porta 8080 do contêiner para a porta 8080 do 主机。
postgres:配置“postgres”服务。image: postgres:latest:美国官方最近发布了 PostgreSQL 没有 Docker Hub 的图片。environment::定义 PostgreSQL 配置环境变量。POSTGRES_USER,POSTGRES_HOST,POSTGRES_PASSWORD, ePOSTGRES_DATABASEsão configurados para criar um usuário, host, senha e banco de bados no PostgreSQL.
volumes: - api-postgres-data:/var/lib/postgresql/data:Mapeia um 卷 chamado“api-postgres-data”是 PostgreSQL 容器的直接操作。ports: - 5432:5432:将 5432 端口映射到 5432 端口主机上。volumes::
- 定义 um 卷 chamado“api-postgres-data”。此卷用于 PostgreSQL 数据库的持久化,允许在数据库中保留内存信息或用于删除的容器。
Compose 执行前的准备工作是完成容器前面的操作,而不是与端口冲突。无需终端访问或直接进行项目,即可使用compose.yaml或继续使用:
docker compose up -d
建造演示的过程,是建造 3 个容器的关键,没有任何速度可以建造现金。
Espero que você tenha percebido or quão maravilhoso é o Compose, a quantidade de trabalho que ele te poupa éaburdo. Apenas com comando ele cria a imagem do front and back, cria umcontainer apartir da imagem criada para o front, back e para o postgres e ainda cria uma network para que oscontainer possam se comunicar entre eles.存在多种功能之外的选项以及无法撰写的选项,因此您可能会感到好奇,或者无法做到这一点。
互补内容
Jeferson Fernando提供了一份官方文档,其中包含与朋友一起进行的研究过程,以及有关LINUX技巧的现有信息。完美的解决方案 :Livro Descoplicando o Docker
Treinamento completo no Youtube :
Descomplicando Docker
Para quem é muito agoniado, tem or resumo:
Tudo o que você precisa saber sobre docker em 2h
Para quem quer se especializar um pouco mais:
Roadmap Docker(英文)
结论
Esse conteúdo foi o resultado de um aglomerado de anotações andabstrações que tive durante meu processo de estudo sobre docker, aparte que mais bati cabeça foi com o network, durante os meus testes eu ficava tentando fazer os container se comunicarem entre eles, mas um não Encontrava o outro,foi uma grande dor de cabeça,mas no fim deu tudo certo。阿尔古玛斯解释了如何发送正确的信息,因为没有直觉可以帮助您了解有关阿尔古斯的主题。
请注意,请明确错误,请提供反馈,请告诉我没有Twitter或没有 Discord da He4rt的情况。
Obrigado por ler ate aqui.
文章来源:https://dev.to/clintonrocha98/primeiros-passos-no-docker-m0k




