docker学习(7) 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:
      - ./mysql/db:/var/lib/mysql
  ports:
      - 3306:3306
  environment:
      - MYSQL_ROOT_PASSWORD=123456

service1:
  image: java:latest
  volumes:
      - ./java:/opt/app
  expose:
      - 8080
  #ports:
  #    - 9081:8080
  links:
      - mysql:default
  command: java -jar /opt/app/spring-boot-rest-framework-1.0.0.jar

service2:
  image: java:latest
  volumes:
      - ./java:/opt/app
  expose:
      - 8080
  #ports:
  #    - 9082:8080
  links:
      - mysql:default
  command: java -jar /opt/app/spring-boot-rest-framework-1.0.0.jar

nginx1:
   image: nginx:latest
   volumes:
      - ./nginx/html:/usr/share/nginx/html:ro
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/conf.d:/etc/nginx/conf.d:ro
   #expose:
   #   - 80
   ports:
      - "80:80"
   links:
      - service1:service1
      - service2:service2

内容不复杂,具体的关键字说明见本文最后的参考文章链接。

问题:这个文件放在哪里?

参见下面的目录结构:

mysql-java-nginx
├── docker-compose.yml
├── java
│   └── spring-boot-rest-framework-1.0.0.jar
├── mysql
│   └── db
└── nginx
    ├── conf
    ├── conf.d
    │   └── default.conf
    ├── html
    │   └── index.html
    └── nginx.conf

创建容器:

cd mysql-java-nginx
docker-compose up

就是这么简单,一个up就搞定了所有容器的创建,up通常用于首次创建,可以观察终端实时输出的日志内容判断容器是否启动正常,如果没什么问题,直接Ctrl+C退出,然后

docker-compose start

以后台方式启动容器。  

其它命令还有:

Commands:
  build              Build or rebuild services
  help               Get help on a command
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pulls service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  unpause            Unpause services
  up                 Create and start containers
  migrate-to-labels  Recreate containers to add labels
  version            Show the Docker-Compose version information

基本上看名字就知道意思了。  

  

参考文章:

https://docs.docker.com/compose/compose-file/

时间: 2024-11-06 20:18:56

docker学习(7) docker-compose使用示例的相关文章

Docker学习之Docker容器基本使用

Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:docker container start containerid 停止:docker container stop containerid 重启:docker container restart containerid 查看后台运行的容器的日志 命令格式:docker container logs

DOCKER学习_002:Docker的镜像容器管理

一 Docker的基本信息 前面已经安装了Docker,现在看一下已安装Docker的安装环境以及其他信息 1.1 系统环境 [[email protected] ~]# uname -r 3.10.0-957.27.2.el7.x86_64 [[email protected]-server3 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) 1.2 Docker版本 [[email protected] ~]#

Docker学习笔记 — Docker仓库

基本概念 仓库是集中存放镜像的地方. Docker Hub Docker Hub是Docker官方维护的一个公共仓库. 执行docker login命令登录,本地用户目录下的.dockercfg文件中保存了用户的认证信息. 使用docker search命令查找官方仓库中的镜像,使用docker pull命令下载镜像到本地. 私有仓库的搭建 — 使用Docer-registry 通常从官方维护的中央仓库下载镜像会比较慢,或者公司内部想搭建一个私有的仓库以供内部人员使用,此时我们可以使用官方提供的

3.docker学习之docker与虚拟化

虚拟化技术是一个总称,是一系列实现虚拟技术的统称.从广义上来说,虚拟化技术包括了虚拟机技术和容器技术, 所谓虚拟化技术最大的特点就是将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用 有人说:"Docker是虚拟化技术." 有人却说:"虚拟化与Docker容器之争." 那么,到底Docker是不是虚拟化技术,如果是,为啥又说"之争?" 其实,准确来说,Docker是一种容器级虚拟化技术. 关于虚拟机,官方的说法是:虚拟机(Virtua

<Docker学习>3. docker镜像命令使用

镜像提供容器运行时所需要的程序,资源.配置文件等,是一个特殊的文件系统.是容器运行的基础.镜像是多层文件系统组成的,是一个分层存储的架构,在镜像的构建中,会一层层的构建,每一层构建完成就不会发生改变,后一层的改变只会在自己这一层发生改变.删除前一层的文件操作,实际上不会删除前一层的文件,而是仅仅在该层将文件标记为删除,实际上还存储在前一层.因此在镜像的构建过程中,只尽量的添加该层需要的文件,任何和该层无关的文件要清理. 镜像使用命令: (1)镜像拉取 docker pull [选项] [Dock

<Docker学习>4. docker容器的使用

简单的说, 容器是独立运行的一个或一组应用, 以及它们的运行态环境. 对应的, 虚拟机可以理解为模拟运行的一整套操作系统( 提供了运行态环境和其他系统环境) 和跑在上面的应用.容器的运行是基于镜像的. 容器启动 docke run [选项] [镜像] 通过 docker run --help 查看 docke run 的用法 docker run -t -i ubuntu:14.04 /bin/bash -t :选项让Docker分配一个伪终端( pseudo-tty) 并绑定到容器的标准输入上

docker学习---搭建Docker LAMP环境

1.环境 系统版本:CentOS Linux release 7.4.1708 docker版本:docker-ce-18.09 主机IP:192.168.121.121 2.载入MySQL和PHP镜像 $ docker pull mysql $ docker pull php:7.2-apache 3.创建网络 $ docker network create lamp 6549dbc105bba9e51d4d0b13df7ae17916c3628f5a07c81551203fb63c15892

DOCKER学习_007:Docker的套接字介绍

根据https://www.cnblogs.com/zyxnhr/p/11825331.html这个文章,已经可以正常安装一个docker服务 查看Docker状态 [[email protected] ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled;

Docker学习笔记 — Docker命令总结

Docker的操作命令总结如下图. 参考资料: Docker——从入门到实践

Docker学习笔记 — Docker容器

1. 基本概念 Docker利用容器运行应用,容器是从镜像创建的运行实例,每个容器都是相互隔离的. 镜像是只读的,容器在启动的时候在其上创建了一层可读写层. 2. 启动和终止容器 启动一个容器有两种方法,一种是从镜像创建一个容器并运行,另一种是重新启动处于终止状态的容器. 创建并启动 使用docker run命令从镜像创建并启动一个容器. 使用docker run命令创建容器时,后台执行的操作包括: - 检查本地是否存在该镜像,不存在就先从公有仓库下载 - 利用镜像创建并启动一个容器 - 分配一