博文目录
一、Compose简介
二、安装Docker
1、安装19.03.9版本Docker
2、配置镜像加速
三、安装使用Docker Compose
1、Github下载Docker Compose
2、道云下载Docker Compose
四、编写.yml文件
1、.yml文件构建简单的Nginx服务
2、compose+dockerfile构建镜像
3、使用.yml文件搭建博客平台
一、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
设置基础信息:
安装完成,登录:
输入用户名密码:
修改字体为简体中文:
——————————本文到此结束,感谢观看——————————