详解如何使用Docker-Compose命令

你可以通过多种方式来管理和部署Docker容器。你可以直接使用Docker命令、借助众多GUI工具中的一款(基于Web的工具和面向桌面客户端的工具),也可以选择走docker-compose这条路。

Docker Compose是什么东东?Docker Compose用于创建容器及容器之间的连接。然而,docker-compose命令的用途实际上广泛得多。使用此命令可以:构建映像、扩展容器、修复容器、查看容器的输出、列出容器的公共端口等等。

那么如何使用docker-compose呢?不妨一探究竟。

如何安装Docker Compose?

即使你已经在服务器上安装了Docker,也很可能没有安装Docker Compose。要安装Docker Compose,执行以下命令:

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname
-s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose 

使用以下命令验证安装:

docker-compose version 

你应该会看到几个应用程序的版本号(图A)。

图A. Docker Compose已安装并准备就绪

Docker文件

为了部署容器,Docker Compose依赖docker-compose.yml文件,该文件用于将Docker容器部署到你的特定环境。假设你想部署Wordpress容器。先使用以下命令创建一个新目录:

mkdir ~/wordpressbuild 

使用以下命令切换到该新目录:

cd ~/wordpressbuild 

使用以下命令创建新的Docker Compose文件:

nano docker-compose.yml 

将以下内容(取自官方Docker Compose文档)粘贴到文件中:

version: '3.3' 

services:
  db:
   image: mysql:5.7
   volumes:
    - db_data:/var/lib/mysql
   restart: always
   environment:
    MYSQL_ROOT_PASSWORD: somewordpress
    MYSQL_DATABASE: wordpress
    MYSQL_USER: wordpress
    MYSQL_PASSWORD: wordpress 

 wordpress:
   depends_on:
    - db
   image: wordpress:latest
   ports:
    - "8000:80"
   restart: always
   environment:
    WORDPRESS_DB_HOST: db:3306
    WORDPRESS_DB_USER: wordpress
    WORDPRESS_DB_PASSWORD: wordpress
    WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {} 

保存并关闭该文件。

现在我们使用以下命令构建项目并在分离模式下部署容器:

docker-compose up –d 

该命令将下载所有必需的映像(本例中是MySQL和Wordpress),然后在端口8000上部署该服务。可以将Web浏览器指向http://SERVER_IP:8000(其中SERVER_IP是托管服务器的IP地址),查看Wordpress安装页面(图B)。

图B. Wordpress安装程序

如何检查你的部署?

假设你想检查来自部署的日志。为此,执行以下命令:

docker-compose logs 

你应该会看到来自上一次部署的大量信息(图C)。

图C. 查看来自Wordpress的docker-compose部署的日志

该命令将输出大量信息(如果你部署了众多容器更是如此)。相反,你可以指定要查看日志文件的服务。如何知道使用哪个服务名称?检查docker-compose.yml文件。在本文示例中,我们有两个服务:

  • db:数据库
  • wordpress:Wordpress容器

因此,如果你只想查看wordpress服务的日志,那么该命令将是:

docker-compose logs wordpress 

你也可以查看日志的输出(就像使用tail命令那样),如下所示:

docker-compose logs -f wordpress 

只要wordpress服务的新信息记入日志,就会出现在终端窗口中(图D)。

图D. 查看wordpress服务日志

如果你忘了部署中使用哪些端口,该怎么办?可以查看docker-compose.yml文件,也可以将port选项与docker-compose命令一起使用。你要知道服务的内部命令。比如说,Wordpress默认使用端口80,因此我们知道这是内部端口。但我们将什么分配为面向网络的端口?用以下命令查清楚:

docker-compose port wordpress 80 

该命令的输出将显示我们将内部端口80映射到外部端口8000(图E)。

图E. Wordpress的端口映射

如果你记不得已部署的容器,可以执行命令:

docker-compose ps 

输出会列出已部署的每个容器(图F)。

图F. 容器列表

刚刚开始

这应该让你可以开始领略Docker Compose的强大功能。我们会在下一篇文章中细述docker-compose.yml文件,弄清楚如何构建自己的容器。

原文标题:How to use the docker-compose command,作者:Jack Wallen

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • docker compose 使用教程

    Docker提供一个容器编排工具------>Docker Compose,它允许用户在一个模板(YAML格式)中定义一组相关联的应用容器,这组容器会根据配置模板中的"--link"等参数 对启动的优先级自动排序,简单执行一条"docker-compose up",就可以把同一个服务中的多个容器一次创建和启动. 安装docker-compose: 复制代码 代码如下: curl -L https://github.com/docker/compose/rele

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

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

  • Docker-Compose的使用示例详解

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

  • Docker Compose常用命令详解

    1.Docker compose的使用非常类似于docker命令的使用,但是需要注意的是大部分的compose命令都需要到docker-compose.yml文件所在的目录下才能执行. 2.compose以守护进程模式运行加-d选项 $ docker-compose up -d 3.查看有哪些服务,使用docker-compose ps命令,非常类似于 docker 的ps命令 4.查看compose日志 $ docker-compose logs web $ docker-compose lo

  • Docker-compose一键部署gitlab中文版的方法步骤

    一.gitlab介绍 gitlab官方地址:https://about.gitlab.com/ GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库.团队成员可以利用内置的简单聊天程序(Wall)进行交流.它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需

  • Ubuntu15.10安装docker和docker-compose教程

    1.查看Linux内核版本(3.8以上)和操作系统位数64位 uname -a 结果: Linux jiaxiaoniu-jnq 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 查看Ubuntu版本号命令:cat /etc/issue 2.安装Docker sudo apt-get install docker.io 3.安装后查看Docker版本 sudo do

  • 详解通过docker和docker-compose实现eureka高可用

    最近新项目有使用到springcloud 和docker,关于这两个技术就不分别介绍了,现在分享一下通过docker,docker-compose实现eureka高可用的方案. 1. eureka server项目目录结构: 2. eureka 配置文件配置: server: port: 8900 spring: application: name: eureka-server profiles: active: dev management: security: enabled: false

  • 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

  • 详解Django+Vue+Docker搭建接口测试平台实战

    一. 开头说两句 大家好,我叫林宗霖,是一位测试工程师,也是全栈测开训练营中的一名学员. 在跟着训练营学习完Docker容器技术系列的课程后,理所应当需要通过实操来进行熟悉巩固.正好接口自动化测试平台需要迁移到新的测试服务器上,就想要体验一番Docker的"一次构建,处处运行".这篇文章简单介绍了下这次部署的过程,其中使用了Dockerfile定制镜像和Docker-Compose多容器编排. 二. 项目介绍 项目采用的是前后端分离技术来实现的,前端是Vue+ElementUI,后端是

  • 详解如何使用Docker部署Django+MySQL8开发环境

    前一段时间重装了系统,然后我还没有备份,导致电脑里的开发环境全都没有了. 一想到又要装 Python 环境,还要装数据库,然后安装过程中还可能报一堆错就头疼. 最近正在学习 Docker,这不正好解决了我当前的痛点了吗?而且,不止这次重装系统,以后再重装都不怕了,只要拿着 Dockerfile 和 docker-compose 文件,不管到什么环境,一条命令轻松跑起来. 之前部署 Python 开发环境,都是用的 virtualenv,或者是 Pipenv.这次使用 Docker 之后,对比下来

  • 详解复制备份docker容器数据的方法

    这里以jenkins容器为例,介绍三种方法. 方法一 将容器打包成镜像,这时数据就在镜像中了,im:1.0为容器名,可以随便取 docker commit <container id> im:1.0 重新运行镜像,-v将容器内tmp目录映射到宿主机上的tmp目录 docker run -itd -v /tmp:/tmp im:1.0 // 第一个tmp是宿主机目录,第二个是容器内目录 把 /var/jenkins_home的文件复制到tmp下,注意这里的container name是随机生成的

  • 详解六种减小Docker镜像大小的方法

    我从2017年做Vulhub开始,一直在和一个麻烦的问题做斗争:在编写Dockerfile的时候, 如何减小 docker build 生成的镜像大小 ?这篇文章就给大家总结一下我自己使用过的六种减小镜像大小的方法. 1. 使用Alpine Linux Alpine Linux是一个基于BusyBox和Musl Libc的Linux发行版,其最大的优势就是小.一个纯的基础Alpine Docker镜像在压缩后仅有2.67MB. 不少Docker官方镜像都有Alpine版本,比如PHP: 比较之下

  • 详解SpringBoot项目docker环境运行时无限重启问题

    可能是我开始处理问题的思路不对,现在描述问题可能也有点乱,但是里面可能的处理方式希望能帮到遇到我这个坑的人 描述:springboot项目,docker镜像里面运行,看docker的日志,项目启动成功后,隔了一分钟左右他就自动重新启动,然后造成网站接口访问的时候nginx报502 gateway啥的,有两台服务器,一个是文件服务器,运行了很简单的上传下载文件的代码以及验证token,另一台运行了java应用,两台服务器都在一次更新项目的镜像,运行过后遇到了这个问题,很奇怪. 然后我将项目弄成ja

  • 详解MySQL中EXPLAIN解释命令及用法讲解

    1,情景描述:同事教我在mysql中用explain,于是查看了一番返回内容的含义 2,现就有用处的内容做如下记录: 1,explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: explain select count(DISTINCT uc_userid) as user_login from user_char_daily_gameapp_11 where uc_d

  • 详解linux 使用docker安装mongodb方法

    1.xshell远程到一台安装了docker和docker-conpose的服务器(安装方法见其他学习文件) 2.到home目录下新建Mongotest文件夹,进入这个文件夹,执行vi docker-compose.yml,插入如下内容 ,退出并保存 3.执行docker-compose up -d 然后添加防火墙:firewall-cmd --add-port=27017/tcp --permanent 重启防火墙:firewall-cmd --reload 4.查看进程 docker ps

  • 详解JS中的compose函数和pipe函数用法

    compose函数 compose函数可以将需要嵌套执行的函数平铺,嵌套执行就是一个函数的返回值将作为另一个函数的参数.我们考虑一个简单的需求:这个需求很简单,直接一个计算函数就行: const calculate = x => (x + 10) * 10; let res = calculate(10); console.log(res); // 200 但是根据我们之前讲的函数式编程,我们可以将复杂的几个步骤拆成几个简单的可复用的简单步骤,于是我们拆出了一个加法函数和一个乘法函数: cons

  • 详解使用IDEA模拟git命令使用的常见场景

    大家好,最近白泽第一次开始参与小组合作开发,以前都是自己用git保存自己的代码,自己维护,用git的场景也比较单一,没有遇到过拉取代码合并出现冲突的问题.但是小组开发拉取远程仓库的代码时,遇到他人所提交代码与自己的本地代码出现冲突在所难免,所以白泽特意去学习了一下git的冲突处理,接下来用一个小demo复现一下我学习的过程 前期准备 新建一个远程仓库 在一个文件夹内建立两个子文件夹作为两个本地仓库的存放位置 之所以建立两个文件夹,这样做的目的是为了模拟两个用户对同一个项目进行合作开发,假设dem

  • 详解Javascript实践中的命令模式

    定义 Encapsulate a request as an object, thereby letting you parameterize other objects with different requests, queue or log requests,and support undoable operations." 「命令模式」将「请求」封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象,同时支持可撤消的操作. 这里的「请求」的定义,并不是我们前端常说的「Ajax 请求

随机推荐