GVKun编程网logo

使用 docker-compose 时出现 Interactive shell(docker compose报错)

25

在本文中,我们将给您介绍关于使用docker-compose时出现Interactiveshell的详细内容,并且为您解答dockercompose报错的相关问题,此外,我们还将为您提供关于cento

在本文中,我们将给您介绍关于使用 docker-compose 时出现 Interactive shell的详细内容,并且为您解答docker compose报错的相关问题,此外,我们还将为您提供关于centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker、Composer require 报错 Installation failed, reverting ./composer.json and ./composer.lock to their ...、docker 使用小记 6 - docker-compose 挂载数据卷出现的问题、Docker 入门教程-----docker-compose 与 docker-machine的知识。

本文目录一览:

使用 docker-compose 时出现 Interactive shell(docker compose报错)

使用 docker-compose 时出现 Interactive shell(docker compose报错)

使用 docker-compose 起不来一个 php-fpm 容器,代码如下:

php_wordpress:
  image: daocloud.io/library/php:7.2.8-fpm-stretch
  container_name: php_wordpress
  ports:
    - "9000:9000"
  volumes:
    - /wwwroot/site/wordpress:/var/www/html
  stdin_open: true
  tty: true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如果不加入 stdin_open 和 tty 这二行代码会导致容器起不来,并且 docker logs php_wordpress 后出现:

Interactive shell
  • 1

这二行代码才能解决问题:
大概意思是:

The first corresponds to -i in docker run and the second to -t.

centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker

centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker

1. 先决条件 centos7+docker 最新版本

 sudo yum updat

2. 配置一下镜像源,创建 /etc/docker/daemon.conf 文件,在其中输入如下内容

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}

3. 启动 docker 命令:

systemctl start docker 

重启 docker 服务:

service docker restart

4. 查看和下载 Crawlab 的镜像命令 :

docker search crawlab                   #(查找Crawlab镜像)
docker pull tikazyq/crawlab:latest       #(下载Crawlab镜像)

5. 创建 docker 组:

sudo groupadd docker    (删除docker这个用户:userdel -r docker)

6.centos7 查看所有用户:

cut -d : -f 1 /etc/group

7. 将您的用户添加到该 docker 用户组,命令:

sudo usermod -aG docker 用户名

8. 查看 “docker” 组下的所有用户,命令:

  grep ''docker'' /etc/group

9.Docker Compose 安装

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

稍等片刻,有点慢!!!!

赋权:

sudo chmod +x /usr/local/bin/docker-compose

查看版本:

docker-compose --version

10. 查找 docker-compose.yml 文件位置:

find / -name "docker-compose.yml*"

(会出现 find: ‘/run/user/1000/gvfs’: 权限不够,执行:umount /run/user/1000/gvfsrm -rf /run/user/1000/gvfs, 再执行就不会出错了!!!

11. 图中:

/var/lib/docker/overlay2/50df4de9bf340501cade27650953ad983948b10e13bbe931710ef090ab1a4602/diff/app/docker-compose.yml-----------是我的路径

cd 到 app 目录就可以了

vim docker-compose.yml   #编辑

注意: 新版镜像的 CRAWLAB_API_ADDRESS 是这样的: CRAWLAB_API_ADDRESS: "http://192.168.157.128:8000"

12. 启动 Crawlab

​ cd 进入到 docker-compose.yml 所在文件目录下

​ 才能运行:docker-compose up 集群启动容器,否则找不到文件

查看 woker 容器日志命令:docker-compose logs worker

正常会启动四个容器:master、woker、redis、mongo

第一次次启动会下载安装并配置节点和数据库(redis 和 mongodb)

img

13.Crawlab

浏览器访问 :http://ip:8080 用户名密码是 admin/admin

第一次访问没问题,但是第二次启动会报各种错,博主正在研究中 ----- 持续更新中!!!

Composer require 报错 Installation failed, reverting ./composer.json and ./composer.lock to their ...

Composer require 报错 Installation failed, reverting ./composer.json and ./composer.lock to their ...

  • 在安装 laravel-ide-helper 的时候,报错 Installation Failed, reverting ./composer.json and ./composer.lock to their original content.

    $ composer require barryvdh/laravel-ide-helper
    

    报错:

  • 解决方法

    1、把需要引入的包写入 composer.json 中(写入的话,就不需要 composer require 了,直接composer update 即可。)

    2、删除 composer.lock

    3、$ composer clearcache 清除缓存

    4、$ composer update 更新依赖(重新生成 composer.lock

    例如:

    上面的 laravel-ide-helper 组件,将它加入到 composer.jsonrequire 对象里面,如果只是开发环境使用,就加入到 require-dev,然后按照上面步骤操作一遍:

    "require": {
        "PHP": "^7.1.3",
        "fideloper/proxy": "^4.0",
        // 我加到这里
        "barryvdh/laravel-ide-helper": "^2.6",
        "laravel/framework": "5.8.*",
        "laravel/tinker": "^1.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "PHPunit/PHPunit": "^7.5"
    },
    

docker 使用小记 6 - docker-compose 挂载数据卷出现的问题

docker 使用小记 6 - docker-compose 挂载数据卷出现的问题

最近使用 Docker-Compose 来实现对 Docker 容器集群的快速编排,在编写 docker-compose.yml 完之后,想运行下看看结果,这一试果然试出问题。我再文件中有对容器目录进行挂载,可是运行之后却报错。

 

 

 这是 yml 文件中对 mysql 容器的编排

 

 

 因为如果用 docker run 指令启动容器的话,参数 - v 挂载的卷不用事先创建,所以卷 mysql 我一开始是没有进行创建的,所以有没有可能是 docker-compose 不会自动替我创建卷的原因呢,这里我使用 docker volume create 对 yml 文件中指定的数据卷进行创建。

 

可以看到此时所需的卷都已经创建,再次运行命令 docker-compose up -d,发现还是一样的结果。此时想到 docker 挂载除了指定卷外还能挂载主机指定路径,尝试将所有挂载改成系统内某个目录,再运行,发现容器创建启动成功。

至此可以确认时挂载卷时存在问题,我又试着不指定卷名运行,发现也能成功,所以问题应该就是出现在指定卷名挂载上。

上百度查找相关资料没找到有用的,最后还是在谷歌上面找到解决方法。

 

 

 该资料中作者用了设置 volume 的 mountpoint 的方法解决,而我选择的是第二个方法,为此顺便看了下官方对 extenal 参数的定义

 

 

 翻译过来就是:

如果设置为 true,则指定此卷是在合成之外创建的。DOCKE 编写不尝试创建它,并且如果不存在,则会引发错误。

对于 3.3 及以下版本的格式,外部不能与其他卷配置键(驱动程序、驱动程序选项、标签)一起使用。对于第 3.4 版及以上版本,此限制不再存在。

在下面的示例中,不是尝试创建一个名为 [项目名称] 数据的卷,而是将一个现有的卷简单地称为数据,并将其装入 DB 服务的容器中。

 

根据文档的写法在 yml 文件中加上 volumes 的设置:

 

 保存后再次运行 docker-compose up -d,容器启动成功,至此问题解决。

 

Docker 入门教程-----docker-compose 与 docker-machine

Docker 入门教程-----docker-compose 与 docker-machine

什么是Docker-Compose

Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高。

Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。 

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-Compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。其它大部分指令都跟 docker run 中的类似。如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。

使用Compose 基本上分为三步:

1.Dockerfile 定义应用的运行环境
2.docker-compose.yml 定义组成应用的各服务
3.docker-compose up 启动整个应用

docker-compose安装:(CentOS7)

一、安装pip,之后  pip install docker-compose

二、下载docker-compose:

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2,授权:sudo chmod +x /usr/local/bin/docker-compose

3,查看版本信息:docker-compose --version

显示出版本信息,即安装成功。

docker-compose  使用:

一、docker-compose.yml 属性

version:指定 docker-compose.yml 文件的写法格式

services:多个容器集合

build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数

build: ./dir
---------------
build:
    context: ./dir
    dockerfile: Dockerfile
    args:
        buildno: 1

image:指定服务所使用的镜像

image: java

network_mode:设置网络模式

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

ports:对外暴露的端口定义,和 expose 对应

ports:   # 暴露端口信息  - "宿主机端口:容器暴露端口"
- "8763:8763"
- "8763:8763"

links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况

links:    # 指定服务名称:别名 
    - docker-compose-eureka-server:compose-eureka

volumes:卷挂载路径

volumes:
  - /lib
  - /var

logs:日志输出信息

--no-color          单色输出,不显示其他颜.
-f, --follow        跟踪日志输出,就是可以实时查看日志
-t, --timestamps    显示时间戳
--tail              从日志的结尾显示,--tail=200

expose:暴露端口,只将端口暴露给连接的服务,而不暴露给主机

expose:
    - "3000"
    - "8000"

environment:环境变量配置,可以用数组或字典两种方式

environment:
    RACK_ENV: development
    SHOW: 'ture'
-------------------------
environment:
    - RACK_ENV=development
    - SHOW=ture

env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于 environment 指定的环境变量

env_file: .env
---------------
env_file:
    - ./common.env

command:覆盖容器启动后默认执行的命令

command: bundle exec thin -p 3000
----------------------------------
command: [bundle,exec,thin,-p,3000]

container_name

前面说过 Compose 的容器名称格式是:<项目名称><服务名称><序号>
虽然可以自定义项目名称、服务名称,但是如果你想完全控制容器的命名,可以使用这个标签指定:

container_name: app

这样容器的名字就指定为 app 了。

depends_on

在使用 Compose 时,最大的好处就是少打启动命令,但是一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,必然会因为容器依赖问题而启动失败。
例如在没启动数据库容器的时候启动了应用容器,这时候应用容器会因为找不到数据库而退出,为了避免这种情况我们需要加入一个标签,就是 depends_on,这个标签解决了容器的依赖、启动先后的问题。
例如下面容器会先启动 redis 和 db 两个服务,最后才启动 web 服务:

version: '2'
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

dns:配置 dns 服务器,可以是一个值或列表

dns: 8.8.8.8
------------
dns:
    - 8.8.8.8
    - 9.9.9.9

dns_search:配置 DNS 搜索域,可以是一个值或列表

dns_search: example.com
------------------------
dns_search:
    - dc1.example.com
    - dc2.example.com

首先,官方提供了一个 yaml Docker Compose 配置文件的标准例子

version: "3"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend

更多参数使用请查看:https://www.jianshu.com/p/2217cfed29d7

二、docker-compose 常见命令

ps:列出所有运行容器

docker-compose ps

logs:查看服务日志输出

docker-compose logs

port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口

docker-compose port eureka 8761

build:构建或者重新构建服务

docker-compose build

start:启动指定服务已存在的容器

docker-compose start eureka

stop:停止已运行的服务的容器

docker-compose stop eureka

rm:删除指定服务的容器

docker-compose rm eureka

up:构建、启动容器

docker-compose up

kill:通过发送 SIGKILL 信号来停止指定服务的容器

docker-compose kill eureka

pull:下载服务镜像

scale:设置指定服务运气容器的个数,以 service=num 形式指定

docker-compose scale user=3 movie=3

run:在一个服务上执行一个命令

docker-compose run web bash

docker-machine:docker官方提供的docker管理工具。可管理多个docker主机,可搭建swarm集群

docker-machine安装

说明:docker-machine的使用是要基于virtualBox的。如果没有安装安装过,请先安装virtualBox。

1,安装virtualBox

登录virtualBox官网:https://www.virtualBox.org/wiki/Linux_Downloads

找到"Ubuntu 16.04 ("Xenial")  i386 |  AMD64"字样,点击“AMD64”进行下载。

下载后,执行以下命令进行安装:sudo dpkg -i virtualBox-5.2_5.2.0-118431_Ubuntu_xenial_amd64.deb

2,下载并安装docker-machine:

curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

3,查看版本信息:docker-machine version

显示出版本信息,即安装成功

今天关于使用 docker-compose 时出现 Interactive shelldocker compose报错的分享就到这里,希望大家有所收获,若想了解更多关于centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker、Composer require 报错 Installation failed, reverting ./composer.json and ./composer.lock to their ...、docker 使用小记 6 - docker-compose 挂载数据卷出现的问题、Docker 入门教程-----docker-compose 与 docker-machine等相关知识,可以在本站进行查询。

本文标签: