Notas de inicio rápido de Docker
1. Descripción general de Docker
1.1 Introducción básica a Docker
Docker es un motor contenedor de aplicaciones de código abierto, basado en el lenguaje Go y de código abierto que cumple con el protocolo Apache2.0, que permite a los desarrolladores empaquetar sus aplicaciones y paquetes de dependencias en una imagen portátil y luego publicarlos en el sistema operativo Linux o Windows. máquinas, también se puede lograr la virtualización. Los contenedores utilizan completamente el mecanismo sandbox y no tienen ninguna interfaz entre sí, es decir, están aislados entre sí.
Dirección del sitio web oficial: https://www.docker.com/
Dirección del documento: https://docs.docker.com/
Dirección de la biblioteca espejo: https://hub.docker.com/
Un Docker completo consta de las siguientes cuatro partes:
-
Cliente DockerClient
-
demonio Docker demonio
-
Imagen acoplable
-
contenedor DockerContainer
1.2 El significado de Docker:
Durante el proceso de desarrollo, el entorno en el que se basa el desarrollo del proyecto está completamente bien. Al entregar el paquete jar o el paquete war del proyecto al personal de operación y mantenimiento, la premisa es que la configuración del entorno de la otra máquina también está bien. Si cada uno La máquina está en Antes de ejecutar el programa, debe configurar el entorno por separado y la carga de trabajo es evidente.
Modo de implementación de proyecto tradicional: Instalar-Configurar-Ejecutar;
Modo de implementación de Docker: copiar y ejecutar;
1. Estandarización de la entrega
Al igual que el logotipo de Docker, Docker es un componente de entrega "estandarizado" en el campo de la ingeniería de software, como un contenedor para el transporte de mercancías. Como todos sabemos, los contenedores pueden empaquetar artículos de diferentes tamaños que son difíciles de transportar en un todo. Proporciona un estándar universal para el embalaje de mercancías. Camiones, trenes, cargueros y otros vehículos de transporte adoptan este estándar, lo que hace posible la estandarización centrada en los contenedores. El diseño mejora enormemente la eficiencia de la logística y el transporte.
Los entregables de software tradicional incluyen: aplicaciones, paquetes de instalación de software dependientes, documentación de configuración, documentos de instalación, documentos en línea y otros componentes no estándar. El entregable estandarizado de Docker se llama "imagen", que contiene la aplicación y el entorno de ejecución del que depende, lo que simplifica enormemente el modelo de entrega de la aplicación.
2. Construya una vez y entregue muchas veces
Las imágenes de Docker se pueden "construir una vez y entregar muchas veces". Cuando se trata de implementación de copias múltiples de aplicaciones o migración de aplicaciones, el valor de Docker puede reflejarse mejor.
Construya una vez y ejecútela en cualquier lugarEste es también el concepto de Docker;
3. Aislamiento de aplicaciones
Durante el transporte, las mercancías pueden aislarse eficazmente mediante contenedores. El mismo Docker puede aislar la interacción entre diferentes aplicaciones.
1.3 La diferencia entre Docker y VMware
Tecnología de máquina virtual:
- Además de un sistema operativo, instale y ejecute otro sistema operativo.
- Necesita virtualizar el hardware, ejecutar un sistema operativo completo y luego instalar y ejecutar software en este sistema.
- Consume muchos recursos, tiene pasos redundantes y complicados y su inicio es muy lento.
contenedor acoplable:
-
Los recursos necesarios para ejecutar el software se empaquetan en un contenedor aislado y se ejecutan directamente en el host. El contenedor en sí no tiene su propio kernel ni hardware virtual.
-
Docker es una virtualización a nivel de kernel que puede ejecutar muchas instancias de contenedores en una máquina física. Cada contenedor está aislado entre sí, tiene su propio sistema de archivos y no se afecta entre sí, lo que maximiza el rendimiento del servidor.
1.4 Composición de Docker
-
Imagen
-
Una imagen es como una plantilla: una imagen puede crear muchas instancias de contenedor;
-
Similar a los conceptos de clases y objetos en el lenguaje Java, es decir, una clase puede crear instancias de múltiples objetos.
-
-
Envase
-
Una imagen crea una instancia de una aplicación que se ejecuta de forma independiente o de un grupo de aplicaciones;
-
Se puede iniciar, iniciar, detener, eliminar. Cada contenedor está aislado el uno del otro.
-
-
Repositorio
- Un lugar centralizado para almacenar archivos de imágenes. Cada almacén contiene múltiples imágenes. Cada imagen tiene una etiqueta diferente ("etiqueta": similar a un número de versión)
- Los tipos de almacén incluyen almacenes privados y almacenes públicos. Docker Hub: (https://hub.docker.com/) es el almacén público más grande.
2. Instalación de Docker
Preparación temprana del entorno : Compré un servidor 2G de 1 núcleo de Alibaba Cloud. Para operaciones específicas e introducción, consulte la publicación del blog: https://blog.csdn.net/weixin_43155804/article/details/122813771
- Verifique el comando de la versión del sistema Linux: uname -r
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# uname -r
3.10.0-1062.18.1.el7.x86_64
# 系统内核版本为3.10.0
- Ver la configuración del sistema: cat /etc/os-release
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
-
instalar la ventana acoplable
- Desinstalar la versión anterior (si corresponde)
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
- Descargue el paquete de instalación requerido
yum install -y yum-utils
- Configurar un almacén reflejado
# 设置国外的地址(下载速度太慢) yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 设置阿里云的Docker镜像仓库(推荐使用,下载速度较快) yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- Actualizar el índice del paquete yum
yum makecache fast
- instalar la ventana acoplable
# docker-ce为社区版,docker-ee为企业版 # 该命令默认为安装最新版本 yum install docker-ce docker-ce-cli containerd.io # 如果想要安装指定版本: yum install docker-ce-<版本号> docker-ce-cli-<版本号> # 安装成功会出现 completed提示
- Iniciar ventana acoplable
systemctl start docker # 查看当前版本号,验证是否启动成功: docker version
- Descargue la imagen de Hola Mundo para probarla.
docker run hello-world
- Ver la imagen descargada
docker images
- desinstalación de la ventana acoplable
# 1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2. 删除资源 /var/lib/docker是docker的默认工作路径
rm -rf /var/lib/docker
- reinicio de la ventana acoplable
systemctl restart docker
3. Configurar la aceleración de imágenes de Alibaba Cloud
- Inicie sesión en el sitio web oficial de Alibaba Cloud y busque la columna del servicio de aceleración espejo: https://cr.console.aliyun.com/cn-beijing/instances/mirrors
- Ejecute los cuatro comandos en secuencia en la consola para completar la configuración.
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://h98xb7ko.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
4. El proceso de ejecución de Docker Run:
4.1. Hello-world ejecuta el proceso general
- Primero, buscará la imagen de hello-world en esta máquina:
- No se puede encontrar la imagen hello-world localmente
- Descargar desde remoto: extraer de la biblioteca...
- Descarga completada: pull compelte
- Ejecutándose exitosamente: ¡hola desde Docker!
4.2 Proceso de ejecución de Docker Run:
(Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-ETbIgH8Z-1652287080144) (E:\02-study notes\note Pictures\docker\ 1-pasos de ejecución de Docker.png)]
4.3 Principios subyacentes
Docker es un sistema con una estructura Cliente-Servidor. El demonio Docker se ejecuta en el host y se accede desde el cliente a través de Socket. Cuando el Docker Server (servidor) recibe la instrucción del Docker-Client (cliente), ejecutará el instrucción.Los contenedores Docker están aislados entre sí y no se afectan entre sí.。
4.4、Docker versus VM Ware
-
Docker tiene menos capas de abstracción que las máquinas virtuales
-
Docker usa el kernel del host y la VM necesita el sistema operativo invitado.
Cuando Docker crea un nuevo contenedor, no necesita recargar el kernel del sistema operativo como una máquina virtual. Utiliza directamente el sistema operativo del host. La máquina virtual necesita cargar el sistema operativo invitado. Esta operación de la máquina virtual hace que se inicie. en minutos velocidad nivelada .
5. Comandos comunes de Docker
5.1 Comandos de ayuda
docker version # 显示docker的版本信息
docker info # 显示docker的信息 包括镜像和容器数量
docker --help # 帮助命令
Puede verlo a través de la documentación de ayuda de Docker: https://docs.docker.com/reference/
5.2 Comandos de duplicación comunes
- Imágenes de Docker ver todas las imágenes en el host local
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
centos latest 5d0da3dc9764 5 months ago 231MB
# 字段解释:
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像创建的时间
SIZE 镜像的大小
# 通过docker images --help 可以查看该命令的详细使用
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all # 显示所有镜像
-f, --filter filter # 通过条件进行过滤显示
-q, --quiet # 只显示镜像的ID
- Docker buscar imagen nombre buscar imagen
# docker search 镜像名
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker search --help
Usage: docker search [OPTIONS] TERM
Search the Docker Hub for images
Options:
-f, --filter filter # 根据条件来筛选
--filter=STARS=500 # 按照STARS来筛选,筛选出数量在500之上的,这里并不是找出STARS等于500的
- Docker extraer imagen nombre descargar imagen
# docker pull 镜像名 --下载镜像
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker pull mysql # 下载mysql
Using default tag: latest # 如果命令中不写tag值,默认下载最新版本latest
latest: Pulling from library/mysql # docker images的核心:分层下载
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
# 下载指定版本:(前提是 指定的版本必须先存在于docker中)
docker pull mysql:5.7
由于docker images有分层下载,上面已经下载过mysql的最新版本,此处下载5.7版本的时候,由于有和最新版本公用的地方,在这次下载中直接显示为Already exists。5.7所独有的东西会被下载。
- eliminación de imagen de Docker RMI
docker rmi # rm 删除 i镜像(image)
docker rmi -f 条件 # 根据条件进行删除
# 批量删除
docker rmi -f 容器id # 删除指定id的镜像
docker rmi -f 容器id 容器id 容器id # 删除多个镜像
docker rmi -f $(docker images -aq) # 删除全部的镜像
# $(docker images -aq)表示显示所有的image的ID,并作为参数,传递给 -f
5.3 Comandos de contenedores comunes
Nota: Puede crear un contenedor solo después de tener una imagen. Descargue una imagen de centos para aprender.
- Descargar imagen de centos
docker pull centos
- Iniciar/salir de la duplicación
# 启动:
docker run [可选参数] 镜像名字
#参数说明
--name="Name" #容器名字 用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器的端口 -p8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口
# 启动并进入容器内部
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker run -it centos /bin/bash
[root@208950ad49e7 /]# ls 查看容器内的centos,基础版本很多命令都是不完善的
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
# 从容器中退回主机
[root@208950ad49e7 /]# exit 退出镜像服务器
- Listar todos los contenedores en ejecución
#docker ps
docker ps # 当前正在运行的容器
-a # 列出在当前正在运行的容器,+历史运行过的容器
-n=2 #显示最近创建的2个容器(最近的)
-q #只显示容器的编号
- Dos formas de salir de un contenedor
exit # 容器停止并退出
ctrl+p+q # 容器不停止,退出
- Eliminar contenedor
docker rm 容器id # 删除指定id的容器(正在运行的容器删除不了)
docker rm -f # 可以强制性删除正在运行的容器
docker rm -f $(docker ps -aq) # 删除全部容器
docker ps -a -q|xrags docker rm #先查询出所有的容器id,用管道符传递给|后面的语句,进行全部删除
- Iniciar y detener operaciones de contenedores
docker start 容器id #启动容器
docker restart 容器id # 重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
5.4 Otros comandos de uso común:
- Ver comando de registro
docker logs
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow #显示日志
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps # 显示时间戳
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
# docker logs
-tf #显示日志
--tail 10 #显示10条日志
- Ver información del proceso en el contenedor.
# docker top 容器id
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker top 6289e8425a39
UID PID PPID C STIME TTY TIME CMD
root 29143 29125 0 22:37 pts/0 00:00:00 /bin/bash
- Ver metadatos de imagen
# docker inspect 容器id
- Entra en el contenedor que me está ejecutando actualmente.
Por lo general, el contenedor se ejecuta en segundo plano, es necesario ingresar al contenedor y modificar algunas configuraciones.
# 方式1
docker exet -it 容器id
# 方式2
docker attach 容器id
la diferencia:
# docker exec 进入容器后没开启一个新的终端,可以在里面操作,是常用的进入命令
# docker attach 进入容器正在执行我的终端,不会启动新的进程
- Copie archivos del contenedor al host
# 命令
docker cp 容器id:容器内文件路径 目的路径
6. Practica
6.1 implementación de nginx
- Buscar espejo
# docker search nginx
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16754 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 165
bitnami/nginx Bitnami nginx Docker Image 125 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 48
bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 18 [OK]
rancher/nginx-ingress-controller 10
- Extraer imagen de descarga
# docker pull nginx 下载最新版本
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
- Consultar imágenes descargadas localmente
# docker images
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 4 months ago 141MB
centos latest 5d0da3dc9764 7 months ago 231MB
- Ejecutar imagen
# docker run -d --name 别名 -p 主机端口:容器端口 镜像名字
# -d # 后台运行
# -- name # 起名字
# -p 主机端口:容器端口 # 端口映射
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker run -d --name nginx01 -p 3344:80 nginx
d1e7b7a311bb2f8cd2033b1329178882c453b1ab308afa577c50e21d99fce745
- El concepto de mapeo portuario (exposición)
(Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-NDuPFkdt-1652287080146) (E:\02-Study Notes\Note Pictures\docker\ Introducción al concepto Docker\8.3 Puerto expuesto.png)]
- Ver imágenes corriendo
# docker ps
# docker ps -a # 所有运行的镜像,包括历史运行的
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d1e7b7a311bb nginx "/docker-entrypoint.…" 18 seconds ago Up 17 seconds 0.0.0.0:3344->80/tcp nginx01
- Ver y ejecutar localmente
# curl localhost:3344 可以通过本地查看运行状态、
# 通过公网查看: 虚拟机ip:映射端口
# 当访问出现错误时,需要登录阿里服务器控制台,添加334的安全组
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html {
color-scheme: light dark; }
body {
width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]#
Los resultados de configurar el grupo de seguridad de Alibaba Cloud y acceder a él a través de la red pública:
La ruta de acceso es: http://dirección IP del servidor: puerto expuesto, puede acceder con éxito a nginx.
- Archivo de configuración
# 进入容器,进行自定义配置文件
# docker exec -it 给容器起的别名 /bin/bash 进入容器后台
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker exec -it nginx01 /bin/bash
# 查看 nginx 所在的目录
root@d1e7b7a311bb:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
# 进入nginx所在的目录
root@d1e7b7a311bb:/# cd /etc/nginx
# 查看目录中文件列表
root@d1e7b7a311bb:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
¡En este punto, la implementación de nginx está completa!
6.2 implementación de Tomcat
- Utilice el comando Docker Run para descargar
Cuando se ejecuta Docker, automáticamente ayudará a descargar sin buscar y luego extraer.
- Uso oficial:
docker run -it --rm tomcat:9.0
之前启动都是后台启动,停止之后,容器还是可以查到,--rm一般用来测试,用完就删除
使用docker ps -a查看记录 没有找到启动tomcat的记录
# 前期学习不建议这么做,还是老老实实的通过pull来进行下载吧
- Descargue y ejecute la imagen de Tomcat.
# 1、docker pull tomcat # 下载tomcat镜像
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
0e29546d541c: Already exists
9b829c73b52b: Already exists
cb5b7ae36172: Already exists
6494e4811622: Already exists
668f6fcc5fa5: Already exists
dc120c3e0290: Already exists
8f7c0eebb7b1: Already exists
77b694f83996: Already exists
0f611256ec3a: Already exists
4f25def12f23: Already exists
Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
# 2、docker images 查看本地所有镜像
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 4 months ago 141MB
tomcat latest fb5657adc892 4 months ago 680MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos latest 5d0da3dc9764 7 months ago 231MB
# 3、docker run -d -p 3355:8080 --name tomcat01 tomcat 运行
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
3e7fc95c278a15b8dbe8e0773089cbe6ede11da07ccb7b4d3718e73de7146a57
# 进入tomcat01中:
docker exec -it tomcat01 /bin/bash/
# 进入之后发现,在外部访问:http://39.107.241.179:3355,显示404错误,表示没有加载到资源
# 进入tomcat01中,发现webapps目录为空,webapps.dist文件夹中包括访问所需内容,
# 在tomcat01中,将webapps.dist中的内容拷贝到webapps中:
cp -r webapps.dist/* webapps
随后刷新之后,便可通过外部访问tomcat界面
- Alibaba Cloud establece el grupo de seguridad 3355 y accede a él a través de la red pública externa y se encuentra un error 404:
El ícono de tomact ya se muestra en la barra de navegación, pero aparece 404 en la interfaz, lo que demuestra que se puede acceder a Tomcat a través de la red externa pública, pero no está cargado en el recurso. Ingrese al contenedor espejo para ver el archivo de configuración de Tomcat. .
- Métete dentro del contenedor.
# docker exec -it tomcat01 /bin/bash
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker exec -it tomcat01 /bin/bash
root@3e7fc95c278a:/usr/local/tomcat# ls #查看容器中的文件
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@3e7fc95c278a:/usr/local/tomcat# cd webapps # 进入webapps目录,ls查看列表,发现目录中没有文件,是空的
root@3e7fc95c278a:/usr/local/tomcat/webapps# ls
root@3e7fc95c278a:/usr/local/tomcat/webapps# cd .. # 返回上一级
root@3e7fc95c278a:/usr/local/tomcat# cd webapps.dist # 查看webapps.dist发现该目录中存放着tomcat的相关文件
root@3e7fc95c278a:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
Al ingresar al contenedor, descubrimos que hay menos archivos en el contenedor, esto se debe a que Alibaba Cloud Image descarga la imagen más pequeña de forma predeterminada para garantizar el entorno operativo más pequeño.
Copie los archivos del directorio webapps.dist al directorio webapps
# 将webapps.dist目录下的所有内容,拷贝到webapps中
root@3e7fc95c278a:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@3e7fc95c278a:/usr/local/tomcat# cd webapps
root@3e7fc95c278a:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@3e7fc95c278a:/usr/local/tomcat/webapps#
Actualiza la ruta de acceso a la red pública, después de eso, muestra que puedes acceder exitosamente:
- Acceso interno mediante curl:
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# curl localhost:3355
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/10.0.14</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/10.0.14</h1>
</div>
<p class="copyright">Copyright ©1999-2022 Apache Software Foundation. All Rights Reserved</p>
</div>
</body>
</html>
¡En este punto, la implementación de Tomcat está completa!
6.3 Implementación de ElasticSearch
- Instalar comando de ejecución
docker run -d --name elasticsearch02 --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.2.0
- El uso de memoria es muy alto. Modifique la configuración de la página.
La memoria ocupada por ES es muy alta. Dado que el servidor utilizado para el aprendizaje es de 1 núcleo y 2G, el uso de memoria de ES es demasiado alto después del inicio, lo que provocará que la máquina virtual se congele. Puede detenerla.
Cuando se ejecuta la ventana acoplable, agregue **-e ES_JAVA_OPTS="-Xms64m -Xmx512m"** para modificar los parámetros de configuración de la página, similar a modificarlo en el archivo de configuración de IDEA.
Xms: la ocupación mínima es de 64 m, la ocupación máxima de Xmx es de 512 m
docker run -d --name elasticsearch02 --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.2.0
- Verificar el uso de recursos
docker stats
6.4 Pensando en los problemas
- Al configurar nginx, cada vez que cambia el archivo de configuración de nginx, debe ingresar al contenedor a través de la máquina virtual para operar, lo que sin duda es muy problemático.
- De manera similar, al implementar Tomcat, también debe ir al directorio webapps.dist para copiar el contenido a webapps, lo que también es engorroso para ingresar al contenedor cada vez.
- Para los dos problemas anteriores, ¿no sería bueno si se pudiera proporcionar una ruta de mapeo fuera del contenedor para que podamos acceder directamente?
Este problema se resolverá bien si aprendemos la tecnología de volumen de datos del contenedor Docker más adelante .
Con esto concluye el capítulo de inicio rápido.Piensa más, practica más y domina los comandos básicos。