标签: docker-compose

如何在系统启动时自动启动Docker容器?

假设我有一个我想要运行的Docker容器,那么我可以调用

$ docker run ...
Run Code Online (Sandbox Code Playgroud)

一切都很好.如果系统崩溃并重新启动,是否有一种内置的方式来运行容器,它将自动重启?

如果是这样,这还可以在Docker Compose中使用吗?

docker docker-compose

47
推荐指数
8
解决办法
6万
查看次数

Docker中的Kafka无法正常工作

我正在尝试使用wurstmeister\kafka-docker图像 docker-compose,但我在连接所有内容方面遇到了实际问题.

我检查的所有帖子或问题,似乎没有任何问题,但我坦率地失去了.(并且在SO中至少有两个问题试图解决这个问题)

我认为问题在于我对网络的了解不足docker.所以问题是:

我可以从同一个kafka容器中使用和生产,但是,当我尝试创建另一个容器(或者使用我的笔记本电脑和python客户端)时,我得到了几个与advertised.host.name参数相关的错误(在图像中这个参数是KAFKA_ADVERTISED_HOST_NAME)

我已经尝试过多种方式设置这个变量,但它根本不起作用.

所以我正在寻找一个明确的答案(即如何自动设置这些参数及其含义)如何设置 docker-compose.yml

这是我的:

zookeeper:
  image: wurstmeister/zookeeper
  ports:
    - "2181:2181"

kafka:
  image: wurstmeister/kafka
 # hostname: kafka
  ports:
    - "9092"
  links:
    - zookeeper:zk
  environment:
    KAFKA_ADVERTISED_HOST_NAME: "kafka"
    KAFKA_ADVERTISED_PORT: "9092"
    KAFKA_ZOOKEEPER_CONNECT: "zk:2181"
Run Code Online (Sandbox Code Playgroud)

UPDATE

按照@dnephin的建议,我修改start-kafka.sh了以下几行:

...
if [[ -z "$KAFKA_ADVERTISED_PORT" ]]; then
    export KAFKA_ADVERTISED_PORT=$(hostname -i)
fi
...
Run Code Online (Sandbox Code Playgroud)

KAFKA_ADVERTISED_HOST_NAME: "kafka"从中删除docker-compose.yml

我以规范的方式启动了容器:

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

两个容器都在运行:

$ docker-compose ps
           Name                          Command               State                     Ports                    
-----------------------------------------------------------------------------------------------------------------
infraestructura_kafka_1       start-kafka.sh                   Up …
Run Code Online (Sandbox Code Playgroud)

apache-kafka docker docker-compose kafka-python

47
推荐指数
3
解决办法
4万
查看次数

清洁docker/overlay2 /是否安全

我在AWS EC2上运行了一些docker容器,/ var/lib/docker/overlay2文件夹的磁盘大小增长得非常快.

我想知道删除其内容是否安全?或者如果docker有某种命令来释放一些磁盘使用量.

谢谢!


更新:

我实际上docker system prune -a已经尝试了,它回收了0Kb.

我的/ docker/overlay2磁盘大小也远大于输出 docker system df

在阅读了docker文档和BMitch的回答之后,我认为触摸这个文件夹是一个愚蠢的想法,我会尝试其他方法来回收我的磁盘空间.

docker docker-compose docker-machine

47
推荐指数
10
解决办法
4万
查看次数

docker compose 孤儿容器警告

如何与孤儿图像时,你有2个独立的项目,并且希望他们能够在同一时间工作,或者至少建立运行docker-compose up -d,而不--remove-orphans标志时,图像已经建成的其他项目。

码头工人撰写文件1:

version: '2'
services:
  applications:
    image: tianon/true
    volumes:
      - ../../:/var/www/vhosts/project1
  nginx:
    build: ./images/nginx
    image: project1/nginx:latest
    ports:
      - "80:80"
    volumes_from:
      -  applications
    networks:
      appnet:
        aliases:
          - project1.app
          - admin.project1.app
  php:
    image: project1/php:latest
    ports:
      - "7778:7778"
    build: 
      context: ./images/php
      dockerfile: Dockerfile
    volumes_from:
      -  applications
    networks:
      -  appnet
  mysql:
    image: project1/mysql:latest
    build: ./images/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      -  mysqldata:/var/lib/mysql
    networks:
      -  appnet
    ports:
      - "33066:3306"
 workspace:
    image: project1/workspace:latest
    build:
      context: ./images/workspace
    volumes_from:
      - applications
    working_dir: /var/www/vhosts/project1 …
Run Code Online (Sandbox Code Playgroud)

containers project docker docker-compose

47
推荐指数
6
解决办法
5万
查看次数

docker-compose 支持 init 容器吗?

init container这是 Kubernetes 中的一个很棒的功能,我想知道 docker-compose 是否支持它?它允许我在启动主应用程序之前运行一些命令。

我遇到了这个 PR https://github.com/docker/compose-cli/issues/1499,其中提到支持 init 容器。但我在他们的参考文献中找不到相关文档。

docker docker-compose

46
推荐指数
1
解决办法
3万
查看次数

如何将 docker-compose 别名为 docker compose?

据我了解,docker compose是最新版本。这是我至少从 docker 官方文档安装的一个。

我正在开发一个docker-compose在他们的 makefile 中使用的项目。

我如何将所有呼叫(及其参数)从 转发 docker-compose docker compose

我创建了一个别名: alias docker-compose="docker compose"

它在终端中运行良好。但不在 make 文件中。

docker docker-compose

45
推荐指数
2
解决办法
3万
查看次数

停止容器如何运行`docker-compose run`

我正在尝试用来docker-compose编排几个容器.要进行故障排除,我经常最终通过执行以下操作从容器中运行bash:

$ docker-compose run --rm run web bash
Run Code Online (Sandbox Code Playgroud)

我总是尝试传递--rm开关,以便在退出bash会话时删除这些容器.有时虽然,他们仍然存在,我看到它们的输出docker-compose ps.

           Name                          Command                State      Ports
----------------------------------------------------------------------------------
project_nginx_1            /usr/sbin/nginx                  Exit 0
project_nginx_run_1        bash                             Up         80/tcp
project_web_1              python manage.py runserver ...   Exit 128
project_web_run_1          bash                             Up         8000/tcp
Run Code Online (Sandbox Code Playgroud)

此时,我试图手动停止并删除这些组件,但我无法做到这一点.我试过了:

$ docker-compose stop project_nginx_run_1
No such service: project_nginx_run_1
Run Code Online (Sandbox Code Playgroud)

我也尝试了其他命令rm,kill等等.

我该怎么做才能摆脱这些容器?

编辑:

修正了输出docker-compose ps.

docker docker-compose

44
推荐指数
3
解决办法
3万
查看次数

如何以特权方式启动 docker-compose 容器?

我正在使用命令运行我的容器sudo docker run --privileged container_name。但现在我使用 YML 和命令docker-compose up来启动它,但我不知道如何--privileged在使用该命令启动容器时添加标志。我已经尝试添加privileged: true到 YML 但在这种情况下不起作用。

docker docker-compose

44
推荐指数
2
解决办法
6万
查看次数

如何在docker-compose容器中重新加载环境变量,停机时间最短?

泊坞窗,compose.yml

version: '2'
services:
  app:
    build:
      context: .
    command: python src/app.py
    restart: on-failure
    depends_on:
      - db
    environment:
      - TJBOT_DB_HOST=db
      - TJBOT_API_KEY
      - TJBOT_AUTO_QUESTION_TIME
    env_file:
      - .env
  db:
    image: mongo:3.0.14
    volumes:
      - mongodbdata:/data/db
volumes:
  mongodbdata:
Run Code Online (Sandbox Code Playgroud)

如果我更改.env文件,我怎样才能重新加载容器以使用新环境变量并减少停机时间?

docker docker-compose

43
推荐指数
2
解决办法
2万
查看次数

如何使用 Traefik 2.0 和 Docker Compose 标签将 http 重定向到 https?

请注意,这是一个 Traefik V2 问题。我在 V1 上有一个解决方案,但 V2 是一个彻底的重整。

以上应该将http://whoami.mysite.com重定向到 http s ://whoami.mysite.com。

  • 在HTTP小号工作很好。
  • http 不会重定向到 https 并引发错误 404。

没有其他文件。一切都在这个 Docker-compose.yml 中,因为它是准备进一步部署的测试。

version: "3.3"

services:

  traefik:
    image: "traefik:v2.0"
    container_name: "traefik"
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web-secure.address=:443"
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge=true"
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge.entrypoint=web-secure"
      #- "--certificatesresolvers.myhttpchallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--certificatesresolvers.myhttpchallenge.acme.email=me@mail.com"
      - "--certificatesresolvers.myhttpchallenge.acme.storage=/letsencrypt/acme.json"
    labels:
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  whoami:
    image: "containous/whoami"
    container_name: "whoami"
    labels:
      - "traefik.enable=true"
      - …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose traefik

43
推荐指数
7
解决办法
4万
查看次数