Dia 04 Docker container

Dia 04 Docker container

1. Comando do contêiner

docker run 镜像id 新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id 删除指定容器
docker start 容器id #启动容器
docker restart容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器

Nota: Só podemos criar um container se tivermos um espelho, Linux, baixe o espelho centos para aprender

docker containerExistem vários comandos

Usage:	docker container COMMAND

Manage containers

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
.....

2. Crie um novo contêiner e comece

docker run [可选参数] image ou docker container run [可选参数] image

Descrição do Parâmetro

nome do parâmetro Função de parâmetro
–Name = 'Nome' Defina um nome para o contêiner iniciadodocker run --name nginx -d nginx:1.19.5
-d Execute em modo daemon, execute em modo de segundo plano
-isto Execute interativamente, entre no contêiner para visualizar o conteúdo
-p Especifique a porta do contêiner -p 8080 (host): 8080 (contêiner)docker run -d -p 8099:80 nginx:1.19.5
-P (maiúsculas) Porta designada aleatoriamentedocker run -d -P nginx:1.19.5

Sobre -d

Use docker run -dcriado em background e inicie o nome centosda embarcação, através do docker pscomando não encontra a embarcação em operação pelo docker ps -acomando find parou de rodar o centoscontainer.

Então, surge a dúvida. É -dpara garantir que o contêiner esteja sendo executado em segundo plano. Por que meu contêiner para de funcionar?

Conforme mencionado anteriormente, docker run [OPTIONS] IMAGE [COMMAND] [ARG...]existe um COMMANDparâmetro, o contêiner iniciará o COMMANDcomando de execução , seu valor padrão /bin/bash. Esse contêiner em segundo plano após uma inicialização bem-sucedida, execute o COMMANDcomando diretamente fechado.

Cientes desse princípio, podemos passar no docker run -dcomando de aumento uma corrida no processo de residente de longa duração pode garantir que o contêiner não feche. Como um loop infinito

docker run -d centos /bin/sh -c "while true;do echo 6666;sleep 1;done"Imprimir 666 logs de simulação circularmente no diretório sh

3. Saia do contêiner

[root@97b50fe359e8 /]# exit 
exit
[root@hecs-x-medium-2-linux-20201118090009 ~]# 

exit #容器直接退出
ctrl +P +Q #容器不停止退出

4. Liste todos os contêineres em execução

Comando 1.docker ps

Lista os contêineres em execução

docker ps
------------------------------------------------------------------------
CONTAINER ID    IMAGE       COMMAND            CREATED       STATUS            PORTS           NAMES
faaac215cea0    centos    "/bin/bash"   23 seconds ago      Up 22 seconds                  dazzling_borg


docker ps -a  # 列出所有的容器包括 已经结束的
docker ps -a|grep nginx
------------------------------------------------------------------------
757de974c587  nginx  "/docker-entrypoint.…"  3 hours ago  Exited (0) 51 minutes ago           nginx01

docker ps -aq  # 列出所有容器的 id
docker ps -aq
------------------------------------------------------------------------
faaac215cea0
97b50fe359e8
667d29058e73
18f61570de4a
....

5. Exclua o contêiner

docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
docker rm -f $(docker ps -aq) #删除指定的容器
docker ps -a -q|xargs docker rm #删除所有的容器

6. Operações para iniciar e parar o contêiner

docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止容器(id)

Nota: O que vemos em uso docker ps -aé realmente um negócio realrecipienteEle não correu desde o fim do pino para ser destruído , mas estáColocar de lado, Quanto mais arquivado também consome muita memória. Esses contêineres arquivados nos fornecem Avisar e reiniciar

7. Insira o contêiner em execução no momento

No processo de uso do contêiner, inevitavelmente precisamos entrar no contêiner para solucionar problemas. Vamos apresentar a forma centralizada de entrar no container.

1. anexar (importante)

attach é o primeiro comando docker oficial a entrar no contêiner, mas há um problema com este comando. Quando várias janelas usam este comando para entrar no container ao mesmo tempo, todas as janelas serão exibidas simultaneamente. Se uma janela estiver bloqueada, as outras janelas não podem mais ser operadas. Quando todas as janelas saem, o contêiner termina.

image-20201201144845518

2.exec (importante)

Após a anexação, exec é lançado oficialmente com um novo comando para entrar no contêiner, que é equivalente a executar um comando no contêiner.

3.nsenter

Ele precisa ser usado com docker inspect (nos primeiros dias, quando não havia comando exec, era uma das formas mais antigas nas empresas). Docker foi desenvolvido na linguagem golang, portanto, também suporta a sintaxe padrão da linguagem go.

Não usado!

[root@instance-gvpb80ao docs]# nsenter --target $( docker inspect -f {
    
    {.State.Pid}}
nginxv1 ) --mount --uts --ipc --net --pid
mesg: ttyname failed: No such device
root@6f99ae8757f7:/#

4.ssh

Depois de excluir o uso do comando docker attach para entrar no contêiner no ambiente de produção, acredito que a primeira coisa que você pensa é ssh. Instale o servidor SSH na imagem (ou container), de forma que várias pessoas possam entrar no container sem interferir umas nas outras.Acredito que todos fazem isso no ambiente de produção atual (sem usar Docker). No entanto, não é recomendado usar ssh para entrar no contêiner do Docker depois de usar o contêiner do Docker.

A diferença

docker exec #Abra um novo terminal após entrar no contêiner atual, você pode operar nele. (Comumente usado)

docker attach # Insira o terminal onde o contêiner está executando

8. Importar e exportar contêineres

Às vezes, é necessário migrar contêineres de um sistema para outro.Neste momento, você pode usar as funções de importação e exportação do Docker, que também é um recurso importante fornecido pelo próprio Docker.

A imagem salva pela exportação só pode ser importada por importação salvar A imagem salva pela exportação só pode ser importada
por carregamento

Exportar contêiner

Exportar um contêiner refere-se à exportação de um contêiner criado para um arquivo, não importa se o contêiner está em execução ou não, você pode usar o comando docker [contêiner] export. O formato do comando é:

export Exportar o container como um espelho [export]

docker export [容器ID|容器名称]>[压缩包名称]

docker ps
--------------------------------------------
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
870a4301ce9f        centos              "/bin/bash"         7 minutes ago       Up 7 minutes                            pedantic_maxwell

docker export 870a4301ce9f>centos1.tar
--------------------------------------------

ll
--------------------------------------------
total 217148
-rw-r--r-- 1 root root 222356480 Dec  1 15:14 centos1.tar

salvar Exportar a imagem como um pacote de compressão de imagem (salvar)

docker save [镜像id|镜像名称]>[压缩包]

image-20201201152306898

parâmetro:

-o Especifica para salvar várias imagens em um pacote compactado

docker save -o save_many.tar nginx hello-world centos Escreva o nome do pacote primeiro e depois separe-o com um espaço

docker save -o save_many.tar nginx hello-world centos
ll
--------------------------------------------
total 568224
-rw-r--r-- 1 root root         0 Dec  1 15:18 centos1.tar
-rw-r--r-- 1 root root 222366720 Dec  1 15:19 save_centos.tar
-rw------- 1 root root 359482368 Dec  1 15:32 save_many.tar

commit exporta o contêiner como uma imagem

docker commit [parâmetro] [ID do contêiner] [nome da nova imagem]

-a: mantenedor designado
-m: introdução
-p: quando o contêiner é salvo, o contêiner é suspenso

Contêiner de importação

importar pacote de importação como espelho

docker import [压缩包名称] [镜像名称:Tag]

docker import centos1.tar centos:v1
--------------------------------------------
sha256:2d82ce5bce4aac4143c7718833120855dd134f814cf15571fe114fe2aaeb4a4b

docker images
--------------------------------------------
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              v1                  2d82ce5bce4a        9 seconds ago       0B
nginx               latest              bc9a0695f571        6 days ago          133MB
centos              latest              0d120b6ccaa8        3 months ago        215MB
hello-world         latest              bf756fb1ae65        11 months ago       13.3kB

carregar importar uma ou mais imagens (dependendo do pacote compactado)

docker load <[压缩包名字] == dockerload -i [压缩包名字]

[root@docker ~]#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@docker ~]# ll
total 568224
-rw-r--r-- 1 root root         0 Dec  1 15:18 centos1.tar
-rw-r--r-- 1 root root 222366720 Dec  1 15:19 save_centos.tar
-rw------- 1 root root 359482368 Dec  1 15:32 save_many.tar
[root@docker ~]# docker load < save_centos.tar 
Loaded image: centos:latest
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        3 months ago        215MB

Comparado

Qual é a diferença entre salvar e carregar e exportar e importar?

1. Salvar está relativamente completo, a exportação salva apenas a imagem.
2. O volume salvo por salvar é maior do que o volume salvo por exportação (salvar contém informações de construção ou arquivos de cache, que são mais abrangentes)
3. A importação pode ser renomeada, a carga não pode ser renomeada
4. Salvar pode salvar várias imagens, a exportação pode salve apenas um contêiner.

Quais são os cenários para salvar e exportar?

1. Geralmente use save para empacotar imagens e exportar para embalagens
2. Se for necessário construir informações históricas, save pode ser usado.

Qual é a diferença entre docker export e docker commit?

1. docker export exporta pacotes compactados
2. docker commit exporta como mirrors

9. Outros comandos comumente usados

1. Comando de início de fundo

# 命令 docker run -d 镜像名
➜ ~ docker run -d centos
a8f922c255859622ac45ce3a535b7a0e8253329be4756ed6e32265d2dd2fac6c
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
# 问题docker ps. 发现centos 停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没

2. Ver log

docker logs --help
Options:
--details Show extra details provided to logs
* -f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or
relative (e.g. 42m for 42 minutes)
* --tail string Number of lines to show from the end of the logs
(default "all")
* -t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37)
or relative (e.g. 42m for 42 minutes)
➜ ~ docker run -d centos /bin/sh -c "while true;do echo 6666;sleep 1;done" #模
拟日志
#显示日志
-tf #显示日志信息(一直更新)
--tail number #需要显示日志条数
docker logs -t --tail n 容器id #查看n行日志
docker logs -ft 容器id #跟着日志

3. Visualize as informações do processo ps no contêiner

docker top 容器id

4. Visualize os metadados da imagem

# 命令
docker inspect 容器id
#测试
➜ ~ docker inspect 55321bcae33d
[
{
    
    
"Id":
"55321bcae33d15da8280bcac1d2bc1141d213bcc8f8e792edfd832ff61ae5066",
"Created": "2020-05-15T05:22:05.515909071Z",
"Path": "/bin/sh",
...
}

10. Copie o conteúdo do contêiner para o host

.Diretório atual

docker cp 容器id:容器内路径 主机目的路径

docker cp 2ad9bd2e9f03:/home/Test/. /home/.

image-20201202203340379

docker cp 主机文件路径 容器id:容器内部路径

image-20201202195056422

Resumo das instruções do recipiente

[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo de link anti-leech. Recomenda-se salvar a imagem e carregá-la diretamente (img-JF1R0H5j-1606915442190) (https://gitee.com/A1L19/PicGO/ raw / master / PicGo / image -20201201160011696.png)]

Acho que você gosta

Origin blog.csdn.net/A1L__/article/details/110500127
Recomendado
Clasificación