GVKun编程网logo

docker-compose 简单使用(docker compose使用详解)

21

针对docker-compose简单使用和dockercompose使用详解这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展DockerCompose的简单使用、25.dockercompo

针对docker-compose 简单使用docker compose使用详解这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展 Docker Compose 的简单使用、25.docker compose 简介 和 docker-compose.yml 参数介绍、7.docker 学习笔记之入门,docker compose 简单配置、centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker等相关知识,希望可以帮助到你。

本文目录一览:

docker-compose 简单使用(docker compose使用详解)

docker-compose 简单使用(docker compose使用详解)

docker-compose.yaml:

nginx:
    image: nginx
    links:
        - tomcat
    ports:
        - "80:80"
    volumes:
        - /root/conf:/etc/nginx/conf.d:ro
tomcat:
    image: tomcat:8.5
    links:
        - mysql
    volumes:
        - /root/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
        - /root/manager.xml:/usr/local/tomcat/conf/Catalina/localhost/manager.xml
mysql:
    image: mysql
    volumes:
        - /opt/data:/var/lib/mysql
        - /root/codepad.sql:/docker-entrypoint-initdb.d/codepad.sql
    environment:
        - MYSQL_ROOT_PASSWORD=xxxxxx


注意 tomcat 的 manager 默认只有本机能访问,如果需要非本机访问的,需要配置 manager.xml, 不然访问 tomcat 控制台会报 403, 位置在:$CATALINA_BASE/conf/[enginename]/[hostname] , 内容如下:

<Context privileged="true">
         <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                allow=".*"/>
</Context>

启动 docker container:

docker-compose up -d

java 代码中连接数据库,字符串写法为:

url=jdbc:mysql://${MYSQL_PORT_3306_TCP_ADDR}:3306/codepad?useUnicode=true&amp;characterEncoding=UTF-8

MYSQL_PORT_3306_TCP_ADDR 是 mysql container 的 ip 地址,intellij idea 本地运行时得在 run/debug 窗口事先配置好.


参考文档见:

  1. tomcat manager 配置

  2. docker-compose 文档

  3. mysql docker container

  4. nginx docker container

  5. tomcat docker container

 Docker Compose 的简单使用

Docker Compose 的简单使用

 Docker Compose 的简单介绍

     Docker compose 是一个用于定义和运行多容器 docker 应用的编排方式,可以使用它来管理应用服务。使用一条简单的命令,你就可以创建和启动你配置中的所有服务。compose 的配置文件是 docker-compose.yml,Docker-compose 是 Docker compose 的运行工具,在 Docker 1.13 以前,Docker 的编排都使用 Docker-compose 工具,而在 Docker 1.13 以后,将 Docker-compose 的功能集成到 Docker stack 中,直接可以通过 Docker stack 部署分布式应用。

Docker compose 的文件格式如下:

version: ''2''  //版本号

services:  //下面包含两个服务,分别是web和redis

  web:

    build: .   //使用Dockerfile创建镜像,指定是Dockerfile文件所在目录

    ports:

    - "5000:5000" //映射端口

    volumes:

    - .:/code //将宿主机当前目录挂载到容器/code目录中

    - logvolume01:/var/log  //将数据卷挂载到容器中

    links:

    - redis 

  redis:

    image: redis  

volumes:

  logvolume01: {}

version 是版本号

services 是应用服务,下面包含两个服务,分别是 web 和 redis

web 服务下:

     build 使用 Dockerfile 创建镜像,Dockerfile 文件目录为当前目录

     ports 端口映射,容器的 5000 端口映射宿主机的 5000 端口

     volumes 挂载,第一个是将当前目录挂载到容器的 /code 目录,第二个则是将数据卷 logvolume01 挂载到容器的 /var/log 目录

         links 链接

redis 服务下:

          image 使用 redis 镜像

volumes 是数据卷

          

2.Docker compose 的安装

官方下载脚本(不推荐)

curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Daocloud 脚本

curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

下载完文件后对文件添加可执行权限

 chmod +x /usr/local/bin/docker-compose

检查 compose 是否安装成功

[root@localhost ~]# docker-compose --help

Define and run multi-container applications with Docker.

Usage:

  docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]

  docker-compose -h|--help

Options:

  -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml)

  -p, --project-name NAME     Specify an alternate project name (default: directory name)

  --verbose                   Show more output

  -v, --version               Print version and exit

  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify

  --tlscacert CA_PATH         Trust certs signed only by this CA

  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file

  --tlskey TLS_KEY_PATH       Path to TLS key file

  --tlsverify                 Use TLS and verify the remote

  --skip-hostname-check       Don''t check the daemon''s hostname against the name specified

                              in the client certificate (for example if your docker host

                              is an IP address)

  --project-directory PATH    Specify an alternate working directory

                              (default: the path of the compose file)

Commands:

  build              Build or rebuild services

  bundle             Generate a Docker bundle from the Compose file

  config             Validate and view the compose file

  create             Create services

  down               Stop and remove containers, networks, images, and volumes

  events             Receive real time events from containers

  exec               Execute a command in a running container

  help               Get help on a command

  images             List images

  kill               Kill containers

  logs               View output from containers

  pause              Pause services

  port               Print the public port for a port binding

  ps                 List containers

  pull               Pull service images

  push               Push service images

  restart            Restart services

  rm                 Remove stopped containers

  run                Run a one-off command

  scale              Set number of containers for a service

  start              Start services

  stop               Stop services

  top                Display the running processes

  unpause            Unpause services

  up                 Create and start containers

  version            Show the Docker-Compose version information

 

3.docker compose 的简单使用

docker compose 的命令就不进行解析了,需要了解的可以通过

docker-compose --help

或者查询具体命令用法

docker-compose up --help

就可以得到帮助

下面举一个简单的 docker compose 的小例子

version: ''2''

services:

  elasticsearch:

    image: elasticsearch

    ports:

      - "9200:9200"

      - "9300:9300"

    environment:

      ES_JAVA_OPTS: "-Xmx256m -Xms256m"

  kibana:

    image: kibana

    environment:

      ELASTICSEARCH_URL: http://elasticsearch:9200/

    ports:

      - "5601:5601"

    links:

      - elasticsearch

docker-compose.yml 文件有严格的格式校验,编写的时候尽量不要使用 tab 键,不要添加注释等

下面解释一下这个 compose 文件。这是一个单机 ELK 日志收集模块的编排工具,定义了 EK 服务模块,作为日志的存储和显示。

version: ''2'' #docker-compose 的版本号目前有 v1,v2,v3 版本,其中 v3 版本需要 docker1.13 (and higher) 版本支持

services:  

  elasticsearch:   

    image: elasticsearch  #使用elasticsearch:latest镜像

    ports:

      - "9200:9200" #将elasticsearch服务的端口映射到宿主机上

      - "9300:9300"

    environment:

      ES_JAVA_OPTS: "-Xmx256m -Xms256m" #设置elasticsearch服务的java虚拟机内存使用

  kibana:

    image: kibana #使用kibana:latest镜像

    environment:

      ELASTICSEARCH_URL: http://elasticsearch:9200/ #指定查询日志信息的elasticsearch的路径

    ports:

      - "5601:5601"

    links:

      - elasticsearch #连接elasticsearch,kibana容器可以使用docker内部dns将elasticsearch转为对应容器ip

 

切换目录到 docker-compose.yml 文件所在文件夹

启动服务


[lt_docker_user1@localhost log]$ docker-compose up -d

WARNING: The Docker Engine you''re using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.


Creating log_elasticsearch_1

Creating log_kibana_1

停止服务

[lt_docker_user1@localhost log]$ docker-compose stop

Stopping log_kibana_1 ... done

Stopping log_elasticsearch_1 ... done

删除服务

 

[lt_docker_user1@localhost log]$ docker-compose rm

Going to remove log_kibana_1, log_elasticsearch_1

Are you sure? [yN] y

Removing log_kibana_1 ... done

Removing log_elasticsearch_1 ... done 

其他的命令就不在介绍,自行探索 https://docs.docker.com/compose/reference/overview/

 

docker-compose 插件功能在 docker 1.13 版本中集成到 docker stack 命令中,支持分布式部署。

 

docker-compose 文件的编写格式和参数可以参考官方文档:

    v2 版本:https://docs.docker.com/compose/compose-file/compose-file-v2/

    v3 版本:https://docs.docker.com/compose/compose-file/

25.docker compose 简介 和 docker-compose.yml 参数介绍

25.docker compose 简介 和 docker-compose.yml 参数介绍

1. docker compose概念  文档  https://docs.docker.com/compose/compose-file/compose-versioning

  一个基于 docker 的工具

  可以通过一个 yml 文件定义多容器的 docker 应用

  通过一条命令就可以根据 yml 文件的定义 去创建或者管理这多个容器

2 docker compose 版本 2 与 版本 3 的区别

  最大的区别

    version 2 只能用于单机

    version 3 可用于多机

3. docker-compose.yml

  

    Services

      一个 service 代表一个 container , 这个 container 可以从 dockerhub 的 image 来创建, 或者从本地的 Dockerfile build出来的image 来创建

      service 的启动 类似与 docker run , 我们可以给其指定 network 和 volume . 所以可以给 service 指定 network 和 volume 的引用

      eg :

      docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier  postgres:9.4

      services:

        db:                #service 的名称为 db

          image: postgres:9.4      #service image 为 postgres:9.4  这是从远程拉取的

          volumes:

            - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

          networks:

            - back-tier        #网络为 back-tier

      eg2:

      docker run -d --link db --link redis --network back-tier  worker

      services:

        worker:

          build: ./worker

          links:

            - db

            - redis

          networks:

            - back-tier        #在同一个网络上 不需要links

    Volumes:

      上面 的

      volumes:

       - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

      会有单独的一个 volumes (与 services 同级别) 对db-data 进行 阐述

      类似于 docker volume create db-data

      eg:

      volumes:

        db-data:

    Nerworks:

      上面 的

      networks:

        - back-tier        #在同一个网络上 不需要links

      会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述

      类似于  docker nerwork create -d bridge back-tier

      networks:

        front-tier:

          driver: bridge

        back-tier:

          driver: bridge

4编写 docker-compose.yml

# docker compose api 版本

version: ''3''

 

services:

# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql

  wordpress:

#image 为 word press

    image: wordpress

#本地 8888 端口 映射 容器 80 端口

    ports:

      - 8888:80

#wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e

    environment:

      WORDPRESS_DB_HOST: mysql

      WORDPRESS_DB_PASSWORD: root

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

  mysql:

    image: mysql:5.7.27

# 数据库 root 的 连接密码 和 所使用的数据库名称

    environment:

      MYSQL_ROOT_PASSWORD: root

      MYSQL_DATABASE: wordpress

# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql

    volumes:

      - mysql-data:/var/lib/mysql

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

# 定义 volumes

volumes:

  mysql-data:

 

# 定义 networks

networks:

  my-bridge:

    driver: bridge

 

7.docker 学习笔记之入门,docker compose 简单配置

7.docker 学习笔记之入门,docker compose 简单配置

version: "3.6"
#设置网络环境
networks:
    #自定义网络
    nginx-network:
        ipam:
            driver: bridge
            config:
                - subnet: "172.16.238.0/24"
    #引用外部预先定义好的网段
    redis-network:
        external:
            name: redis-network
services:
    nginx:
        image: nginx
        container_name: nginx-compose
        environment:  #设置环境变量
            password: "123456"
        ports:
            - "8003:80"
        networks:
            redis-network:
                ipv4_address: 192.168.1.5
        volumes:
            - "/usr/docker/compose/nginx/conf:/conf"
        command: ["/usr/local/nginx/sbin/nginx","-c","/conf/nginx.conf","-g","daemon off;"]
        privileged: true  #特殊权限
        working_dir: /conf #工作目录
        stdin_open: true  #打开标准输入
        tty: true  #模拟伪终端
    nginx1:
        build:
            context: ./nginx
            dockerfile: Dockerfile
            args:
                buildno: 1
        container_name: nginx-compose2
        ports:
            - "8002:80"
        networks:
            redis-network:
                ipv4_address: 192.168.1.6
        volumes:
            - "/usr/docker/compose/nginx/conf:/conf"
        command: ["/usr/local/nginx/sbin/nginx","-c","/conf/nginx.conf","-g","daemon off;"]

docker-compose up -d #最简单的执行命令,如果没报错的话 docker images;docker ps -a 就会有对应的镜像和容器

docker-compose -p testname1 up -d #给上命名

centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker

centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker

1. 先决条件 centos7+docker 最新版本

 sudo yum updat

2. 配置一下镜像源,创建 /etc/docker/daemon.conf 文件,在其中输入如下内容

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}

3. 启动 docker 命令:

systemctl start docker 

重启 docker 服务:

service docker restart

4. 查看和下载 Crawlab 的镜像命令 :

docker search crawlab                   #(查找Crawlab镜像)
docker pull tikazyq/crawlab:latest       #(下载Crawlab镜像)

5. 创建 docker 组:

sudo groupadd docker    (删除docker这个用户:userdel -r docker)

6.centos7 查看所有用户:

cut -d : -f 1 /etc/group

7. 将您的用户添加到该 docker 用户组,命令:

sudo usermod -aG docker 用户名

8. 查看 “docker” 组下的所有用户,命令:

  grep ''docker'' /etc/group

9.Docker Compose 安装

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

稍等片刻,有点慢!!!!

赋权:

sudo chmod +x /usr/local/bin/docker-compose

查看版本:

docker-compose --version

10. 查找 docker-compose.yml 文件位置:

find / -name "docker-compose.yml*"

(会出现 find: ‘/run/user/1000/gvfs’: 权限不够,执行:umount /run/user/1000/gvfsrm -rf /run/user/1000/gvfs, 再执行就不会出错了!!!

11. 图中:

/var/lib/docker/overlay2/50df4de9bf340501cade27650953ad983948b10e13bbe931710ef090ab1a4602/diff/app/docker-compose.yml-----------是我的路径

cd 到 app 目录就可以了

vim docker-compose.yml   #编辑

注意: 新版镜像的 CRAWLAB_API_ADDRESS 是这样的: CRAWLAB_API_ADDRESS: "http://192.168.157.128:8000"

12. 启动 Crawlab

​ cd 进入到 docker-compose.yml 所在文件目录下

​ 才能运行:docker-compose up 集群启动容器,否则找不到文件

查看 woker 容器日志命令:docker-compose logs worker

正常会启动四个容器:master、woker、redis、mongo

第一次次启动会下载安装并配置节点和数据库(redis 和 mongodb)

img

13.Crawlab

浏览器访问 :http://ip:8080 用户名密码是 admin/admin

第一次访问没问题,但是第二次启动会报各种错,博主正在研究中 ----- 持续更新中!!!

关于docker-compose 简单使用docker compose使用详解的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于 Docker Compose 的简单使用、25.docker compose 简介 和 docker-compose.yml 参数介绍、7.docker 学习笔记之入门,docker compose 简单配置、centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker等相关内容,可以在本站寻找。

本文标签: