Manual de línea de comando (CLI) para usar Docker
Este es un manual de comandos para controlar Docker usando CLI (Interfaz de línea de comandos) en un entorno de shell sin usar la GUI de Docker. Presentamos cómo crear y controlar imágenes de Docker, crear y controlar contenedores de Docker y guardar y cargar imágenes o contenedores.
permiso denegado al intentar conectarse al socket del demonio Docker
Cuando instala Docker e intenta ejecutar comandos relacionados con Docker, se produce un error de permiso relacionado con el acceso a /var/run/docker.sock
. Desde una perspectiva del sistema, las acciones de Docker parecen requerir privilegios de “root”.
1
2
3
$ docker images -a
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json?all=1": dial unix /var/run/docker.sock: connect: permission denied
Utilice el siguiente comando para otorgar acceso a su cuenta de Ubuntu a /var/run/docker.sock
.
1
sudo chmod 666 /var/run/docker.sock;sudo chown -R ${USER}:users /var/run/docker.sock
Imagen
Crear imagen de Docker
Lo primero que debe hacer para utilizar Docker puede ser crear una imagen de Docker. Puede crear una imagen de Docker con el siguiente comando. Este comando crea una imagen de Docker basada en el Dockerfile
que escribió.
1
2
3
4
5
6
7
8
9
# build general
docker build -f <Dockerfile> -t <tag> .
# build without cache
docker build -f <Dockerfile> --no-cache -t <tag> .
# -----------------------------------------------
# example
docker build -f Dockerfile -t img-my .
Enumera las imágenes de Docker y elimínalas
A continuación se muestra el comando para ver y eliminar la lista de imágenes de Docker registradas en el sistema.
1
2
3
4
5
# list
docker images -a
# remove
docker rmi <repository name>
Eliminar caché de imágenes de Docker
Si repite la compilación de la imagen de Docker mientras modifica el “Dockerfile”, el tiempo de compilación será menor que cuando se crea la imagen por primera vez. Esto es posible porque Docker tiene una estructura en capas y las partes sin cambios se almacenan en caché en el sistema. Sin embargo, el contenido almacenado en caché ocupa espacio de almacenamiento. El comando para eliminar el caché de Docker es el siguiente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# remove docker cache
docker system prune -a
# -----------------------------------------------
# example
$ docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted build cache objects:
kxgva6ktfwea5hiatrfmgyeq3
...
c5tvqn2p53ledfjz4nqyrbl1g
gtdusijog41t1972eh4oggk37
Total reclaimed space: 15.34GB
Envase
Crear contenedor a partir de imagen
Si ha creado una imagen de Docker, este es el comando para crear un contenedor basado en la imagen.
1
2
3
4
5
docker run -d -it --name <container name> -p <ubuntu machine port>:<docker port> <image name>
# -----------------------------------------------
# example
docker run -d -it --name cond-my -p 43389:3389 -p 48080:8080 -p 44000:4000 -p 422:22 img-my
Enumere los contenedores Docker y elimínelos
Si ejecuta por primera vez un contenedor Docker con el comando “ejecutar”, se crea un contenedor. También puede verificar el estado de los contenedores Docker y enumerarlos mediante el comando ps
. También puede eliminar contenedores Docker con el comando rm
.
1
2
3
4
5
6
# list
docker ps -a
# remove
docker rm <container id>
Iniciar, detener, adjuntar
Si encuentra el ID del contenedor Docker buscando en la lista de Docker, puede usar el comando start
para iniciar y detener el contenedor Docker (stop
) e ingresar dentro de Docker (attach
).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# start stopped container
docker start <container id>
# start stopped container & enter container
docker start -i <container id>
# stop running container
docker stop <container id>
# enter running(started) container
docker attach <container id>
# pass to commands to running container
docker exec -it <container names> <commands>
Guardar/cargar imagen de la ventana acoplable
Exportar imagen de Docker a un archivo
En mi caso utilizo la función Docker de Synology NAS. Synology básicamente admite la capacidad de crear contenedores basados en imágenes registradas en Docker Hub. Sin embargo, como quería utilizar la imagen de Docker creada en base al Dockerfile
como contenedor, guardé la imagen creada en la máquina Ubuntu como un archivo y la cargué en Synology Docker.
El siguiente comando guarda la imagen de Docker registrada en el sistema como un archivo tar.
1
2
3
4
5
docker save -o <file name> <image name>
# -----------------------------------------------
# example
docker save -o img-my.tar img-my
Cargar imagen de Docker desde un archivo de imagen
El siguiente comando carga la imagen de Docker en formato de archivo tar en el sistema.
1
2
3
4
5
6
docker load -i <file name>
# -----------------------------------------------
# example
docker load -i img-my.tar
Exportar contenedor Docker a imagen
Dependiendo de la situación, es posible que no sea posible configurar el entorno en la imagen solo con el contenido descrito en el Dockerfile
. Por lo tanto, a veces es posible que necesite crear una imagen de un contenedor Docker configurado manualmente. El siguiente comando convierte un contenedor Docker en una imagen.
1
2
3
4
5
docker commit <container name> <image name = repository name>:<tag>
# -----------------------------------------------
# example
Referencias
- Extraer y cargar la imagen de Docker: https://dongle94.github.io/docker/docker-image-extract/