相关疑难解决方法(0)

如何在docker compose中将主机目录挂载为卷

我有一个开发环境,我是dockerizing,我希望能够重新生成我的更改,而无需重建docker镜像.我正在使用docker compose,因为redis是我应用程序的依赖项之一,我喜欢能够链接redis容器

我有两个容器定义docker-compose.yml:

node:
    build: ./node
    links:
        - redis
    ports:
        - "8080"
    env_file:
        - node-app.env

redis:
    image: redis
    ports:
        - "6379"
Run Code Online (Sandbox Code Playgroud)

我已经在我的node应用程序的dockerfile中添加了一个卷,但是如何在卷中安装主机的目录,以便我对代码的所有实时编辑都反映在容器中?

这是我当前的Dockerfile:

# Set the base image to Ubuntu
FROM    node:boron

# File Author / Maintainer
MAINTAINER Amin Shah Gilani <amin@gilani.me>

# Install nodemon
RUN npm install -g nodemon

# Add a /app volume
VOLUME ["/app"]

# TODO: link the current . to /app

# Define working directory
WORKDIR /app

# Run npm install
RUN …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-volume

94
推荐指数
6
解决办法
12万
查看次数

如何在docker-compose.yml中为命名卷设置主机路径

下面的示例创建dbdata命名卷并在db服务中引用它:

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local
Run Code Online (Sandbox Code Playgroud)

(来自/sf/answers/2497288741/)

我可以看到卷的路径默认为:

/ var/lib/docker/volumes/project_name _dbdata

我的问题是如何在主机上为dbdata卷配置路径.

volume docker docker-compose

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

如何仅使用docker-compose.yml创建数据容器?

这个问题来自Docker的存储库中的一个问题:
https //github.com/docker/compose/issues/942

我无法弄清楚如何使用docker compose创建数据容器(没有进程正在运行).

volumes docker docker-compose

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

错误:在文件'./docker-compose.yml'中,卷必须是映射而不是字符串

为什么我会收到此错误? __CODE__

我的docker-compose文件几乎与此相同:https://docs.docker.com/compose/wordpress/

version: '2'
services:
  wordpress:
    image: wordpress:latest
    restart: always
    depends_on:
      - db
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example
      WORDPRESS_DB_HOST: 3306
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - maria_volume: /var/lib/mysql
volumes:
  maria_volume: ~/mariadb
Run Code Online (Sandbox Code Playgroud)

wordpress docker-compose docker-volume

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

在主机上chown docker卷(可能通过docker-compose)

我有以下示例

version: '2'

services:
  proxy:
    container_name: proxy
    hostname: proxy
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - proxy_conf:/etc/nginx
      - proxy_htdocs:/usr/share/nginx/html

volumes:
  proxy_conf: {}
  proxy_htdocs: {}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.当我运行docker-compose up它时,创建那些命名的卷/var/lib/docker/volumes,一切都很好.但是,从主机,我只能/var/lib/docker以root身份访问,因为它root:root(有意义).我想知道是否有一种方法可以chown将主机的目录更加明智/安全(比如,我用来在主机上做大部分工作的相对无特权的用户),或者我是否只需要chown手动操作它们.我已经开始有许多脚本可以解决其他问题了,所以有一个额外的几行不会有太大的问题,但我真的想保持自编自动化最小化,如果我可以 - 减少愚蠢错误的机会.

顺便说一句,没有:如果我挂载主机目录而不是创建卷,它们会被覆盖,这意味着如果它们开始为空,它们将保持为空,并且我没有从容器内部获得默认配置(或其他任何内容).

额外点:我可以将卷移到更方便的位置吗?说,/home/myuser/myserverstuff/volumes

chown docker docker-compose docker-volume

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

“与命名卷不同,绑定安装不会自动将容器内容复制到主机”

需要澄清这里的评论:

绑定挂载的唯一“问题”是它不会自动将容器内容复制到主机,这与命名卷不同。docs.docker.com/compose/compose-file/#volumes

这准确吗?如果是,那么:

  1. bind mount当使用(在容器重新启动时保留数据)时,如何将容器的“新数据”(例如不断增长的数据库)获取到主机中?
  2. 在此之前,Docker 是如何在容器重启后持久保存数据的named volumes

mount volume docker

6
推荐指数
3
解决办法
5285
查看次数