使用docker-compose创建命名的docker卷?

时间:2016-06-08 14:14:32

标签: docker docker-compose

我在码头版本1.11.2上。 我能够创建命名的docker卷:

docker volume create --name my-jenkins-volume

我能够使用-v选项将我的容器与命名卷连接起来:

docker run -d -u jenkins --name jenkins -p 50000:50000 -p 443:8443 -v my-jenkins-volume:/var/jenkins_home

是否可以在docker-compose中创建此命名卷?

4 个答案:

答案 0 :(得分:4)

我尝试过这个解决方案并为我工作

version: '3.1'

services:
  alp:
    image: alpine
    volumes:
        - my-jenkins-volume:/your/local/path
    command: sleep 10000


volumes:
    my-jenkins-volume:
        external: false

外部如果您从外部来源提供音量,而不是直接来自docker-compose规范

,则为true

参考文档 https://docs.docker.com/compose/compose-file/#volume-configuration-reference

答案 1 :(得分:3)

是的,这是可能的。事实上,我认为在docker compose中创建它会更好。 以下是我的docker-compose.yml之一的示例:

version: '2'
services:

  db:
    image: mysql
    restart: always
    volumes:
      - "wp-db:/var/lib/mysql:rw"

volumes:
  wp-db: {}

这里,指定的卷是" wp-db" 然后,如果你想在另一个docker-compose.yml文件中使用你的卷,你可以使用keyworkd external:

volumes:
    my-jenkins-volume:
        external: true

(注意:这是在顶级卷关键字中,而不是在服务部分中)

答案 2 :(得分:0)

使用最新的撰写版本(3),您可以自动创建卷。

以您的示例为例:

version: '3'
services:
  jenkins:
    image: jenkins/jenkins
    container_name: 'jenkins'
    volumes:
      - jenkins_home:/var/jenkins_home
    ports:
      - '8080:8080'
      - '50000:50000'
    networks:
      - 'ci'
    environment:
      TZ: 'Europe/Paris'
    restart: unless-stopped
volumes:
  jenkins_home:

如果指定external: true,则必须使用指定的命令从外部创建卷。

答案 3 :(得分:0)

我个人发现,在版本3.2中添加的long syntax比旧的short syntax更清晰。

在下面的示例中,我们可以看到 web 服务使用长语法的命名卷(.catch)。

db 服务还使用名为mydata的命名卷(db服务卷下的第二个路径),但是使用旧的字符串格式对其进行定义以装入命名卷:

dbdata

(*)注意,必须在顶级卷键下列出命名卷。
(**)在here中了解更多。