Docker Compose安装及常用指令

一. Compose简介

Compose是一个定义和运行多容器的docker应用工具,负责实现对Docker容器集群的快速编排 .
组成 : 工程 服务 容器

二. Compose安装

  1. 下载二进制安装包
  2. 设置文件为可执行文件
#下载二进制安装包
curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#设置/usr/local/bin/docker-compose为可执行文件
chmod +x /usr/local/bin/docker-compose
#查看版本信息
docker-compose -version

三. 常用命令

Compose命令的基本使用格式:

_docker-compose [-f 参数...] [options] [COMMAND] [ARGS...]_

命令选项:

-f,-file FILE指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定
-p, -project-name NAME指定项目名称,默认将使用所在目录名称作为项目名
-x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 9.0及其之后的版本)
-x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker9.0及其之后的版本)
-verbose 输出更多的调试信息
-v, -version打印并退出

up :

尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作.

docker-compose up [options] [–scale SERVICE=NUM…] [SERVICE…]

选项包括:

-d 在后台运行服务容器
-no-color 不使用颜色来区分不同的服务的控制输出
-no-deps 不启动服务所链接的容器
-force-recreate 强制重新创建容器,不能与-no-recreate同时使用
-no-build 不自动构建缺失的服务镜像
-abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用
-t , --timeout TIMEOUT 停止容器的超时时间(默认为10s)
-remove-orphans 删除服务中没有在compose文件中定义的容器
-scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在compose中通过scale指定的参数

ps :
列出项目中目前的所有容器.
格式为:

docker-compose ps [options] [SERVICE…]

选项包括:

-q 只打印容器的ID信息

stop :
停止已经处于运动状态的容器,但不删除.
格式为:

docker-compose stop [options] [SERVICE…]

选项包括:

-t ,–timeout TIMEOUT 停止容器的超时时间(默认10s)

down :
停止并删除容器 网络 卷 镜像等数据

选项包括:

-rmi type 删除镜像,类型必须是:‘all’ : 删除compose文件中定义的所有镜像; ‘local’ : 删除镜像名为空的镜像
-v , --volumes 删除已经在compose文件中定义的匿名的附在容器上的数据卷
-remove-orphans 删除服务中没有在compose中定义的容器

restart :
重启项目中的服务
格式为:

docker-compose restart [options] [SERVICE…]

选项包括:

-t ,–timeout TIMEOUT 指定重启前停止容器的超时时间(默认10s)

rm :
删除所有(停止状态的)服务容器
格式为:

docker-compose rm [options] [SERVICE…]

选项包括:

-f , --force 强制直接删除,包括非停止状态的容器
-v 删除容器所挂在的数据卷

start :
启动已经存在的服务
格式为:

docker-compose start [options] [SERVICE…]

exec :
通过service name登录到容器中,和docker exec命令功能相同
格式为:

docker-compose exec [options] [SERVICE…]

选项包括:

-d 分离模式 , 后台运行命令
-pricileged 获取特权
-user USER 指定运行的用户
-T 禁用分配TTY,By default docker-compose exec分配-a TTY
-index=index 当一个服务拥有多个容器时,可通过索引号登陆到该服务下的任何服务

四. Compose模板文件

1. 模板文件

#compose文件的版本号
version: "2"
#服务名称
services:
  web:
    #镜像启动容器
    images: nginx
      #映射端口
      ports:
        - "8080:80"
      #目录映射
      volumes:
        - /usr/local/abc:/usr/local/cba
#volumes:指定数据卷的名称

#networks: 指定应用的网络,下面可以定义应用的名字,使用的网络类型等

2. Docker Compose常用模板文件主要命令:

指令功能
build指定服务镜像Dockerfile所在路径
cap_add,cap_drop指定容器的内核能力(capacity)分配
command覆盖容器启动后默认执行的命令
cgroup_parent指定父cgroup组,意味着将基础该组的资源限制
container_name指定容器名称,默认将会使用项目名称,服务名称,序号
devices指定设置映射关系
dns自定义DNS服务器
dns_search配置DNS搜索域
dockerfile指定额外编译镜像的Dockerfile文件
env_file从文件中获取环境变量
environment设置环境变量
expose暴露端口
external_links链接到docker-compose.yml外部的容器,甚至可以是非Compose管理的外部容器
extra_hosts指定额外的host名称映射信息
image指定为镜像名称或镜像ID.如果镜像在本地不存在,Compose将尝试拉取这个镜像
labels指定服务镜像Dockerfile所在路径
links链接到其他服务中的容器
log_driver指定日志驱动类型,类似于Docker中的-log-driver参数.目前支持三种日志驱动类型:log_driver:“json-file” log_driver:“syslog” log_driver:“none”
log_opt日志驱动的相关参数
net设置网络模式.参数类似于docker client的-net参数一样
pid跟主机系统共享进程命名空间.打开该选项的容器之间,以及容器和宿主机系统之间可以通过进程ID来相互访问和操作
ports暴露端口信息
sercurity_opt指定容器模板标签(label)机制的默认属性(如用户 角色 类型 级别等)
ulimits指定容器的ulimits限制值
volumes数据卷所挂载路径设置.可以设置宿主机路径(HOST:CONRAINER)或者加上访问模式(HOST:CONTAINER:ro.)

五.Docker-Compose应用
通过配置docker-compose模板文件(docker-compose.yml),在此配置文件中配置各个容器及其相关的依赖,实现一次启动多个容器.

  • 步骤 :
  1. 编写容器
  2. 编写模板文件
  3. 创建并启动docker-compose项目(模板文件所在的目录,docker-compose.yml)
  • 代码实现 :
#查看镜像文件
[root@muxin ~]# docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
docker.io/rancher/server            latest              85b3b338d0be        17 months ago       1.084 GB
docker.io/centos/mysql-57-centos7   latest              26d536c931ea        17 months ago       445.9 MB
docker.io/mongo                     latest              f93ff881751f        17 months ago       367.6 MB
docker.io/rabbitmq                  management          c51d1c73d028        17 months ago       148.7 MB
docker.io/elasticsearch             5.6.8               6c0bdf761f3b        19 months ago       569.8 MB
docker.io/registry                  latest              d1fd7d86a825        21 months ago       33.26 MB
docker.io/tomcat                    7-jre7              e1ac7618b15d        2 years ago         454.3 MB
docker.io/redis                     latest              1fb7b6c8c0d0        2 years ago         106.6 MB
docker.io/nginx                     latest              1e5ab59102ce        2 years ago         108.3 MB
docker.io/centos                    7                   196e0ce0c9fb        2 years ago         196.6 MB
docker.io/mobz/elasticsearch-head   5                   b19a5c98e43b        2 years ago         823.9 MB

#redis容器 redis镜像为redis latest(最新版) 
#参数1: -p : 端口映射
[root@muxin mycompose]# docker run -id --name=redis1 -p 6379:6379 redis
a477be6b21ae9d580567c9d1469f20750b4e9ffa12adda78a0e7e2523f9a6125

#mysql mysql镜像为centos/mysql-57-centos7
#参数2: -e : 环境变量 设置mysql登录密码为'root'
[root@muxin ~]# docker run -id --name=mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
0c2b191b5a0a655e0c37db41dae706496119b49361f9866570599ade03c30302

#Tomcat Tomcat镜像为tomcat , 版本号为:7-jre7 不写默认拉取最新版
#参数3: -v : 路径映射 宿主机中的webapps和VM中的webapps映射	
[root@muxin ~]# docker run -id --name=tomcat1 -p 8080:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
4d8914c86060dd6d3f3a927355f90063a72ee98f046e9860b515f4a1e1145e78


#编写模板文件:
#  创建文件夹
[root@muxin ~]# mkdir /usr/local/mycompose
#  进入文件夹
[root@muxin ~]# cd /usr/local/mycompose/
#  创建docker-compose.yml文件,文件内容如下:
[root@muxin mycompose]# vi docker-compose.yml

version: '3'
services:
  redis1:
    image: redis
    ports:
      - "6379:6379"
    container_name: "redis1"
    networks:
      - dev
  mysql1:
    image: centos/mysql-57-centos7
    environment:
      MYSQL_ROOT_PASSWORD: "root"
    ports:
      - "3306:3306"
    container_name: "mysql1"
    networks:
      - dev
  web1:
    image: tomcat:7-jre7
    ports:
      - "8080:8080"
    container_name: "tomcat1"
    networks:
      - dev
      - pro
networks:
  dev:
    driver: bridge
  pro:
    driver: bridge

#  重启docker,保证端口唯一
[root@muxin mycompose]# systemctl restart docker
#  docker-compose后台启动
[root@muxin mycompose]# docker-compose up -d
#注意docker-compose和docker的版本问题

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值