DOCKER学习_017:Docker-Compose介绍

dockers三驾马车

  • Docker Machine
  • Docker Swarm
  • Docker Compose

一 Docker Compose介绍

Docker Compose是一个定义和运行多容器应用的单机编排工具。通过Docker Compose你可以使用一个单一的YAML文件来配置多个应用服务,通过一条命令,就可以将所有配置的服务全部启动起来。

1.1 使用Docker Compose的三个步骤

  • 使用Dockerfile定义环境,这样可以确保其在任意地方运行
  • 使用docker-compose.yml文件定义服务,这样它们就可以在独立环境中一起运行
  • 运行docker-compose up使用docker-compose启动所有应用

1.2 Docker Compose可以管理应用的整个生命周期

  • 启动、停止、重建服务
  • 查看服务的运行状态
  • 流式输出服务日志
  • 对服务执行一次性命令

二 Docker Compose安装使用

2.1 二进制安装

下载地址:https://github.com/docker/compose/releases

同时还有安装方式,也可以wget下载上面的文件,本身也是一个二进制文件

[[email protected] ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    470      0 --:--:--  0:00:01 --:--:--   470
100 16.2M  100 16.2M    0     0   767k      0  0:00:21  0:00:21 --:--:-- 1622k

[[email protected] ~]# chmod +x /usr/local/bin/docker-compose

[[email protected] ~]# docker-compose --version

docker-compose version 1.25.0, build 0a186604

[[email protected] ~]# mkdir /docker-compose

[[email protected] ~]# cd /docker-compose

2.2 简单使用

写一个简单的dockerpose文件

[[email protected] docker-compose]# vim docker-compose.yml

version: ‘3‘
services:
  httpd-test:
    image: httpd:2.4

[[email protected] docker-compose]# docker-compose up -d

Creating network "docker-compose_default" with the default driver
Pulling httpd-test (httpd:2.4)...
2.4: Pulling from library/httpd
8ec398bc0356: Already exists
354e6904d655: Pull complete
27298e4c749a: Pull complete
10e27104ba69: Pull complete
36412f6b2f6e: Pull complete
Digest: sha256:769018135ba22d3a7a2b91cb89b8de711562cdf51ad6621b2b9b13e95f3798de
Status: Downloaded newer image for httpd:2.4
Creating docker-compose_httpd-test_1 ... done

[[email protected] docker-compose]# docker ps -a

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS               NAMES
06a7e97739b2        httpd:2.4           "httpd-foreground"   4 minutes ago       Up 4 minutes        80/tcp              docker-compose_httpd-test_1

删除然后在执行,就会拉去一个一样的镜像

[[email protected] docker-compose]# docker rm -f 06a7e97739b2

[[email protected] docker-compose]# docker-compose up -d

[[email protected] docker-compose]# docker ps -a

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS               NAMES
d184230f2de6        httpd:2.4           "httpd-foreground"   3 seconds ago       Up 2 seconds        80/tcp              docker-compose_httpd-test_1

同时创建两个容器,修改compose文件

[[email protected] docker-compose]# vi docker-compose.yml

version: ‘3‘
services:
  httpd-test:
    image: httpd:2.4
  httpd-test-2:
    image: httpd:2.4
    volumes:
      - "/data:/var/www/html"
    ports:
      - "80:80"

[[email protected] docker-compose]# docker-compose up -d

docker-compose_httpd-test_1 is up-to-date
Creating docker-compose_httpd-test-2_1 ... done

[[email protected] docker-compose]#  cat /data/index.html

just a test

[[email protected] docker-compose]# docker ps -a

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
8b60d28de874        httpd:2.4           "httpd-foreground"   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp   docker-compose_httpd-test-2_1
d184230f2de6        httpd:2.4           "httpd-foreground"   6 minutes ago       Up 6 minutes        80/tcp               docker-compose_httpd-test_1

[[email protected] docker-compose]# docker exec -it 8b60d28de874 /bin/bash

[email protected]:/usr/local/apache2# ls /var/www/html/
ca_download  database  index.html  job_logs  psc  redis  registry  secret
[email protected]:/usr/local/apache2# cat /var/www/html/index.html
just a test

[[email protected] docker-compose]# vi docker-compose.yml

version: ‘3‘
services:
  httpd-test:
    image: httpd:2.4
  httpd-test-2:
    image: httpd:2.4
    volumes:
      - "/data:/var/www/html"
    ports:
      - "80:80"
  httpd-test-3:
    image: httpd:2.4
    volumes:
      - "/data:/usr/local/apache2/htdocs"
    ports:
      - "8080:80"

[[email protected] docker-compose]# docker-compose up -d

docker-compose_httpd-test_1 is up-to-date
docker-compose_httpd-test-2_1 is up-to-date
Creating docker-compose_httpd-test-3_1 ... done

[[email protected] docker-compose]# docker ps -a

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
a3d24a4c5d25        httpd:2.4           "httpd-foreground"   6 seconds ago       Up 5 seconds        0.0.0.0:8080->80/tcp   docker-compose_httpd-test-3_1
8b60d28de874        httpd:2.4           "httpd-foreground"   4 minutes ago       Up 4 minutes        0.0.0.0:80->80/tcp     docker-compose_httpd-test-2_1
d184230f2de6        httpd:2.4           "httpd-foreground"   14 minutes ago      Up 14 minutes       80/tcp                 docker-compose_httpd-test_1

[[email protected] docker-compose]# curl http://192.168.132.133:8080

just a test

[[email protected] docker-compose]# echo 111 > /data/111.html

[[email protected] docker-compose]# curl http://192.168.132.133:8080/111.html

111

以上就是docker的一个简答的操作

2.3 docker-compose的常用指令

在上面的一个简单示例中,我们已经使用了docker-compose up来启动一个docker-compose.yml文件定义的服务。刚刚通过docker-compose up虽然启动了服务,当是docker-compose指令却在前台执行,如果需要将其放入后台运行,可以使用-d参数:

docker-compose up -d      #后台运行
docker-compose -f xx.yaml up -d    #如果yml文件不是docker-compose.yml需要使用-f强制指定
docker-compose down     #删除容器
docker-compose ps        #作用也是查看容器,但是它只能查看docker-compose启动的容器,使用docker run启动的容器无法看到
docker-compose start
docker-compose stop
docker-compose restart
docker-compose logs

[[email protected] docker-compose]# docker-compose down

Stopping docker-compose_httpd-test-3_1 ... done
Stopping docker-compose_httpd-test-2_1 ... done
Stopping docker-compose_httpd-test_1   ... done
Removing docker-compose_httpd-test-3_1 ... done
Removing docker-compose_httpd-test-2_1 ... done
Removing docker-compose_httpd-test_1   ... done
Removing network docker-compose_default

[[email protected] docker-compose]# docker-compose up -d

Creating network "docker-compose_default" with the default driver
Creating docker-compose_httpd-test-3_1 ... done
Creating docker-compose_httpd-test_1   ... done
Creating docker-compose_httpd-test-2_1 ... done

[[email protected] docker-compose]# docker ps -a

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
ddf6b2a8f4bb        httpd:2.4           "httpd-foreground"   6 seconds ago       Up 5 seconds        0.0.0.0:80->80/tcp     docker-compose_httpd-test-2_1
a1dabe398019        httpd:2.4           "httpd-foreground"   6 seconds ago       Up 5 seconds        80/tcp                 docker-compose_httpd-test_1
81030fea5437        httpd:2.4           "httpd-foreground"   6 seconds ago       Up 5 seconds        0.0.0.0:8080->80/tcp   docker-compose_httpd-test-3_1

[[email protected] docker-compose]# docker-compose ps -a

            Name                    Command        State          Ports
-------------------------------------------------------------------------------
docker-compose_httpd-test-2_1   httpd-foreground   Up      0.0.0.0:80->80/tcp
docker-compose_httpd-test-3_1   httpd-foreground   Up      0.0.0.0:8080->80/tcp
docker-compose_httpd-test_1     httpd-foreground   Up      80/tcp

启动停止的操作

前面就是对docker-compose的一个简单介绍的操作,后续在仔细研究docker-compose的语法以及案例



博主声明:本文的内容来源主要来自誉天教育晏威老师,由本人实验完成操作验证,需要的博友请联系誉天教育(http://www.yutianedu.com/),获得官方同意或者晏老师(https://www.cnblogs.com/breezey/)本人同意即可转载,谢谢!

原文地址:https://www.cnblogs.com/zyxnhr/p/12158816.html

时间: 2024-08-03 00:58:12

DOCKER学习_017:Docker-Compose介绍的相关文章

Docker学习之Docker容器基本使用

Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:docker container start containerid 停止:docker container stop containerid 重启:docker container restart containerid 查看后台运行的容器的日志 命令格式:docker container logs

DOCKER学习_007:Docker的套接字介绍

根据https://www.cnblogs.com/zyxnhr/p/11825331.html这个文章,已经可以正常安装一个docker服务 查看Docker状态 [[email protected] ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled;

DOCKER学习_002:Docker的镜像容器管理

一 Docker的基本信息 前面已经安装了Docker,现在看一下已安装Docker的安装环境以及其他信息 1.1 系统环境 [[email protected] ~]# uname -r 3.10.0-957.27.2.el7.x86_64 [[email protected]-server3 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) 1.2 Docker版本 [[email protected] ~]#

Docker学习笔记 — Docker仓库

基本概念 仓库是集中存放镜像的地方. Docker Hub Docker Hub是Docker官方维护的一个公共仓库. 执行docker login命令登录,本地用户目录下的.dockercfg文件中保存了用户的认证信息. 使用docker search命令查找官方仓库中的镜像,使用docker pull命令下载镜像到本地. 私有仓库的搭建 — 使用Docer-registry 通常从官方维护的中央仓库下载镜像会比较慢,或者公司内部想搭建一个私有的仓库以供内部人员使用,此时我们可以使用官方提供的

3.docker学习之docker与虚拟化

虚拟化技术是一个总称,是一系列实现虚拟技术的统称.从广义上来说,虚拟化技术包括了虚拟机技术和容器技术, 所谓虚拟化技术最大的特点就是将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用 有人说:"Docker是虚拟化技术." 有人却说:"虚拟化与Docker容器之争." 那么,到底Docker是不是虚拟化技术,如果是,为啥又说"之争?" 其实,准确来说,Docker是一种容器级虚拟化技术. 关于虚拟机,官方的说法是:虚拟机(Virtua

<Docker学习>3. docker镜像命令使用

镜像提供容器运行时所需要的程序,资源.配置文件等,是一个特殊的文件系统.是容器运行的基础.镜像是多层文件系统组成的,是一个分层存储的架构,在镜像的构建中,会一层层的构建,每一层构建完成就不会发生改变,后一层的改变只会在自己这一层发生改变.删除前一层的文件操作,实际上不会删除前一层的文件,而是仅仅在该层将文件标记为删除,实际上还存储在前一层.因此在镜像的构建过程中,只尽量的添加该层需要的文件,任何和该层无关的文件要清理. 镜像使用命令: (1)镜像拉取 docker pull [选项] [Dock

<Docker学习>4. docker容器的使用

简单的说, 容器是独立运行的一个或一组应用, 以及它们的运行态环境. 对应的, 虚拟机可以理解为模拟运行的一整套操作系统( 提供了运行态环境和其他系统环境) 和跑在上面的应用.容器的运行是基于镜像的. 容器启动 docke run [选项] [镜像] 通过 docker run --help 查看 docke run 的用法 docker run -t -i ubuntu:14.04 /bin/bash -t :选项让Docker分配一个伪终端( pseudo-tty) 并绑定到容器的标准输入上

docker学习---搭建Docker LAMP环境

1.环境 系统版本:CentOS Linux release 7.4.1708 docker版本:docker-ce-18.09 主机IP:192.168.121.121 2.载入MySQL和PHP镜像 $ docker pull mysql $ docker pull php:7.2-apache 3.创建网络 $ docker network create lamp 6549dbc105bba9e51d4d0b13df7ae17916c3628f5a07c81551203fb63c15892

Docker学习笔记 — Docker命令总结

Docker的操作命令总结如下图. 参考资料: Docker——从入门到实践