docker-compose

2023-10-27

  • 能做什么?

一个用来把 docker 自动化的东西。有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自动化的完成。通过创建compose文件(YUML语法),在这个文件上面描述应用的架构,如使用什么镜像、数据卷、网络、绑定服务端口等等,然后再用一条命令就可以管理所有的服务(如启动、停止、重启、日志监控等等)。 

Supported filenames: docker-compose.yml, docker-compose.yaml

https://docs.docker.com/compose/overview   官网描述非常详尽,示例步骤清晰易懂,建议详读。

  • 怎么做?

    sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    
    sudo chmod +x /usr/local/bin/docker-compose
    
    查看版本:docker-compose -version
    
    docker-compose version 1.19.0, build 9e633ef
    
    
    查看帮助:docker-compose -h
    Usage:
      docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
      docker-compose -h|--help
    
    Options:
      -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml)
      -p, --project-name NAME     Specify an alternate project name (default: directory name)
      --verbose                   Show more output
      --no-ansi                   Do not print ANSI control characters
      -v, --version               Print version and exit
      -H, --host HOST             Daemon socket to connect to
    
      --tls                       Use TLS; implied by --tlsverify
      --tlscacert CA_PATH         Trust certs signed only by this CA
      --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
      --tlskey TLS_KEY_PATH       Path to TLS key file
      --tlsverify                 Use TLS and verify the remote
      --skip-hostname-check       Don't check the daemon's hostname against the name specified
                                  in the client certificate (for example if your docker host
                                  is an IP address)
      --project-directory PATH    Specify an alternate working directory
                                  (default: the path of the Compose file)
    
    Commands:
      build              Build or rebuild services
      bundle             Generate a Docker bundle from the Compose file
      config             Validate and view the Compose file
      create             Create services
      down               Stop and remove containers, networks, images, and volumes
      events             Receive real time events from containers
      exec               Execute a command in a running container
      help               Get help on a command
      images             List images
      kill               Kill containers
      logs               View output from containers
      pause              Pause services
      port               Print the public port for a port binding
      ps                 List containers
      pull               Pull service images
      push               Push 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
      top                Display the running processes
      unpause            Unpause services
      up                 Create and start containers
      version            Show the Docker-Compose version information

     

    官网的例子,描述非常详细,本处不再复述,详见链接:
    https://docs.docker.com/compose/gettingstarted
     

     

    通过发布3个APP(App1,App2,App3),来演示Docker在服务发布、网络、共享分区以及信息隔离与连通方面的工作,详见链接:
    http://blog.csdn.net/yl_1314/article/details/53761049
     

     

     

  • 问题合集

 

  1. Creating network "composetest_default" with the default driver
    ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-529e7cd3bb6a -j RETURN: iptables: No chain/target/match by that name.
    (exit status 1))

    场景:官网例子,执行 docker-compose up 报出
    解决:发现 “/etc/sysconfig/iptables” 不存在,执行“iptables-save > /etc/sysconfig/iptables”, 编辑产生的iptables文件,为*filter 和 *nat 增加 ”:DOCKER - [0:0]“。然后执行 ”sudo systemctl restart iptables.service“。重试解决。
     

  2. Failed to restart iptables.service: Unit not found.
    场景:执行“sudo systemctl restart iptables.service” 报出
    解决:“whereis iptables” 发现没有安装,执行”yum install iptables-services“,安装完成后解决。
     
  3. Creating network "composetest_default" with the default driver
    ERROR: unable to insert jump to DOCKER-ISOLATION rule in FORWARD chain: (iptables failed: iptables --wait -I FORWARD -j DOCKER-ISOLATION: iptables v1.4.21: Couldn't load target `DOCKER-ISOLATION':No such file or directory

    场景:官网例子,执行 docker-compose up 报出
    解决:执行"systemctl restart docker" 。在解决问题1后,未重启docker导致。重启后,官网例子可正常进行。
     
  4. bash: ping: command not found。容器内bash没有 ping 工具
    场景:例子二执行 ”docker-compose exec App1 bash“,后执行”ping“报出。
    解决:执行”whereis ping“ 发现没有安装ping。执行”apt-get update“,”apt install iputils-ping # ping“ 安装后正常。
     
  5. 容器启动会,几秒钟自动退出
    场景:执行自己写的docker-compose.yml 时发生
    解决:容器内进程退出了容器会立马退出,容器内最后一个进程如果在后台运行容器也会立马退出。加上启动的命令就行了, 比如/bin/bash
     
  6. "NOTICE: PHP message: PHP Parse error:  syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /data1/php_release/xsbn/govzf-web/backend/public/index.php on line 52"
    场景:“实战”部署php环境时报出。经检查代码确实没错,逐步排查发现部分依赖框架方法找不到。怀疑是版本问题引起。当前php、php-fpm为5.4,升级至5.6

    // 更新版本
    rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64
    yum install php56w-fpm
    升级后问题解决。(版本问题真难查啊。)
     

  7.  [pool php-fpm-004] child 76 said into stderr: "NOTICE: PHP message: PHP Fatal error:  Class 'redis' not found in /data1/php_release/xsbn/govzf-web/backend/kernel/Util/Http/RedisDatabase.php on line 68"
    场景:“实战”项目php环境启动报错
    解决:php -m|grep redis 发现没有安装redis模块。Dockerfile 中加入 RUN yum -y install php56w-pecl-redis.x86_64。
     
  8. 其他:日志中各种路径报错、文件权限报错、域名报错等,根据日志提示,一一解决。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-compose 的相关文章

随机推荐

  • Linux expect spawn用法

    背景 开发中 经常会有一些任务需要人机交互 比如登录到某台server上 远程拷贝其上的软件 并分发到其他sever上 传统的操作方式 会产生开发人员与计算机的交互 如等待用户输入密码之类的操作会打断自动化流程的实现 解决方案 使用expe
  • java 基础重学(八)-网络编程知识

    java 中网络编程 TCP UDP HTTP HTTPS 等常用协议 三次握手和四次关闭 流量控制和拥塞控制 OSI七层模型 TCP粘包于拆包 http 1 0 http 1 1 http 2 0之间的区别 http 3 java RMI
  • Docker 镜像加速

    前言 大家好 本文是对 Docker 镜像的详细讲解 讲解了如何安装 Docker 配置 Docker 镜像加速以及操作 Docker 镜像 希望对大家有所帮助 一 为什么要配置Docker镜像加速器 因为我们默认pull的docker镜像
  • cnocr安装流程

    1 尝试pip install cnocr 导入包 from cnocr import CnOcr 运行你的一下代码 2 通常会报错 Microsoft Visual C 14 0 or greater is required Get it
  • 【爬虫】使用requests爬取英雄联盟英雄皮肤

    使用requests爬取英雄联盟英雄皮肤 自己做的 import requests response requests get https game gtimg cn images lol act img js heroList hero
  • epoll高效的本质

    epoll高效的本质在于 减少了用户态和内核态的文件句柄拷贝 减少了对可读可写文件句柄的遍历 mmap 加速了内核与用户空间的信息传递 epoll是通过内核与用户mmap同一块内存 避免了无谓的内存拷贝 IO性能不会随着监听的文件描述的数量
  • Ng深度学习第五课第二周Operations on word vectors中读取glove.6B.50d.txt报错解决

    转至 https blog csdn net wwangfabei1989 article details 80401272 UnicodeDecodeError gbk codec can t decode byte 0x93 in po
  • 网络协议 (一) TCP/IP 四层模型

    TCP IP 四层模型 是目前被广泛采用的一种模型 我们可以将 TCP IP 模型看作是 OSI 七层模型的精简版本 由以下 4 层组成 应用层 传输层 网络层 网络接口层 需要注意的是 我们并不能将 TCP IP 四层模型 和 OSI 七
  • 8051单片机并行I/0口读写

    8051单片机并行I 0口读写 作者 佚名 文章来源 本站原创 点击数 338 更新时间 2011 08 10 前两天看资料 见到关于I O口作为输入时 要先输出1的说明 有点迷惑 今天特意查了一些资料 费了半天劲 虽然还没有完全弄明白 但
  • 服务器常用指令—重启tomcat

    重启Tomcat 关闭Tomcat 进入Tomcat下的bin目录 tomcat bin 使用Tomcat关闭命令 shutdown sh 查看Tomcat是否关闭成功 ps ef grep java 开启Tomcat startup sh
  • Contrastive Regression for Domain Adaptation on Gaze Estimation CVPR 2022 对比学习+目标域有样本无标注(伪标签)

    原文链接 补充材料 概括 本文将分类对比学习推广到回归 采用回归任务里真值的相似性代替分类任务里的类别标签一致性划分 在无标注的目标域采用伪标签进行训练 分类对比学习损失 s为特征的余弦相似性 损失函数L分子与正样本对特征相似程度和正相关
  • 如何在mac上安装多版本python并配置PATH

    摘要 mac 默认安装的python是 python3 但是如果我们需要其他python版本时 该怎么办呢 例如 需要python2 版本 如果使用homebrew安装会提示没有python2 同时使用python version 会发现c
  • linux中的ldd命令简介

    在linux中 有些命令是大家通用的 比如ls rm mv cp等等 这些我觉得没有必要再细说了 而有些命令 只有开发人员才会用到的 这类命令 作为程序员的我们 是有必要了解的 有的甚至需要熟练使用 有的人总说 这些命令不重要 用的时候去查
  • Elasticsearch基础学习笔记

    目录 一 全文搜索 1 数据分类 2 搜索分类 3 什么是全文搜索 全文检索是指 倒排索引 二 ElasticSearch简介 1 ElasticSearch是什么 2 ElasticSearch特点 3 ElasticSearch版本特性
  • C++学习(三三八)RSP文件

    RSP Response Text File 是一种资源文件 用编程软件或文本编辑工具可以打开 如VC Notepad等等 RSP 文件包含一个或多个命令行参数 由包含在 NET 编译器平台 也称为Roslyn 中的C 编译器 CSC 使用
  • dns服务器修改解析地址,dns服务器修改解析地址

    dns服务器修改解析地址 内容精选 换一换 obsutil是适用于Windows macOS和Linux操作系统的命令行工具 支持通过配置内网DNS服务器地址的方式 使在华为云上的Linux ECS通过内网直接访问OBS 下面将介绍其具体操
  • 内中断

    1 CPU根据中断码如何找到中断处理程序 要定位中断处理程序 就需要找到中断处理程序的段地址和偏移地址 如果根据中断码找到他们 这就引入中断向量表 CPU用8位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址 2 使用中断类型码找
  • OpenCV实战(五)——对象简单计数

    现在我们用OpenCV来计数图像当中的目标物体数目 针对各个物体之间没有粘连的情况 include
  • 离散数学 --- 谓词逻辑 --- 谓词合式公式推理

    第一部分 推理形式和推理规则 1 谓词在拥有命题演算的基本蕴含公式的同时 还有着自己独有的基本蕴含公式 当我们的描述在个体和整体之间转换时 就需要进行量词的消去和添加 1 全称特指规则 US规则 其实就是全称量词消去规则 2 全称量词消去有
  • docker-compose

    能做什么 一个用来把 docker 自动化的东西 有了 docker compose 你可以把所有繁复的 docker 操作全都一条命令 自动化的完成 通过创建compose文件 YUML语法 在这个文件上面描述应用的架构 如使用什么镜像