Lanzamiento de código Docker

Introducción a Docker:

  1. En comparación con las máquinas virtuales, Docker tiene una pequeña ocupación de espacio, una velocidad de inicio rápida (en segundos) y un alto grado de integración , lo que puede evitar efectivamente problemas de incompatibilidad de versiones.

  2. Qué es la duplicación : la duplicación es la unificación de un grupo de capas de solo lectura. Excepto que la capa inferior no apunta, cada capa apunta a su capa principal. La tecnología del sistema de archivos unificado (Union? File System) puede integrar diferentes capas en un sistema de archivos, proporcionando una perspectiva unificada para estas capas, ocultando así la existencia de múltiples capas. Desde la perspectiva del usuario, solo hay un sistema de archivos. Cada capa del espejo no se puede escribir, y es una capa de solo lectura.
    Qué es un contenedor : la definición de un contenedor es casi lo mismo que una imagen, y también es una vista unificada de una pila de capas. La única diferencia es que la capa superior del contenedor es legible y grabable. Puntos clave: contenedor = espejo + capa de lectura y escritura, y la definición del contenedor no menciona si se debe ejecutar el contenedor.
    Se recomienda regresar después de la práctica para comprender la diferencia entre los contenedores acoplables y las imágenes.

  3. Operaciones comunes
    imágenes de docker: ver todas las imágenes
    docker rmi image-id: eliminar imágenes
    docker ps -a: ver todos los contenedores
    docker rm container-id: eliminar contenedores
    docker adjuntar id-contenedor: ingrese al contenedor (ahora básicamente use exec, salga sin cerrar el contenedor )
    Docker registra id-contenedor Ver la salida interna de la
    etiqueta del docker del contenedor imageid: nombre de etiqueta: etiqueta Modificar el nombre de la imagen
    docker commit: Convertir la capa de lectura-escritura del contenedor en una capa de solo lectura, de modo que un contenedor se convierta en una imagen inmutable .

  4. alpino

Texto: lanzamiento del proyecto Django

1. Crear un árbol de archivos

componer ——
downline (fuera de línea)
—Dockerfile (archivo de imagen de compilación)
—pip.conf (velocidad de descarga de pip acelerada)
—AIRS (archivo de proyecto)
—requirements.txt (directorio de instalación)
—start.sh (archivo de inicio)
——linea (En línea)
2. .git clone *** Almacene el archivo del proyecto en AIRS
3. .cp ./AIRS/requireme ./requirements Guarde el archivo de requisitos que se instalará en el mismo directorio que el Dockerfile
4. Escriba el archivo pip.conf vim pip .conf


[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
~                                                        

5. Escriba start.sh vim start.sh

python manage.py runserver 0.0.0.0:8000

6. Escribe Dockerfile

#基础镜像 docker pull python:3.6
FROM python:3.6		
#定义环境变量
ENV PYTHONUNBUFFERED 1
#将pip.con转移到新镜像的 /root/.pip/pip.conf
COPY pip.conf /root/.pip/pip.conf
#将项目存放到/app文件夹下
COPY AIRS/ /app
#将需要下载的requirements.txt放入工作目录/app下
COPY requirements.txt /app/requirements.txt
#开始下载依赖包
RUN pip install -r /app/requirements.txt
#确定工作目录
WORKDIR /app

#将启动文件放入镜像
copy ./start.sh /app/start.sh
RUN chmod +x /app/start.sh
CMD ["sh", "start.sh"]

7. Crear una imagen

#docker build -t="用户名/镜像名称:版本(tag) "   .(当前目录)
docker build -t="horn/airs:v1.0" .

Inserte la descripción de la imagen aquí

8. Inicie el contenedor

#-d 后台运行
#-i 打开STDIN,用于控制台交互
#-t 分配tty设备,该可以支持终端登录,默认为false
#-p  指定容器暴露的端口
#-u 指定容器的用户
#--name 给容器起别名
[root@horn downline]# docker run -d -p 1935:8000  horn/airs:v1.0  python manage.py runserver 0.0.0.0:8000
#显示所有容器
docker ps -a 

Inserte la descripción de la imagen aquí

9. Inicio exitoso, pero externamente inaccesible
Método 1: Modificar archivos en el contenedor copiando, desventajas (problemas)

#将当前目录settings.py 复制到 containerid:/app/推荐系统/settings.py
docker cp ./settings.py 7ed:/app/推荐系统/settings.py

Método dos: ingrese directamente el contenedor para modificar el archivo de configuración, la desventaja es que vim necesita ser instalado, aumentando la huella del contenedor

docker run -i –t centos /bin/bash
or
docker exec  -it container-id /bin/bash  
#获取docker镜像root权限
sudo docker exec -ti -u root container-id  /bin/bash 

#退出后重启容器: docker restart container

10. Docker warehouse
(1) inicio de sesión de docker
Inserte la descripción de la imagen aquí

(2) Modifique el nombre de la imagen de acuerdo con la cuenta acoplable-> nombre de usuario / nombre de la imagen

docker tag imageid:tag name:tag

Inserte la descripción de la imagen aquí
(3) Almacene la imagen en el almacén acoplable

docker push 用户名/镜像名

Inserte la descripción de la imagen aquí

11. Modificar la imagen

sudo docker commit -m 'modify settings.py' -a "docker horn1998" 9c54 horn1998/airs:v2.0
Entre ellos, -m para especificar la información de descripción presentada, la misma que la herramienta de control de versiones que usamos; -a puede especificar la información de usuario actualizada; seguido de la ID 9c54 del contenedor utilizado para crear el espejo ; finalmente especifique el nombre del almacén del espejo objetivo y la información de etiqueta . Después de la creación exitosa, se devolverá la información de ID de esta imagen . Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
12. docker-compose
1. Instalación rápida

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

2. Interpretación variable

  • imagen: especifique el nombre o ID de la imagen. Si la imagen no existe localmente, Compose intentará extraer la imagen
image: python:3.6-alpine
  • construir: construir una imagen basada en Dockerfile
    • args: define las variables de entorno necesarias en el archivo sh durante el proceso de compilación, pero se cancelará después de que la compilación sea exitosa
e1:build: .	#当前目录下寻找Dockerfile,如果同时指定了build, image,则Compose会构建镜像并且把镜像命名为image对应的名字
e2:build:
		context:.
		args:
			build:1	
			password: secret		
  • comando: puede anular el comando predeterminado ejecutado después de iniciar el contenedor
command: python manage.py runserver 0.0.0.0:8000
  • depende de: Se requiere la secuencia de inicio del contenedor, controle la secuencia de inicio del contenedor para evitar fallas de inicio debido a problemas de dependencia del contenedor
depends_on:
	-db #其它服务名称
  • CMD: después de iniciar el contenedor, proporcione los comandos y parámetros predeterminados (no necesariamente se ejecutarán, pero el predeterminado) se ejecutará detrás de los parámetros para reemplazar
    CMD para proporcionar algunos comandos y parámetros cuando el contenedor se está ejecutando, el uso es el siguiente: El
    primer uso: ejecutar un ejecutable Archivar y proporcionar parámetros.
    CMD ["sh", "start.sh"]
    El segundo uso: especificar parámetros para ENTRYPOINT.
    CMD ["param1", "param2"] El
    tercer uso (forma de shell): el comando ejecutado por el método de "/ bin / sh -c".
    CMD ["/ bin / echo", "esta es una prueba de eco"]
    Un dockerfile solo puede tener como máximo un cmd, si hay varios, solo el último tendrá efecto.

  • PUNTO DE ENTRADA: se ejecuta cuando se inicia el contenedor (se ejecutará)

  • La diferencia entre el punto de entrada y el cmd es
    generalmente el corchete de entrada en forma de corchetes como el comando de ejecución predeterminado después de que se inicia el contenedor acoplable, que contiene la parte sin cambios, la parte variable como el parámetro del comando puede usar la forma de cmd para proporcionar la versión predeterminada El parámetro predeterminado utilizado cuando no hay ningún parámetro en ejecución. Si queremos usar los parámetros predeterminados, ejecutamos directamente, de lo contrario queremos usar otros parámetros, agreguemos parámetros para ejecutar.
    Enlace original: https://blog.csdn.net/u010900754/article/detaills/78526443
  • external_links: conectarse a contenedores que ya no están definidos en docker-compose.yml
  • enlaces: resuelve el problema de conexión entre contenedores
  • puertos: la etiqueta del puerto asignado
ports:
		- "8000:8000"
  • El
    volumen del volumen garantiza la persistencia de los datos de Docker, incluso si los datos no terminan con el final del contenedor, los datos existen en la máquina host, ya sea en un directorio específico del host o utilizan el volumen administrado por Docker.
volumes:	
		#此时docker将自动创建一个匿名的volume,并将其挂载到container中的/mysql目录。
		- /var/lib/mysql
		#如果文件不存在,则docker会自动创建
		- /opt/data:/var/lib/mysql

3. Código de muestra

version: '2'
services:
                ssm:
                        build: .
                        ports:
                                - "1935:8000"
                        image: horn1998/ssm:v2.0
                        command: sh start.sh
                        depends_on:
                               - mysql
                        volumes:
                               - /opt/data:/app/data
                        links:
                               - mysql
                mysql:
                        image: mysql:latest
                        ports:
                                - "3306:3306"
                        command: service mysql start

4. Comience a componer:

docker-compose up -d
Publicado 16 artículos originales · Me gusta1 · Visitas 383

Supongo que te gusta

Origin blog.csdn.net/qq_41174940/article/details/86107999
Recomendado
Clasificación