热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

docker_dockercompose

docker-compose介绍之前已经介绍过如何使用docker命令部署一个博客系统,这个过程两次使用docker命令启动container并且启动过程中有各种参数;如果系统足够

docker-compose


介绍

之前已经介绍过如何使用docker命令部署一个博客系统,这个过程两次使用docker命令启动container并且启动过程中有各种参数;如果系统足够庞大的话这种方式对container管理起来会非常不方便,有没有更方便的方式对系统进行管理呢?

docker compose就是解决这个问题的一个批处理工具。

docker compose通过一个yml文件docker-compose.yml文件管理多个container。docker-compose.yml到目前有三个版本,下面学习使用版本3.

  docker-compose三大核心:service network volume



  1.   service中包含多个container

  2.   networks中定义container的连接方式

  3.   volumes中定义container数据持久化的地址信息


安装

官方安装文档:https://docs.docker.com/compose/install;官网有详细的安装命令

下面是我在本地的安装记录

1、下载文件:sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
3、docker-compose加入环境变量
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4、检查是否安装成功
docker
-compose --version

docker-compose定义文件

下面是将博客系统使用docker-compose文件的方式进行定义,文件内有详细的说明;这样一个文件就能定义多个container并且管理他们之间的关系

#docker compose 的版本
version: '3'
#定义一个container组
services:
#定义我们的workpress container
#docker run -d -e WORDPRESS_DB_HOST=mysql:3306
#--link mysql -p 8080:80 wordpress
wordpress:
#他对应的image 从docker hup中拉去
#image如果需要本地构建这里将image去掉
#换成如下:
#build:
#dockerfile所在目录
#context: .
#dockerfile的名字
#dockerfile: Dockerfile
image: wordpress
container_name: wordpress
#映射端口
ports:
- 8080:80
#连接mysql容器
links:
- mysql
#传入的参数
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
#网络连接方式
networks:
#网络连接方式的名称 在下面的networks中具体定义
- my-bridge
#定义我们的mysql container
#docker run -d --name=mysql -v /home/zyz/mysqldata:/var/lib/mysql
#-e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql:5.7
mysql:
#镜像名称
image: mysql:5.7
container_name: mysql
#参数定义
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
#数据持久化映射
volumes:
#由下面的volumes中具体定义
#可以直接指定地址,本例中采用系统默认
#- 本地地址:/opt/src
- mysql-data:/var/lib/mysql
#网络连接方式
networks:
- my-bridge
volumes:
mysql-data:
networks:
#对应上面的 - my-bridge
my-bridge:
#连接方式为桥接
driver: bridge

docker-compose操作

上面docker-compose.yml已经定义好博客系统相关信息,可以使用docker-compose相关命令启动系统。下面是启动docker-compose.yml文件中定义的资源


docker-compose启动资源

-f参数指定docker-compose资源定义的文件名    -up参数表示启动docker-compose.yml定义的相关资源    -d参数表示后台启动

[root@k8s-01 ~]# docker-compose -f docker-compose.yml up -d
Creating mysql ... done
Creating wordpress ... done

注意:命令的顺序,up放在-f前会报错;-d参数必须在up的后面


docker-compose查询命令

查询宿主机上通过docker-compose启动的service

[root@k8s-01 ~]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------
mysql docker
-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wordpress docker
-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp

 docker-compose停止服务

如果不指定-f参数stop会停止宿主机上所有docker-compose启动的服务

[root@k8s-01 ~]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------
mysql docker
-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wordpress docker
-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
[root@k8s
-01 ~]# docker ps|egrep "mysql|wordpress"
06785de77d64 wordpress
"docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:8080->80/tcp wordpress
176a1af6e67e mysql:
5.7 "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 3306/tcp, 33060/tcp mysql
[root@k8s
-01 ~]# docker-compose -f docker-compose.yml stop
Stopping wordpress ...
done
Stopping mysql ...
done
[root@k8s
-01 ~]# docker-compose ps
Name Command State Ports
-----------------------------------------------------------
mysql docker
-entrypoint.sh mysqld Exit 0
wordpress docker
-entrypoint.sh apach ... Exit 0
[root@k8s
-01 ~]# docker ps|egrep "mysql|wordpress"
[root@k8s
-01 ~]# docker ps -a|egrep "mysql|wordpress"
06785de77d64 wordpress
"docker-entrypoint.s…" 12 minutes ago Exited (0) 25 seconds ago wordpress
176a1af6e67e mysql:
5.7 "docker-entrypoint.s…" 12 minutes ago Exited (0) 23 seconds ago mysql
[root@k8s
-01 ~]#

docker-compose删除服务

down参数会将-f参数指定文件下的所有资源删除,不指定-f参数会删除本机上所有docker-compose资源

[root@k8s-01 ~]# docker-compose -f docker-compose.yml down
Removing wordpress ...
done
Removing mysql ...
done
Removing network root_my
-bridge
[root@k8s
-01 ~]# docker-compose ps -a
Name Command State Ports
------------------------------
[root@k8s
-01 ~]# docker ps -a|egrep "mysql|wordpress"
[root@k8s
-01 ~]#

 

 

 

 



原文链接:https://www.cnblogs.com/flags-blog/p/15333086.html



推荐阅读
author-avatar
心跳-很执着
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有