Índice
1. Pacote jar de implantação do Dockerfile
1. Crie um novo diretório
mkdir pro1
cd pro1
touch Dockerfile
2. Edite o Dockerfile
vim Dockerfile
Do seguinte modo:
# 拉取一个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. Crie a imagem do pacote jar
docker build -f Dockerfile -t dk-pro1:v1.0 .
4. Execute o contêiner jar
docker run -d --name con_pro1_jar -p 10002:10002 dk-pro1:v1.0
5. Verificação do navegador
http://ip:10002
Dois, pacote jar de implantação docker-compose
1. Crie um novo arquivo
mkdir pro1
cd pro1
touch docker-compose.yml
2. Escreva 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. Crie e execute
cd pro1
docker-compose up -d
4. Ver registros
docker-compose logs dk-pro1_con_pro1_jar_1
5. Outros 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. O contêiner se comunica com o host mysql
Tome o mysql comum como exemplo
- Primeiramente, duas coisas precisam ser esclarecidas:
- No contêiner docker, localhost não se refere ao host local do host, portanto, você não pode acessar o mysql do host por meio de localhost:3306 no contêiner.
- Quando o docker está em execução, a rede é estabelecida no docker0 e você pode ver as informações do docker0 verificando o IP do host:
- O endereço IP do host na mesma LAN do contêiner geralmente é o primeiro endereço do segmento de endereço IP correspondente a docker0 (como 172.17.0.1). Portanto, o contêiner pode acessar o servidor mysql do host por meio de 172.17.0.1 :3306, modifique mysql O código de conexão é o endereço de docker0.
== Nota: ==mysql permite acesso 127.0.0.1 por padrão, 172.17.0.1:3306 pode não estar acessível, você precisa definir a autoridade de acesso 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 刷新权限信息
Em quarto lugar, o contêiner se comunica com o host redis
Após consultar o container docker0ip, modifique a configuração do redis.
1. Modifique o arquivo redis.conf
- O conteúdo é o seguinte:
(1) bind 127.0.0.1 -::1 é alterado para bind 172.17.0.1 -::1
(2) o modo protegido é definido como não
(3) requirepass é definido como a senha 123123
2. Pare o processo atual
ps -ef|grep redis
kill 9 进程id
3. Inicie o redis de acordo com o arquivo de configuração
./redis-server ../redis.conf