从零开始学Docker(三)

从零开始学Docker(三)

docker-compose

从零开始学Docker(三)_第1张图片

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止

下载安装

下载docker-compose

访问网站: [Release v2.14.2 · docker/compose · GitHub](https://github.com/docker/compose/releases)

从零开始学Docker(三)_第2张图片

image-20221231185843787

上传到linux

从零开始学Docker(三)_第3张图片从零开始学Docker(三)_第4张图片

从零开始学Docker(三)_第5张图片

移动到/usr/local/bin目录下
image-20221231190639432
添加执行权限

从零开始学Docker(三)_第6张图片

修改文件名为docker-compose
image-20221231191128295
检查docker-compose版本
image-20221231191204444

docker-compose开发流程(一般流程)

在指定文件夹下创建docker-compose.yml文件
[root@localhost nginx]# touch docker-compose.yml
编辑docker-compose.yml
version: '3'
#使用自定义的network,wn_docker_net 为自定义的docker网络。
networks:
  wn_docker_net:
    external: true
services:
  nginx-compose:
    build: .
    image: nginx
    container_name: ngnix2
    ports:
      - "8075:80"
    restart: always
    networks:
      wn_docker_net:
      #在自定义网络中指定IP
        ipv4_address: 172.18.12.80
运行docker-compose.yml文件

docker-compose up -d

image-20231112155025431
[root@localhost nginx]# docker-compose up -d
[+] Running 7/7

从零开始学Docker(三)_第7张图片

从零开始学Docker(三)_第8张图片

image-20231112155215071

测试响应

从零开始学Docker(三)_第9张图片

docker-compose开发流程(idea版)

编写docker-compose.yml文件
在项目下创建docker-compose.yml文件

从零开始学Docker(三)_第10张图片 从零开始学Docker(三)_第11张图片

编辑文件docker-compose.yml文件
version: '2'
services:
  test-mycompose:
    build: .
    #镜像名称
    image: myapp:1.0
    #容器名称
    container_name: springboot-docker-compose
    #映射端口号
    ports:
      - "8990:8990"
    restart: always
idea配置docker-compose插件
  • 点击Edit Configurations

从零开始学Docker(三)_第12张图片

  • 选择Docker-compose 插件

从零开始学Docker(三)_第13张图片

  • 配置docker-compose

从零开始学Docker(三)_第14张图片

运行docker-compose
运行docker-compose
image-20221231202037986
idea中运行docker-compose错误

提示:出现以下错误,解决方案,安装windows版本Docker Desktop

image-20221231195043728

从零开始学Docker(三)_第15张图片

安装Docker Destop

从零开始学Docker(三)_第16张图片 从零开始学Docker(三)_第17张图片
打包项目

从零开始学Docker(三)_第18张图片

从零开始学Docker(三)_第19张图片

从零开始学Docker(三)_第20张图片

运行docker-compose

从零开始学Docker(三)_第21张图片

从零开始学Docker(三)_第22张图片

从零开始学Docker(三)_第23张图片
linux服务器docker运行情况

image-20221231204713786

从零开始学Docker(三)_第24张图片

从零开始学Docker(三)_第25张图片

docker-compose.yml配置详解

  1. services: 定义各个容器。
  2. networks: 定义需要使用的network。
  3. volumes: 定义services中的volumes。
从零开始学Docker(三)_第26张图片
version

版本信息,定义关乎于docker的兼容性,Compose 文件格式有3个版本,分别为1, 2.x 和 3.x

build

指定构建镜像的 dockerfile 的上下文路径,或者详细配置对象。

context

包含Dockerfile文件的目录路径,或者是git仓库的URL。 当提供的值是相对路径时,它被解释为相对于当前compose文件的位置。 该目录也是发送到Docker守护程序构建镜像的上下文。

dockerfile

备用Docker文件。Compose将使用备用文件来构建。 还必须指定构建路径。

args

添加构建镜像的参数,环境变量只能在构建过程中访问

案例
build:
  context: .
  args:
    buildno: 1
    password: secret
image

指定容器中的镜像名称。如果本地镜像不存在则从仓库中pull。

image: nginx
container_name

定义容器的名称。

container_name: my_redis
command

覆盖容器启动后默认执行的命令(Dockerfile定义的CMD),当Dockerfile定义了entrypoint的时候,docker-compose.yml定义的command会被覆盖。

command: ["bundle", "exec", "thin", "-p", "3000"]
entrypoint

可以覆盖Dockerfile中定义的entrypoint命令。

env_file

定义了在docker-compose.yml中使用的变量,封装变化,提高docker-compose.yml文件的灵活性。

environment

添加环境变量。 你可以使用数组或字典两种形式。 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False。

environment:
  - discovery.type=single-node
  - ES_JAVA_OPTS=-Xms4g -Xmx4g
ports

将容器的端口映射到宿主机端口。

ports:
  - "9200:9200"
  - "9300:9300"
volumes

挂载一个目录或者一个已经存在的数据容器。

volumes:
  - /usr/local/softwares/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  - /usr/local/softwares/elk/elasticsearch/data:/usr/share/elasticsearch/data
  - /usr/local/software/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins

networks

加入指定网络。

networks:
  wn_docker_net:
    external: true
services:
  es-compose:
    image: elasticsearch:7.17.7
    container_name: es
    networks:
      wn_docker_net:
        ipv4_address: 172.18.12.70

docker-compose案例

version: '2'
networks:
  wn_docker_net:
    external: true
services:
  es-compose:
    image: elasticsearch:7.17.7
    container_name: es
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms4g -Xmx4g
    volumes:
      - /usr/local/softwares/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /usr/local/softwares/elk/elasticsearch/data:/usr/share/elasticsearch/data
      - /usr/local/software/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
    networks:
      wn_docker_net:
        ipv4_address: 172.18.12.70
  kibana-compose:
    image: kibana:7.17.7
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS = http://192.168.198.128:9200
    networks:
      wn_docker_net:
        ipv4_address: 172.18.12.71

docker 常见问题

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

问题描述

当输入docker命令时显示,“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”

问题起因
  • docker服务关闭
解决方案

重新启动docker服务

service docker start

[root@localhost ~]# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@localhost ~]# service docker start
Redirecting to /bin/systemctl start docker.service
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED       STATUS         PORTS                                       NAMES
c291e5b6b196   ms-nginx-a:1.0   "java -jar /ms-nginx…"   11 days ago   Up 6 seconds   0.0.0.0:9990->9990/tcp, :::9990->9990/tcp   ms-nginx-compose-a
ade2bb34a56f   ms-nginx-b:1.0   "java -jar /ms-nginx…"   11 days ago   Up 6 seconds   0.0.0.0:9991->9991/tcp, :::9991->9991/tcp   ms-nginx-compose-b
18fc6780b342   myapp:1.0        "java -jar /myapp.jar"   3 weeks ago   Up 6 seconds   0.0.0.0:8990->8990/tcp, :::8990->8990/tcp   springboot-docker-compose

bash: vim: command not found

如果出现"command not found"是因为docker容器中默认没有安装相应的命令。使用

apt-get update

apt-get install 命令

你可能感兴趣的:(java,docker)