Tabla de contenido
1. Instale Docker
Utilice xshell para conectarse a su propio servidor.
Requisito previo: Verifique el entorno del kernel: debe ser 3.10 o superior. La versión centos es 7 y superior.
[root@iZ8vb409m8717t5boglt61Z ~]# uname -r
3.10.0-862.14.4.el7.x86_64
[root@iZ8vb409m8717t5boglt61Z ~]# 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"
Instalación formal
Consulte la documentación de ayuda oficial de Docker .
1. Desinstale la versión anterior
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. Paquete de instalación necesario
sudo yum install -y yum-utils
3. Configure un almacén reflejado
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的,很慢。
#安装国内的阿里云镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. Instale la ventana acoplable
#更新软件包索引
yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io
5. Inicie la ventana acoplable
sudo systemctl start docker
6. Utilice la versión de Docker para comprobar si la instalación se ha realizado correctamente.
docker version
7. Prueba hello-world
docker run hello-world
8. Mira el espejo
docker images
[root@iZ8vb409m8717t5boglt61Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
Extensión: desinstalar docker
#卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
#删除资源 /var/lib/docker是docker的默认工作路径
sudo rm -rf /var/lib/docker
2. Configurar el acelerador de imágenes en la nube de Alibaba
#1
sudo mkdir -p /etc/docker
#2
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://7j3fyo2t.mirror.aliyuncs.com"]
}
EOF
#3
sudo systemctl daemon-reload
#4
sudo systemctl restart docker
3. Configuración del servidor
Principalmente tres aspectos de la configuración.
- Cortafuegos
- Agregar puerto
- Grupo de seguridad
1. Encienda el firewall
#查看防火墙状态
firewall-cmd --state
#开启防火墙
systemctl start firewalld.service
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --state
not running
[root@iZ8vb409m8717t5boglt61Z ~]# systemctl start firewalld.service
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --state
running
2. Agregar puertos externos
#添加80端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
#添加8080端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
#添加3306端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
#添加端口之后,要重新加载防火墙
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --reload
success
#查看开放的端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --list-ports
6379/tcp 80/tcp 8080/tcp 3306/tcp
3. Configuración del grupo de seguridad
4. Instale mysql
Vaya a Docker Hub y busque mysql. Hay instrucciones detalladas en el documento.
#1、搜索镜像
docker search mysql
#2、下载,默认是最新版
#也可以指定版本号 docker pull mysql:版本号
docker pull mysql
#3、查看下载的镜像
docker images
#4、创建mysql容器置并设置root的密码为123456
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456
#5、查看容器
docker ps
#6、进入容器docker exec -it 容器号 /bin/bash
docker exec -it bab0353e153c /bin/bash
[root@iZ8vb409m8717t5boglt61Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bab0353e153c mysql:latest "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mymysql
[root@iZ8vb409m8717t5boglt61Z ~]# docker exec -it bab0353e153c /bin/sh
# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version(); #查看mysql的版本号
+-----------+
| version() |
+-----------+
| 8.0.20 |
+-----------+
1 row in set (0.00 sec)
Utilice herramientas para conectarse a mysql
Si no puede conectarse a mysql, puede consultar el blog .
El siguiente paso es ejecutar el archivo sql.
5. Empaquete el proyecto SpringBoot
1. Cambie el localhost en la URL de su base de datos a la ip de su servidor y modifique la contraseña de mysql instalada en la ventana acoplable.
A continuación, paquete, haga clic derecho en el maven a la derecha, como se muestra a continuación:
Compruébelo una y otra vez, no se equivoque.
2. Espere a que la compilación se realice correctamente. Como se muestra abajo:
Después del éxito, encontrará los siguientes frascos en el objetivo.
6, escribe un archivo Dockerfile
#在home下创建docker文件夹
mkdir /home/docker
Puede escribir en el proyecto de idea o en el servidor.
El contenido del Dockerfile es el siguiente:
#创建Dockerfile文件并打开
vim Dockerfile
#添加的内容如下:
FROM java:8
ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/blog.jar"]
Explicación:
#注意,docker命令全部大写,这是规定。
#From 关键字表示,jar包依赖的环境。java:8 相当于jdk1.8
FROM java:8
#ADD命令
#demo-blog-0.0.1-SNAPSHOT.jar:这是你上传jar包的名称。
#/blog.jar:这是自定义的名称。但是注意要有之前的/
ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
#EXPOSE 项目暴露的端口号
EXPOSE 8080
#/blog.jar此处的名称要和ADD命令后面的一样。
ENTRYPOINT ["java","-jar","/blog.jar"]
Transfiera al servidor.
7. Ejecutar
Ingrese / home / docker, puede ver el archivo cargado, un jar y un Dockerfile.
[root@iZ8vb409m8717t5boglt61Z ~]# cd /home/docker
[root@iZ8vb409m8717t5boglt61Z docker]# ls
demo-blog-0.0.1-SNAPSHOT.jar DockerFile
llevado a cabo
[root@iZ8vb409m8717t5boglt61Z docker]# docker build -t blog:1.0 .
#说明:
# blog 代表要打包成的镜像名称。按照自己实际情况写。
#:1.0 代表版本号,可以不写则默认为latest
# . 代表为当前目录。这就是为什么一直在步骤一文件夹中进行操作,并且Dockerfile在此文件夹中的原因。
#若之前Dockerfile不在步骤一的文件夹中 则需要指定到对应的地址。
Lo siguiente se ejecuta con éxito.
[root@iZ8vb409m8717t5boglt61Z docker]# docker build -t blog:1.0 .
Sending build context to Docker daemon 33.24MB
Step 1/4 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
---> d23bdf5b1b1b
Step 2/4 : ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
---> 4e9a3ac9e03e
Step 3/4 : EXPOSE 8080
---> Running in 0897a57a4d85
Removing intermediate container 0897a57a4d85
---> 67dceec547a7
Step 4/4 : ENTRYPOINT ["java","-jar","/blog.jar"]
---> Running in ed80fc3d7499
Removing intermediate container ed80fc3d7499
---> 19e4ce0e729b
Successfully built 19e4ce0e729b
Successfully tagged blog:1.0
Ver el espejo:
[root@iZ8vb409m8717t5boglt61Z docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
blog 1.0 19e4ce0e729b 3 minutes ago 676MB
mysql latest 30f937e841c8 2 days ago 541MB
hello-world latest bf756fb1ae65 4 months ago 13.3kB
java 8 d23bdf5b1b1b 3 years ago 643MB
Ejecutar espejo
#这里我开放的是80端口,所以要通过80去映射项目中的8080
[root@iZ8vb409m8717t5boglt61Z docker]# docker run --name blog -d -p 80:8080 blog:1.0
Finalmente, puede usar su IP de red pública para visitar.
http://自己服务器的公网ip/:80
Si hay un error o algo durante la operación, puede usar el siguiente comando para verificar el registro.
docker logs 容器id
No es seguro utilizar su propia dirección de servidor. Puede solicitar un nombre de dominio, vincular el nombre de dominio y utilizar el nombre de dominio para acceder.
A continuación se muestra mi sistema de blog personal. Pon algunas fotos.
Si necesita el código fuente, puede ir aquí para obtenerlo . Todavía hay muchas deficiencias. Obtenga más información más adelante.
Interfaz de tablero de mensajes.
Interfaz de clasificación.
Interfaz de etiqueta.
Interfaz de archivo.