热门标签 | 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



推荐阅读
  • 本文详细记录了 Docker 的初学体验,从基础安装到运行第一个容器,帮助新手快速掌握 Docker 的核心概念和操作。 ... [详细]
  • Docker基础指南与核心命令解析
    本文全面介绍了Docker的基本概念、安装方法、核心命令及其用法,并深入探讨了Docker容器的数据卷管理及应用部署策略,适合初学者快速掌握Docker技术。 ... [详细]
  • 获得头条Offer后,我感激的七个技术公众号
    是否感觉订阅的公众号过多,浏览时缺乏目标性,未能获取实质性的知识?本文将介绍如何精简公众号列表,提升信息吸收效率,并推荐几个高质量的技术公众号。 ... [详细]
  • Docker基础指南:快速入门与实践
    Docker自发布以来便受到广泛欢迎,其提供的容器化技术极大地简化了软件开发和部署流程。本文旨在帮助初学者快速掌握Docker的基本操作,包括安装、运行容器、创建和管理镜像等内容,以激发大家对Docker的兴趣。 ... [详细]
  • 历经两个月,他成功斩获阿里巴巴Offer
    经过两个月的努力,一位普通的双非本科毕业生最终成功获得了阿里巴巴的录用通知。 ... [详细]
  • CGroups: 资源管理和控制
    CGroups(Control Groups)是Linux内核提供的一个功能,旨在限制、记录和隔离进程组使用的物理资源,如CPU、内存和I/O等。它通过精细的资源管理,支持现代容器技术如Docker的资源限制需求。 ... [详细]
  • Elasticsearch基础操作指南:使用Postman进行数据管理
    本文将介绍如何利用Postman工具执行基本的日志写入和数据管理操作。通过本教程,您将了解如何连接至Elasticsearch服务,创建索引,存储及检索数据。 ... [详细]
  • 本文介绍了如何在三台CentOS 7.5虚拟机上通过Docker部署RabbitMQ集群,包括环境准备、容器创建、集群配置及故障处理等内容。 ... [详细]
  • 本文探讨了在技术文档中如何专业地表达‘宕机’这一概念,以提高文档的准确性和专业性。 ... [详细]
  • 本文基于https://major.io/2014/05/13/coreos-vs-project-atomic-a-review/的内容,对CoreOS和Atomic两个操作系统进行了详细的对比,涵盖部署、管理和安全性等多个方面。 ... [详细]
  • 使用Docker部署Gitea自托管Git服务
    Gitea是由Gogs社区分叉而来的开源自托管Git服务,旨在提供一个更加灵活和易于维护的解决方案。本文将详细介绍如何利用Docker容器技术快速部署Gitea。 ... [详细]
  • 使用 Docker 部署带有权限认证的 Elasticsearch
    本文介绍如何通过 Docker 容器化部署 Elasticsearch,并集成一个免费的社区插件 ReadonlyREST 实现基本的权限认证功能。 ... [详细]
  • 本文深入探讨了Kubernetes中Pod的基础概念及其分类,旨在帮助读者更好地理解和利用这一核心组件。通过详细的解析,我们将了解Pod如何作为最小的部署单元在Kubernetes集群中工作。 ... [详细]
  • Kubernetes与Docker之间的关系解析
    本文探讨了Kubernetes(简称k8s)与Docker之间的关系,旨在帮助读者理解这两种技术如何协同工作,以提高应用程序的部署效率和可扩展性。文章首先介绍了两者的基本概念,然后从虚拟化和部署的角度深入分析。 ... [详细]
  • Docker环境下Redis的安装与配置
    本文详细介绍了如何在Docker环境中安装和配置Redis,包括镜像下载、容器启动、连接测试以及持久化设置等步骤。同时,还提供了使用Redis可视化管理工具的方法,帮助用户更好地管理和监控Redis实例。 ... [详细]
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社区 版权所有