Directorio de artículos
- Prefacio
- 1. Creación y eliminación de contenedores
-
- 1.1 Ver imagen
- 1.2 Ver el contenedor
- 1.3 Iniciar el contenedor
- 1.4 Verificar el estado y cambiar al estado activo
- 1.5 Detenga el contenedor
- 1.6 Descargar imagen centos7
- 1.7 Crear un contenedor centos7
- 1.8 Verifique qué archivos están en el directorio raíz del espejo centos7
- 1.9 Entrar en la vista de contenedor
- 2. Exportación e importación de contenedores
- Tres. Eliminación por lotes
-
- Primero filtre la lista de contenedores
- Agregue el comando de eliminación, ejecute a través del entorno bash
- 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
-
- 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
- La máquina host crea CDE, ver el espacio del contenedor
- Ver en el contenedor, lo mismo existe
- 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
- V. Interconexión de contenedores
-
- Cree y ejecute el contenedor llamado web1, y el número de puerto se asigna automáticamente
- 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
- Ingrese la prueba del contenedor web22
- Escenario: deje que la aplicación web12 use web11 sin exponer web12
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.
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
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 /]#