Tabla de contenido
1. Paquete jar de implementación de Dockerfile
1. Crear un nuevo directorio
mkdir pro1
cd pro1
touch Dockerfile
2. Editar archivo acoplable
vim Dockerfile
Como sigue:
# 拉取一个jdk为1.8的docker镜像
FROM java:8
# 声明作者是haoke
MAINTAINER haoke
# 前一个 pro1.jar 为上传的jar包,后一个 dk-pro1.jar 是将服务器中jar包对应在容器中运行的jar包名称
ADD pro1.jar dk-pro1.jar
# 容器暴露的端口号,需要与jar包在容器中运行使用端口号一致
EXPOSE 10002
# 容器启动之后执行的命令, java -jar dk-pro1.jar
ENTRYPOINT ["java","-jar"," dk-pro1.jar"]
3. Cree la imagen del paquete jar
docker build -f Dockerfile -t dk-pro1:v1.0 .
4. Ejecute el contenedor jar
docker run -d --name con_pro1_jar -p 10002:10002 dk-pro1:v1.0
5. Verificación del navegador
http://ip:10002
Dos, paquete jar de implementación docker-compose
1. Crear un nuevo archivo
mkdir pro1
cd pro1
touch docker-compose.yml
2. Escriba docker-compose.yml
version: '3'
# 关于网络,如果用到mysql或者redis,并且希望在同一个网络,那么就可以直接使用同一个网络名
# docker network create pro1_bridge
networks:
pro1_bridge:
driver: bridge
services:
dk-pro1:
#Compose的容器名称格式是:<项目名称><服务名称><序号>
#可以自定义项目名称、服务名称,但如果想完全控制容器的命名,可以使用标签指定:
container_name: con_pro1_jar
#image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。
image: dk-pro1:v1.0
restart: always
#ports用于映射端口的标签。使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。
ports:
- 10002:10002
networks:
- pro1_bridge
3. Crea y ejecuta
cd pro1
docker-compose up -d
4. Ver registros
docker-compose logs dk-pro1_con_pro1_jar_1
5. Otros comandos
docker-compose up -d nginx 构建建启动nignx容器
docker-compose exec nginx bash 登录到nginx容器中
docker-compose down 删除所有nginx容器,镜像
docker-compose ps 显示所有容器
docker-compose restart nginx 重新启动nginx容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build nginx 构建镜像 。
docker-compose build --no-cache nginx 不带缓存的构建。
docker-compose logs nginx 查看nginx的日志
docker-compose logs -f nginx 查看nginx的实时日志
docker-compose config -q 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx 以json的形式输出nginx的docker日志
docker-compose pause nginx 暂停nignx容器
docker-compose unpause nginx 恢复ningx容器
docker-compose rm nginx 删除容器(删除前必须关闭容器)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 启动nignx容器
3. El contenedor se comunica con el host mysql
Tome mysql común como ejemplo
- Primero hay que aclarar dos cosas:
- En el contenedor docker, localhost no hace referencia al host local del host, por lo que no puede acceder al mysql del host a través de localhost:3306 en el contenedor.
- Cuando docker se está ejecutando, la red se establece en docker0 y puede ver la información de docker0 al verificar la IP del host:
- La dirección IP del host en la misma LAN que el contenedor es generalmente la primera dirección del segmento de dirección IP correspondiente a docker0 (como 172.17.0.1) Por lo tanto, el contenedor puede acceder al servidor mysql del host a través de 172.17.0.1 :3306, modificar mysql El código de conexión es la dirección de docker0.
== Nota: ==mysql permite el acceso 127.0.0.1 de forma predeterminada, 172.17.0.1:3306 puede no ser accesible, debe configurar la autoridad de acceso de mysql
# 登录mysql
mysql -u -p
# @后写%为所有ip,
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;
# @后写具体ip
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.17.0.1' IDENTIFIED BY '12345678' WITH GRANT OPTION;
# @前可以指定数据库dk
mysql>GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
# grant后一定要执行刷新权限
mysql>flush privileges;
#其中各字符的含义:
#*.* 对任意数据库任意表有效
#"root" "12345678" 是数据库用户名和密码
# '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
# flush privileges 刷新权限信息
Cuarto, el contenedor se comunica con el host redis
Después de consultar el contenedor docker0ip, modifique la configuración de redis.
1. Modifique el archivo redis.conf
- El contenido es el siguiente:
(1) bind 127.0.0.1 -::1 se cambia a bind 172.17.0.1 -::1
(2) el modo protegido se establece en no
(3) requirepass se establece en la contraseña 123123
2. Detener el proceso actual
ps -ef|grep redis
kill 9 进程id
3. Inicie redis de acuerdo con el archivo de configuración
./redis-server ../redis.conf