Artículos de contenedor de comandos de operación básica de Docker

Directorio de artículos

Prefacio

¿Qué es un contenedor Docker?

El contenedor se inicia en función de la imagen y uno o más procesos se pueden ejecutar en el contenedor. Podemos pensar que la imagen es la fase de construcción o empaquetado del ciclo de vida de Docker, mientras que el contenedor es la fase de inicio o ejecución. El contenedor se inicia en base a la imagen. Una vez que se inicia el contenedor, podemos iniciar sesión en el contenedor para instalar el software o servicio que necesitamos.

Inserte la descripción de la imagen aquí

Docker toma prestado el concepto de contenedores estándar. Los contenedores estándar transportan mercancías por todo el mundo, Docker aplica este modelo a su propio diseño, la única diferencia es que los contenedores transportan mercancías, mientras que Docker transporta software. Al igual que un contenedor, a Docker no le importa lo que hay en el contenedor cuando realiza las operaciones anteriores, ya sea un servidor web, una base de datos o un servidor de aplicaciones. Todos los contenedores se "cargan" de la misma manera.

1. Creación y eliminación de contenedores

1.1 Ver imagen

[root@docker2 opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED         SIZE
nginx               latest              7e4d58f0e5f3        7 days ago         133MB
[root@docker2 opt]# docker create -it nginx:latest /bin/bash
d9850fa13e2e1422fc9e0ce690d30f6977852f8d6bb858d51e151ebe09d3e891

1.2 Ver el contenedor

[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d9850fa13e2e        nginx:latest        "/docker-entrypoint.…"   14 seconds ago      Created                                 heuristic_mccarthy

1.3 Iniciar el contenedor

[root@docker2 opt]# docker start d9850fa13e2e
d9850fa13e2e

1.4 Verificar el estado y cambiar al estado activo

[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d9850fa13e2e        nginx:latest        "/docker-entrypoint.…"   2 minutes ago       Up 4 seconds        80/tcp              heuristic_mccarthy

1.5 Detenga el contenedor

[root@docker2 opt]#  docker stop f04aeae9e8d1

1.6 Descargar imagen centos7

Buscar recursos primero

[root@docker2 opt]# docker search centos7
NAME                               DESCRIPTION
ansible/centos7-ansible            Ansible on Centos7
flyceek/centos7-jdk                centos7-jdk
ryanj/centos7-s2i-nodejs           STOP RUNNING YOUR APP BUILDS AS ROOT
paigeeworld/centos7                Centos7 with apache, iperf3, nmap, s

Descargar según el nombre del espejo

[root@docker2 opt]# docker pull paigeeworld/centos7
Using default tag: latest
latest: Pulling from paigeeworld/centos7
Image docker.io/paigeeworld/centos7:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
a3ed95caeb02: Pull complete

Espejo de vista

[root@docker2 opt]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED           SIZE
nginx                 latest              7e4d58f0e5f3        7 days ago          133MB
paigeeworld/centos7   latest              4cbe7aa905e7        6 years ago         382MB

1.7 Crear un contenedor centos7

[root@docker2 opt]#  docker create -it paigeeworld/centos7 /bin/bash
f04aeae9e8d172df5c1efcc5344516f31b4eabd2bc7b8b4ca3fb34535ec86b91
查看容器状态
[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
f04aeae9e8d1        paigeeworld/centos7   "/bin/bash"              2 minutes ago       Created                                 distracted_ptolemy
d9850fa13e2e        nginx:latest          "/docker-entrypoint.…"   11 minutes ago      Up 9 minutes        80/tcp              heuristic_mccarthy

Abre el contenedor

[root@docker2 opt]#  docker start f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
f04aeae9e8d1        paigeeworld/centos7   "/bin/bash"              3 minutes ago       Up 3 seconds                            distracted_ptolemy
d9850fa13e2e        nginx:latest          "/docker-entrypoint.…"   12 minutes ago      Up 10 minutes       80/tcp              heuristic_mccarthy

Detener contenedor

[root@docker2 opt]#  docker stop f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                       PORTS               NAMES
f04aeae9e8d1        paigeeworld/centos7   "/bin/bash"              4 minutes ago       Exited (137) 3 seconds ago                       distracted_ptolemy
d9850fa13e2e        nginx:latest          "/docker-entrypoint.…"   13 minutes ago      Up 11 minutes                80/tcp              heuristic_mccarthy

1.8 Verifique qué archivos están en el directorio raíz del espejo centos7

[root@docker2 opt]# docker run paigeeworld/centos7 /usr/bin/bash -c ls /
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

Es equivalente al comando de ejecución de docker anterior que ejecutó y creó un contenedor centos7, luego lo ejecutó, verificó su directorio raíz y luego cerró su operación

[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS                          PORTS               NAMES
bb475fdf03ed        paigeeworld/centos7   "/usr/bin/bash -c ls…"   About a minute ago   Exited (0) About a minute ago                       determined_borg
f04aeae9e8d1        paigeeworld/centos7   "/bin/bash"              8 minutes ago        Exited (137) 3 minutes ago                          distracted_ptolemy
d9850fa13e2e        nginx:latest          "/docker-entrypoint.…"   16 minutes ago       Up 14 minutes                   80/tcp              heuristic_mccarthy

Operar en un dispositivo sin duplicación centos7

El comando docker run se ejecutó primero para descargar automáticamente el archivo de imagen, y luego creó un contenedor centos7, luego lo ejecutó, verificó su directorio raíz y luego cerró su operación

[root@SERVER 10 opt]# docker run paigeeworld/centos7 /usr/bin/bash -c ls /
Unable to find image 'paigeeworld/centos7:latest' locally
latest: Pulling from paigeeworld/centos7
Image docker.io/paigeeworld/centos7:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
a3ed95caeb02: Pull complete
7235103339cf: Pull complete
c962e85f182c: Pull complete
e945c72281a4: Pull complete
bd558d66c6e0: Pull complete
b6d31d07a319: Pull complete
Digest: sha256:356b32d72680f0b9e0489af16961b2c3de74e18cbd391ffcf5ab085997fedf2b
Status: Downloaded newer image for paigeeworld/centos7:latest
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@SERVER 10 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS               NAMES
2c35c9b8be3b        paigeeworld/centos7   "/usr/bin/bash -c ls…"   17 seconds ago      Exited (0) 17 seconds ago                       dreamy_panini

1.9 Entrar en la vista de contenedor

formato

docker exec -it   ID 号  /bin/bash
(必须先运行容器,或容器已处于运行状态)
[root@docker2 opt]# docker start f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                          PORTS               NAMES
bb475fdf03ed        paigeeworld/centos7   "/usr/bin/bash -c ls…"   24 minutes ago      Exited (0) About a minute ago                       determined_borg
f04aeae9e8d1        paigeeworld/centos7   "/bin/bash"              30 minutes ago      Up 2 seconds                                        distracted_ptolemy
d9850fa13e2e        nginx:latest          "/docker-entrypoint.…"   39 minutes ago      Up 37 minutes                   80/tcp              heuristic_mccarthy
进入容器
[root@docker2 opt]# docker exec -it f04aeae9e8d1  /bin/bash
bash-4.2# ls
bin  boot  dev	etc  home  lib	lib64  lost+found  media  mnt  opt  proc  root	run  sbin  srv	sys  tmp  usr  var
bash-4.2#

Salida del contenedor

bash-4.2# exit
exit
[root@docker2 opt]# docker stop f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                        PORTS               NAMES
bb475fdf03ed        paigeeworld/centos7   "/usr/bin/bash -c ls…"   26minutes ago      Exited (0) 4 minutes ago                          determined_borg
f04aeae9e8d1        paigeeworld/centos7   "/bin/bash"              33 minutes ago      Exited (137) 15 seconds ago                       distracted_ptolemy
d9850fa13e2e        nginx:latest          "/docker-entrypoint.…"   42minutes ago      Up 40 minutes                 80/tcp              heuristic_mccarthy

Mantenga el contenedor funcionando en segundo plano

Al establecer un bucle infinito, que el recipiente de correr todo el tiempo, demonio -d
[root @ docker2 opt] ciclo # ventana acoplable -d paigeeworld / centos7 / bin / bash -c "mientras que la verdadera; do echo hola; hecho"
c06add1ec27df716c02929b5edd893c3690247c1b0de1ac875598fffd4d78757
se encontrará con que el contenedor está siempre en Estado de ejecución
[root @ docker2 opt] # docker ps -a
ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO PUERTOS NOMBRES
c06add1ec27d paigeeworld / centos7 “/ bin / bash -c' while ...” Hace 45 segundos Hasta 44 segundos jolly_chatterjee
9cae901fe6ed paigeeworld / centos7 “/ bin / bash -c' while… ”hace 12 minutos Salió (1) hace 12 minutos fervent_feistel
bb475fdf03ed paigeeworld / centos7“ / usr / bin / bash -c ls… ”Hace 41 minutos Salió (0) hace 19 minutos determinado_borg
f04aeae9e8d1 paigeeworld / centos7 "/ Bin / bash" hace 48 minutos Salió (137) hace 15 minutos distracted_ptolemy
d9850fa13e2e nginx: último “/docker-entrypoint.…” Hace 57 minutos Hasta 55 minutos 80 / tcp heuristic_mccarthy

Dejar de ejecutar contenedor

[root@docker2 opt]# docker stop c06add1ec27d
c06add1ec27d
[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                        PORTS               NAMES
c06add1ec27d        paigeeworld/centos7   "/bin/bash -c 'while…"   3 minutes ago       Exited (137) 10 seconds ago                       joll

2. Exportación e importación de contenedores

2.1 Exportar contenedor

[root@docker2 opt]# ls
containerd  nginx  rh
[root@docker2 opt]# docker export d9850fa13e2e > nginx_c
[root@docker2 opt]# ls
containerd  nginx  nginx_c  rh
[root@docker2 opt]# scp nginx_c root@192.168.100.10:/opt
root@192.168.100.10's password:
nginx_c                              100%  129MB 130.9MB/s   00:00
[root@docker2 opt]#

2.2 Importar el contenedor en otro servidor

Primero genere una nueva imagen basada en la plantilla

[root@SERVER 10 opt]# cat nginx_c | docker import - nginx:web
sha256:b2732e94c331a809dbdac585bb8df86ec298e35a99db1f29200cdbc8d3c4d205
[root@SERVER 10 opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED         SIZE
nginx               web                 b2732e94c331        5 seconds ago       131MB
[root@SERVER 10 opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED         STATUS              PORTS               NAMES

Cargue en el contenedor según la nueva imagen

[root@SERVER 10 opt]# docker create -it nginx:web /bin/bash
95ab1d44b0c46b2f3a4ac4436b1b0236a5c6b67907fa87e78ea442907b95634e
[root@SERVER 10 opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED         STATUS              PORTS               NAMES
95ab1d44b0c4        nginx:web           "/bin/bash"         10 secondsago      Created                                 practical_lichterman
[root@SERVER 10 opt]# docker start 95ab1d44b0c4
95ab1d44b0c4
[root@SERVER 10 opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
95ab1d44b0c4        nginx:web           "/bin/bash"         4 minutes ago       Up 3 minutes                            practical_lichterman

Tres. Eliminación por lotes

Primero filtre la lista de contenedores

[root@docker2 opt]# docker ps -a | awk '{print "decker rm "$1}'
decker rm CONTAINER
decker rm c06add1ec27d
decker rm 9cae901fe6ed
decker rm bb475fdf03ed
decker rm f04aeae9e8d1
decker rm d9850fa13e2e

Agregue el comando de eliminación, ejecute a través del entorno bash

(在运行的容器不会删除,因为会报错提示,此命令用于批量删除未使用的容器)
[root@docker2 opt]# docker ps -a | awk '{print "docker rm "$1}' | bash
Error: No such container: CONTAINER
c06add1ec27d
9cae901fe6ed
bb475fdf03ed
f04aeae9e8d1

La ciruela pasa del contenedor Docker tiene el mismo efecto

docker rm $ (docker ps -a | awk '{print $ 1}') tiene el mismo efecto

docker rm -f $ (docker ps -a | awk '{print $ 1}') forzar la eliminación de todos los contenedores

4. Volumen de datos y contenedor de volumen de datos

Inserte la descripción de la imagen aquí

4.1 El volumen de datos utiliza el espacio de la computadora host y comparte espacio con la computadora host

-v volumen de datos, la ruta del host: las rutas en el contenedor se asocian entre sí y se crea un contenedor llamado WEB1 usando centos mirroring

[root@docker1 apache]# docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash
[root@443744cf30b3 /]# ls
anaconda-post.log  data1  etc   lib    media  opt   root  sbin  sys  usr
bin                dev    home  lib64  mnt    proc  run   srv   tmp  var
[root@443744cf30b3 /]# cd data1
[root@443744cf30b3 data1]# touch abc.txt
[root@443744cf30b3 data1]#

Compartir datos de archivos

[root@docker1 apache]# cd /var/www
[root@docker1 www]# ls
[root@docker1 www]# ls
[root@docker1 www]# ls
[root@docker1 www]# ls
abc.txt

La máquina host crea CDE, ver el espacio del contenedor

[root@docker1 www]# touch cde.txt
[root@docker1 www]# ls
abc.txt  cde.txt

Ver en el contenedor, lo mismo existe

[root@443744cf30b3 data1]# ls
abc.txt  cde.txt
[root@443744cf30b3 data1]#

Siempre que se cambie el volumen de datos en el host, los datos del contenedor se pueden actualizar.


4.2 Contenedor de volumen de datos


// contenedor de volumen de datos

Se proporcionan dos contenedores de volumen de datos, utilizando centos mirroring

[root@docker2 ~]# docker run  --name web100 -v  /data1 -v  /data2   -it centos  /bin/bash
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
3c72a8ed6814: Pull complete
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Status: Downloaded newer image for centos:latest
[root@bc0dbbdd3408 /]# ls
bin    data2  etc   lib    lost+found  mnt  proc  run	srv  tmp  var
data1  dev    home  lib64  media       opt  root  sbin	sys  usr
[root@bc0dbbdd3408 /]# cd data1
[root@bc0dbbdd3408 data1]# echo "12345" > test1.txt
[root@bc0dbbdd3408 data1]# cd ../
[root@bc0dbbdd3408 /]# ls
bin    data2  etc   lib    lost+found  mnt  proc  run	srv  tmp  var
data1  dev    home  lib64  media       opt  root  sbin	sys  usr
[root@bc0dbbdd3408 /]# cd data2
[root@bc0dbbdd3408 data2]# echo "45678" > test2.txt
[root@bc0dbbdd3408 data2]# ls
test2.txt
[root@bc0dbbdd3408 data2]# cd ../data1
[root@bc0dbbdd3408 data1]# ls
test1.txt
[root@bc0dbbdd3408 data1]# exit
exit

El nuevo contenedor monta el contenedor de volumen de datos web100, denominado db1

[root@docker2 ~]# docker run   -it   --volumes-from   web100    --name   db1 centos   /bin/bash
[root@0b152c50576d /]# ls
bin    data2  etc   lib    lost+found  mnt  proc  run	srv  tmp  var
data1  dev    home  lib64  media       opt  root  sbin	sys  usr

Consulte el catálogo y descubra que los datos han logrado el propósito de sincronización

[root@0b152c50576d /]# cd data1
[root@0b152c50576d data1]# ls
test1.txt
[root@0b152c50576d data1]# cd data2
bash: cd: data2: No such file or directory
[root@0b152c50576d data1]# cd data2
bash: cd: data2: No such file or directory
[root@0b152c50576d data1]# cd ../
[root@0b152c50576d /]# cd data2
[root@0b152c50576d data2]# ls
test2.txt

El contenedor de volumen de datos se utiliza para actualizar los datos del clúster WEB, siempre que se actualice un sitio.

V. Interconexión de contenedores

Cree y ejecute el contenedor llamado web1, y el número de puerto se asigna automáticamente

[root@docker2 apache]# docker run -itd -P --name web11 centos:7 /bin/bash
075e9cdd940e8a3a4d21694d1572f417c90d67bcfd60fab64f0f8a72e79b6aae

Cree y ejecute el contenedor llamado web2, enlace a web1 y comuníquese con él, y el número de puerto se asigna automáticamente

web11:web:11 名字和别名
[root@docker2 apache]# docker run -itd -P  --name web22 --link web11:web11 centos:7/bin/bash
21db10af75fe22a48b47a259a260b7d6d69336e9a2a087a6255e9e508d4f33ee
[root@docker2 apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED  STATUS              PORTS                    NAMES
21db10af75fe        centos:7            "/bin/bash"              5 seconds ago  Up 4 seconds                                 web22
075e9cdd940e        centos:7            "/bin/bash"              About a minute ago  Up About a minute                            web11

Ingrese la prueba del contenedor web22

[root@docker2 apache]# docker exec -it  21db10af75fe   /bin/bash
[root@21db10af75fe /]# ping web11
PING web11 (172.17.0.4) 56(84) bytes of data.
64 bytes from web11 (172.17.0.4): icmp_seq=1 ttl=64 time=0.077 ms
64 bytes from web11 (172.17.0.4): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from web11 (172.17.0.4): icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from web11 (172.17.0.4): icmp_seq=4 ttl=64 time=0.122 ms
64 bytes from web11 (172.17.0.4): icmp_seq=5 ttl=64 time=0.081 ms
64 bytes from web11 (172.17.0.4): icmp_seq=6 ttl=64 time=0.178 ms
64 bytes from web11 (172.17.0.4): icmp_seq=7 ttl=64 time=0.044 ms

Escenario: deje que la aplicación web12 use web11 sin exponer web12

[root@docker2 ~]# docker exec -it web11 /bin/bash
[root@075e9cdd940e /]# ping web12
ping: web12: Name or service not known
[root@075e9cdd940e /]#

Supongo que te gusta

Origin blog.csdn.net/BIGmustang/article/details/108699404
Recomendado
Clasificación