从零开始学Docker(三)

从零开始学Docker(三)

docker-compose

查看源图像

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

下载安装

下载docker-compose

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

image-20221231184635166

image-20221231185843787

上传到linux

image-20221231190035461image-20221231190111947

image-20221231190356158

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

image-20221231190800639

修改文件名为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

image-20231112151637200

image-20231112155124675

image-20231112155215071

测试响应

image-20231112152128071

docker-compose开发流程(idea版)

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

image-20221231201351686 image-20221231203046170

编辑文件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

image-20221231193926036

  • 选择Docker-compose 插件

typero-imgas.oss-cn-chengdu.aliyuncs.comimage-20221231193859417

  • 配置docker-compose

image-20221231194149569

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

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

image-20221231195043728

image-20221231195307201

安装Docker Destop

image-20230806005937467 image-20221231195454401
打包项目

image-20221231202438907

image-20221231202506496

image-20221231202549007

运行docker-compose

image-20221231202618227

image-20221231203608506

image-20221231203643900
linux服务器docker运行情况

image-20221231204713786

image-20221231203958556

image-20221231204731839

docker-compose.yml配置详解

  1. services: 定义各个容器。
  2. networks: 定义需要使用的network。
  3. volumes: 定义services中的volumes。
image-20231112153445275
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 命令

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值