标签: docker-compose

Docker构成如何将路径从一个容器挂载到另一个容器?

nignx container和我的asset container所有资产都是用咕噜声或其他工具构建的.

现在在docker compose文件中,我想挂载asset container's文件夹路径,nginx container因此nginx可以提供该文件.

  • 我们怎么做?我不记得,但我认为有一个选项,我们可以分享一个容器与另一个容器的路径.

  • 假设如果我将nginx扩展到2个容器,那么该挂载是否适用于所有nginx实例?

  • 如果我扩大规模asset container那么会发生什么?

  • 我也想和我的主人一起安装它,这样可以很容易地完成开发.

docker dockerfile docker-compose

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

如何使用docker-compose v2加入默认网桥?

我尝试设置一个nginx-proxy容器,通过端口80上的子域而不是特殊端口访问我的其他容器.你可以猜到,我无法让它发挥作用.

我对Docker本身有点新意,发现编写docker-compose.yml文件对我来说更舒服,所以我不必经常编写长docker run ...命令.我认为你如何启动容器没有区别,无论是用docker还是用docker-compose.然而,我注意到的一个区别是启动容器docker并不会创建任何新的网络,但之后docker-compose会有一个xxx_default网络.

我读到不同网络上的容器无法互相访​​问,这可能是nginx-proxy没有将请求转发给其他容器的原因.但是,我无法找到一种方法来配置我的docker-compose.yml文件以不创建任何新网络,而是加入默认的桥接网络,如同docker run.

我尝试了下面这个,但是它导致了一个错误,说我无法加入这样的系统网络:

networks:
  default:
    external:
      name: bridge
Run Code Online (Sandbox Code Playgroud)

我也尝试过network_mode: bridge,但这似乎没有任何区别.

如何编写docker-compose.yml文件以不创建新网络,或者根本不可能?

奖金问题:我应该知道docker和之间是否存在其他差异docker-compose

docker docker-compose jwilder-nginx-proxy

29
推荐指数
1
解决办法
4万
查看次数

Docker 组成相当于“docker run --gpu=all”选项

docker run为了自动化用于启动 docker 容器的配置(参数),我正在编写一个docker-compose.yml文件。

我的容器应该能够访问 GPU,因此我当前使用docker run --gpus=all参数。公开 GPU 以供使用文档中对此进行了描述:

--gpus当您启动容器以访问 GPU 资源时包含该标志。指定要使用的 GPU 数量。例如:

$ docker run -it --rm --gpus 所有 ubuntu nvidia-smi

不幸的是,使用 Compose 启用 GPU 访问并没有准确描述此用例。本指南使用deployyaml 元素,但是在使用 GPU 预留机器的情况下。事实上,另一个文档说它将被忽略docker-compose

这仅在使用 docker stack deploy 部署到 swarm 时生效,并且会被docker-compose up 和 docker-compose run忽略。

docker-compose

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

使用docker compose继承或嵌套

启动我们的应用程序的最佳方式是使用我们提供的docker compose.该泊坞窗,撰写启动所有与正确配置的服务.

现在我们想提供一个docker-compose,其中应用程序使用不同的后端运行.在这个组成中,8个10个服务是相同的,2个是不同的.

没有代码重复如何实现这一目标? 我看到服务可以从另一个docker-compose文件扩展服务,但是这仍然需要列出两个文件中的所有10个服务.

docker-compose

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

28
推荐指数
3
解决办法
6643
查看次数

docker comp服务和容器之间的区别

volumes_from在docker compose中经历了选项.显然,您可以从容器或服务导入卷.从docker撰写的文档中,它是:

volumes_from

从另一个服务或容器挂载所有卷,可选择指定只读访问(ro)或读写(rw).

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw
Run Code Online (Sandbox Code Playgroud)

注意:仅在版本2文件格式中支持container:...格式.在版本1中,您可以使用容器名称而不将其标记为:

- service_name
- service_name:ro
- container_name
- container_name:rw
Run Code Online (Sandbox Code Playgroud)

我很困惑,这里的容器和服务有什么区别?

docker docker-compose

28
推荐指数
1
解决办法
8648
查看次数

docker-compose为分离模式

我有以下docker命令来运行容器

docker run -d --name test -v /etc/hadoop/conf:/etc/hadoop/conf -v /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common -v /etc/hive/conf/:/etc/hive/conf/ -v /etc/tez/conf/:/etc/tez/conf/ -v /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/ -i -t hdinsight /bin/bash
Run Code Online (Sandbox Code Playgroud)

这很复杂,所以我试图创建像这样的docker-compose文件

version: '2'
services:
  hdinsight:
    image: hdinsight
    container_name: ABC
    volumes:
     - /etc/hadoop/conf:/etc/hadoop/conf
     - /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common
     - /etc/hive/conf/:/etc/hive/conf/
     - /etc/tez/conf/:/etc/tez/conf/
     - /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/
    entrypoint:
     - bash
    labels:
     - "HDInsight client VM"
Run Code Online (Sandbox Code Playgroud)

但我不知道该到哪里-d,-i-t从我原来的码头工人,运行命令flages

我正在运行像这样的码头组合

docker-compose -f docker-compose.yml run hdinsight
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我正确的方向吗?

第一次回答后更新

我试着跑 docker-compose up -d

root@abc-docker:~/ubuntu# docker-compose up -d
Creating ABC
root@sbd-docker:~/ubuntu# docker ps -a
CONTAINER ID        IMAGE …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

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

Docker使用shell脚本运行覆盖入口点,该脚本接受参数

我有入口shell脚本,它接受参数-a -b.

我有工作的docker-compose.yml文件,我用指令覆盖tomcat的入口点:

entrypoint: /usr/local/tomcat/entrypoint.sh -a param1 -b param2
Run Code Online (Sandbox Code Playgroud)

什么是docker run替代品?

docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8
Run Code Online (Sandbox Code Playgroud)

不起作用

我明白了:

docker: Error response from daemon: 
invalid header field value "oci runtime error: container_linux.go:247: 
starting container process caused \"exec:
\\\"/usr/local/tomcat/entrypoint.sh -a param1 -b param2\\\": 
stat /usr/local/tomcat/entrypoint.sh -a param1 -b param2: 
no such file or directory\"\n".
Run Code Online (Sandbox Code Playgroud)

供参考:

docker run --entrypoint "/usr/local/tomcat/entrypoint.sh" tomcat:jre8
Run Code Online (Sandbox Code Playgroud)

从Docker的角度来看,但显然脚本失败了

docker docker-compose

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

docker-compose - 如何转义环境变量

使用docker-composev2环境变量可以简单地设置:

enviroment:
  - MONGO_PATH=mongodb://db-mongo:27017
Run Code Online (Sandbox Code Playgroud)

完整docker-compose.yml文件是:

version: '2'
services:
  web:
    build: .
    environment:
      - MONGO_PATH=mongodb://db-mongo:27017
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    depends_on: 
      - db-mongo
      - db-redis
  db-mongo:
    image: mongo
    restart: unless-stopped
    command: --smallfiles
    ports:
      - "27017:27017"
    volumes:
      - ./data:/data/db
  [...]
Run Code Online (Sandbox Code Playgroud)

但是,如何转义不是普通字符串的环境变量?

{"database": {"data": {"host": "mongo"}}}
Run Code Online (Sandbox Code Playgroud)

我试过了:

NODE_CONFIG=\{"database": \{"data"\: \{"host": "mongo"\}, "session": \{"host": "redis" \}\}\}
NODE_CONFIG="\{"database": \{"data"\: \{"host": "mongo"\}, "session": \{"host": "redis" \}\}\}"
NODE_CONFIG='{"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}'
Run Code Online (Sandbox Code Playgroud)

错误:yaml.parser.ParserError:解析"./docker-compose.yml"中的块映射,第6行,第9列预期,但在"./docker-compose.yml"第6行中找到'}',第92栏

environment-variables docker docker-compose

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

如何使用docker中的音量构成postgres?

这是我正在使用的图像.

我把它命名了 posgres_test

如果我单独运行图像

docker run -i -t -v="test_volume:/var/lib/postgresql" -p 5432:5432 posgres_test
Run Code Online (Sandbox Code Playgroud)

我可以访问它

psql -h 192.168.99.100 -p 5432 -U pguser -W pgdb
Run Code Online (Sandbox Code Playgroud)

或者我可以使用我的golang应用程序访问它

// host is set to postgres
db, err := sql.Open("postgres", "postgres://pguser:pguser@postgres:5432/pgdb")
// table test_db is manually created.
rows, err := db.Query("SELECT name FROM test_db WHERE)
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用 docker compose

docker-compose.yml

version: "2"
services:
  postgres:
    image: my_image/postgresql:9.3
    volumes:
      - test_volume:/var/lib/postgresql
    ports:
      - "5432:5432"
  web:
    image: my-golang-app4
    ports:
      - "8080:8080"
volumes:
  test_volume: {}
Run Code Online (Sandbox Code Playgroud)

我得到以下内容

pguser@pgdb ERROR:  relation "test_db" …
Run Code Online (Sandbox Code Playgroud)

postgresql docker docker-compose

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