Docker.v19安装和配置Docker Compose编排工具的方法

一、Compose简介

Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。

Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、容器端口映射等情况写在一个配置文件里,执行docker-compose up命令就像执行脚本一样,一个一个的安装并部署容器。

YAML文件基本语法:

  • 大小写敏感;
  • 使用缩进表示层级关系;
  • 缩进不允许使用tab,只允许空格;
  • 缩进的空格数不重要,只要相同等级的元素左对齐即可;
  • “#”表示注释;

Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器,例如一个 Web 服务容器再加上后端的数据库服务容器等,如下:

Docker Compose将所管理的容器分为三层:

  • 项目(project);
  • 服务(service);
  • 容器(container);

docker compose运行目录下的所有yml文件组成一个项目,一个项目包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务可包括多个容器实例。

docker-compose就是docker容器的编排工具,主要就是解决相互有依赖关系的多个容器的管理。

二、安装Docker

服务器为CentOS7.4;Docker版本为19.03.9

1、安装19.03.9版本Docker

[root@centos01 ~]# cd /etc/yum.repos.d/
[root@centos01 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
   <!--下载Centos7源-->
[root@centos01 yum.repos.d]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.ce.repo
    <!--下载最新版本docker源-->
[root@centos01 ~]# yum -y install docker-ce yum-utils device-mapper-persitent-data lvm2
 <!--安装docker和docker-ce依赖程序-->
[root@centos01 ~]# docker version   <!--查看docker版本-->
Client: Docker Engine - Community
 Version:      19.03.9
 API version:    1.40
 Go version:    go1.13.10
 Git commit:    9d988398e7
 Built:       Fri May 15 00:25:27 2020
 OS/Arch:      linux/amd64
 Experimental:   false

Server: Docker Engine - Community
 Engine:
 Version:     19.03.9
 API version:   1.40 (minimum version 1.12)
 Go version:    go1.13.10
 Git commit:    9d988398e7
 Built:      Fri May 15 00:24:05 2020
 OS/Arch:     linux/amd64
[root@centos01 ~]# systemctl start docker   <!--启动docker服务-->
[root@centos01 ~]# systemctl enable docker   <!--设置开机自动启动-->

2、配置镜像加速

接下来启用道云提供的下载镜像加速功能(阿里也提供了该功能,我这里就写道云了)。
道云加速器网址:https://www.daocloud.io/
流程如下:

1)访问道云的官网;

2)注册用户并且登录;

前两步完成后,请看图操作:

看到以下界面后,往下拖页面:

拖到此处,根据自己系统版本,复制相应的命令(基于Linux服务器就复制下面这行):

[root@centos01 ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io   <!--粘贴刚才复制的命令-->
docker version >= 1.12
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
[root@centos01 ~]# cat /etc/docker/daemon.json   <!--查看加速是否配置成功-->
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
[root@centos01 ~]# systemctl restart docker    <!--重新启动docker服务-->

三、安装使用Docker Compose

1、Github下载Docker Compose

若想使用compose这个容器编排工具,那么,必须是基于docker这个服务,然后下载docker-compose这个命令,我们可以去github官方网站搜索“docker Compose”,如下:

下载compose工具时,需先查看本机的docker版本!

[root@centos01 ~]# docker -v
Docker version 19.03.9, build 9d988398e7

如果docker版本过低,可以自行查找其他版本的docker-compose工具。选择合适的版本之后,执行在github网站上找到的命令。

[root@centos01 ~]#curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@centos01 ~]#chmod +x /usr/local/bin/docker-compose

2、道云下载Docker Compose

如果网速不佳下载失败可以选择一下方式下载:(个人比较推荐一下方式下载)

首先我们访问道云官网 去道云官网下载,如下:

[root@centos01 ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
     <!--粘贴刚才复制的命令下载Docker Compose-->
[root@centos01 ~]# docker-compose -v      <!--查看Docker Compose版本-->
docker-compose version 1.25.5, build 8a1c60f6

可以通过修改URL中的版本,可以自定义您的需要的版本。执行上面的两条命令后,我们就可以使用docker-compose这个编排工具了。

四、编写.yml文件

1、.yml文件构建简单的Nginx服务

[root@centos01 ~]# vim /root/.vimrc
set tabstop=2
[root@centos01 ~]# source /root/.vimrc
<!--由于tab键使用的较多,所以事先设置了一个tab键代表两个空格数-->
[root@centos01 ~]# mkdir docker_compose
    <!--创建一个测试目录,用于存放docker-compose.yml文件-->
[root@centos01 ~]# cd docker_compose/  <!--进入刚常见的目录-->
<!--建议一个目录下只有一个docker-compose.yml文件-->
[root@centos01 docker_compose]# vim docker-compose.yml
  <!--编写一个docker-compose.yml文件-->
version: "3"              <!--compose的版本-->
services:               <!--定义服务-->
 nginx:
  container_name: nginx      <!--运行的容器名-->
  image: nginx:latest                 <!--使用的镜像-->
  restart: always                <!--随docker服务的启动而启动-->
  ports:
   - 80:80                     <!--映射的端口-->
  volumes:
   - /root/compose_test/webserver:/usr/share/nginx/html
      <!--本地与容器挂载的目录-->
<!--编写文件注意缩进-->
[root@centos01 docker_compose]# docker-compose up -d
<!--使用当前目录下的docker-compose.yml文件生成相应的容器-->
<!--“-d”选项,表示后台运行,如果不指定,默认则在前台运行,会占用终端-->
[root@centos01 docker_compose]# docker ps     <!--查看运行的容器-->
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS        NAMES
a4d71936dd12    nginx:latest    "nginx -g 'daemon of…"  46 seconds ago   Up 45 seconds    0.0.0.0:80->80/tcp  nginx
[root@centos01 docker_compose]# echo "www.docker-compose.com" > webserver/index.html
    <!--创建测试网页-->
[root@centos01 docker_compose]# curl http://192.168.100.10 <!--访问测试-->
www.docker-compose.com
[root@centos01 docker_compose]# docker-compose stop <!--通过.yml文件停止文件中指定的容器-->
Stopping nginx ... done
[root@centos01 docker_compose]# docker ps <!--查看容器是否停止-->
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES
[root@centos01 ~]# docker-compose -f docker_compose/docker-compose.yml up -d
<!--可以使用“-f”选项来指定yml文件启动文件中定义的容器-->

2、compose+dockerfile构建镜像

[root@centos01 ~]# mkdir compose && cd compose <!--创建一个测试目录并进入-->
[root@centos01 compose]# vim Dockerfile   <!--创建dockerfile-->
FROM nginx:latest     <!--基础镜像-->
ADD html /usr/share/nginx/html
[root@centos01 compose]# vim docker-compose.yml    <!--编写yml文件-->
version: '3'
services:
 nginx:
  build: .       <!--这里指定dockerfile的路径,可以写相对路径或绝对路径-->
  container_name: nginx001  <!--生成的容器名称-->
  image: nginx001      <!--使用dockerfile生成的镜像名称-->
  restart: always      <!--随docker服务的启动而启动-->
  ports:
   - 8080:80       <!--映射的端口-->
[root@centos01 compose]# mkdir html    <!--创建网站根目录-->
[root@centos01 compose]# echo "www.nginx.8080.com" > html/index.html <!--写入主页测试内容-->
[root@centos01 compose]# docker-compose up -d      <!--生成容器-->
[root@centos01 compose]# docker ps      <!--查看容器-->
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS         NAMES
1428cd1ab7de    nginx001      "nginx -g 'daemon of…"  About a minute ago  Up About a minute  0.0.0.0:8080->80/tcp  nginx001
a4d71936dd12    nginx:latest    "nginx -g 'daemon of…"  18 minutes ago    Up 15 minutes    0.0.0.0:80->80/tcp   nginx
[root@centos01 compose]# docker images     <!--查看镜像-->
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
nginx001      latest       55b8bd0a4a59    About a minute ago  127MB
nginx        latest       9beeba249f3e    5 days ago      127MB
[root@centos01 compose]# curl http://192.168.100.10:8080   <!--访问测试-->
www.nginx.8080.com
[root@centos01 compose]# docker-compose stop    <!--停止容器-->
Stopping nginx001 ... done
[root@centos01 ~]# docker-compose -f compose/docker-compose.yml up -d
      <!--通过-f指定.yml文件来运行容器-->
Starting nginx001 ... done 

3、使用.yml文件搭建博客平台

[root@centos01 ~]# mkdir wordpress && cd wordpress <!--创建测试目录-->
[root@centos01 wordpress]# vim docker-compose.yml  <!--编写yml文件-->
version: '3.1'
services:
 wordpress:
  image: wordpress      <!--指定使用的镜像-->
  restart: always
  ports:
   - 1111:80    <!--指定映射的端口-->
  environment:       <!--修改容器内部的环境变量-->
   WORDPRESS_DB_HOST: mysql
   WORDPRESS_DB_USER: wordpress
   WORDPRESS_DB_PASSWORD: pwd@123
   WORDPRESS_DB_NAME: wordpress
 mysql:
  image: mysql:5.6
  restart: always
  command: --character-set-server=utf8  <!--支持中文-->
  environment:
   MYSQL_ROOT_PASSWORD: pwd@123 <!--root访问数据库密码-->
   MYSQL_DATABASE: wordpress     <!--创建wordpress数据库-->
   MYSQL_USER: wordpress      <!--用户名字-->
   MYSQL_PASSWORD: pwd@123     <!--用户访问密码-->
[root@centos01 wordpress]# docker-compose up -d <!--生成相应的容器,并在后台运行-->
[root@centos01 wordpress]# docker ps  <!-- 查看运行的容器-->
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS         NAMES
a93858ade399    wordpress      "docker-entrypoint.s…"  28 seconds ago   Up 27 seconds    0.0.0.0:1111->80/tcp  wordpress_wordpress_1
cec94e3bd0ee    mysql:5.6      "docker-entrypoint.s…"  28 seconds ago   Up 27 seconds    3306/tcp        wordpress_mysql_1
[root@centos01 wordpress]# docker images  <!--查看镜像-->
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
mysql        5.6         9e4a20b3bbbc    10 hours ago    302MB
wordpress      latest       675af3ca3193    5 days ago     540MB
[root@centos01 wordpress]# netstat -anptu |grep 1111  <!--确定1111端口在监听-->
tcp6    0   0 :::1111         :::*          LISTEN   119795/docker-proxy
[root@centos01 wordpress]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
      <!--开启路由功能-->
[root@centos01 wordpress]# sysctl -p <!--刷新配置-->
net.ipv4.ip_forward = 1

客户端访问http://192.168.100.10:1111

设置基础信息:

安装完成,登录:

输入用户名密码:

修改字体为简体中文:

到此这篇关于安装Docker.v19和配置Docker Compose编排工具的方法的文章就介绍到这了,更多相关Docker安装配置Docker Compose 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker-compose的安装和设定详细步骤

    Docker-compose的安装和设定详细步骤 docker的1.12版本中,swarm已经合体,docker-engine/swarm/docker-compose的三件套装已经变成两件.后续会不会将docker-compose进一步合体呢,想做的话应该是顺手的事情吧,不想做的话再简单也不会做.考虑到docker-compose可能以独立的方式消失在docker的舞台之后,先写一个安装的文档作纪念吧. 最简单的方式 下载下来二进制的docker-compose,放到你想放的地方,设定可执行的

  • Docker-Compose的使用示例详解

    Docker Compose是一个用来定义和运行复杂应用的Docker工具.使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作. - github.com/docker/compose docker-compose是用来在Docker中定义和运行复杂应用的工具,比如在一个yum文件里定义多个容器,只用一行命令就可以让一切就绪并运行. 使用docker compose我们可以在Run的层面解决很多实际问题,如:通过创建compose(基于YU

  • 详解Docker Compose 中可用的环境变量问题

    Compose 的多个部分在某种情况下处理环境变量.本教程可以帮助你找到所需的信息. 1. 替换Compose文件中的环境变量 可以使用 shell 中的环境变量填充 Compose 文件中的值: web: image: "webapp:${TAG}" 更多信息请参考 Compose 文件手册中的 Variable substitution章节. 2. 设置容器中的环境变量 可以通过 environment 关键字设置服务容器中的环境变量,就跟使用 docker run -e VARI

  • 使用 docker-compose 运行 MySQL的方法

    目录结构 . │ .env │ docker-compose.yml │ └─mysql ├─config │ my.cnf │ └─data mysql 目录下的 data 为数据目录,mysql 的数据表.二进制日志文件就在这里..env 文件包含了一些变量,这些变量可以在 docker-compose.yml 文件中通过 ${variable_name} 来引用. 当然也可以把 mysql 的目录放到其它地方,这里图个方便,直接放在 yml 文件同级目录了. .env 文件 MYSQL_R

  • docker-compose 详解及示例代码

    docker-compose使用示例 利用docker搭建一个mysql + java service + nginx,总共4个docker容器,如果采用docker run的方式一个一个容器去创建十分麻烦.为了能更高效的批量创建容器,docker推出了docker-compose工具,只需要定义一个docker-compose.yml文件即可快速搞定一组容器的创建, mysql: image: daocloud.io/yjmyzz/mysql-osx:latest volumes: - ./m

  • 详解Docker-compose networks 的例子

    今天实验了下 docker 下的网络设置,记录一下过程,以免后面忘记. (系统:Centos 7.4 ,docker 版本:18.03.1-ce, docker-compose version 1.18.0) cat docker-compose.yml version: '3' services: test1: image: busybox:latest # 镜像为 busybox entrypoint: # 容器启动后执行 top 命令,使容器没法立即退出 - top networks: b

  • 安装docker-compose的两种最简方法

    这里简单介绍下两种安装docker-compose的方式,第一种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,第二种方式略微麻烦,但是安装过程比较稳定 方法一: # curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # chmod +x /usr/local/bi

  • 使用docker compose搭建一个elk系统的方法

    找了不少使用 docker-elk 搭建的博客, 英文的阅读吃力不说, 镜像源也是慢的让人头皮发麻, 因此重新编排了一个docker-compose,源都是从 https://hub.docker.com/ 上找的, 即使拉的国内镜像源应该也能很好的支持了吧? 环境 Docker 18.06.0-ce docker-compose 1.22.0 给每个容器最少分配 1G 的内存 软件版本 logstash: 5.* elasticsearch: 5.* kibana: 5.* 启动前的配置 在各

  • Docker Compose 网络设置详解

    基本概念 默认情况下,Compose会为我们的应用创建一个网络,服务的每个容器都会加入该网络中.这样,容器就可被该网络中的其他容器访问,不仅如此,该容器还能以服务名称作为hostname被其他容器访问. 默认情况下,应用程序的网络名称基于Compose的工程名称,而项目名称基于docker-compose.yml所在目录的名称.如需修改工程名称,可使用--project-name标识或COMPOSE_PORJECT_NAME环境变量. 举个例子,假如一个应用程序在名为myapp的目录中,并且do

  • 利用docker-compose搭建AspNetCore开发环境

    使用docker-compose搭建AspNetCore开发环境 1 使用docker-compose搭建开发环境 我们的目标很简单:使用docker-compose把若干个docker容器组合起来就成了. 首先使用Nginx代理所有的Web程序,这样只需要在主机上监听一个端口就可以了,不污染主机.再组合各Web程序.Redis/Memcached.SqlServerOnLinux. 新建一个目录sites,所有和集群相关的都放在这里,目录结构如下所示 sites     nginx      

  • 浅析docker-compose部署mysql无法访问的问题

    什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高.Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器. Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用

随机推荐