相关疑难解决方法(0)

Dockerfile中VOLUME的用途是什么

我正在努力深入了解Docker的数量,并且我很难弄清楚差异/用例:

  • docker volume create命令
  • docker run -v /path:/host_path
  • 文件中的VOLUME条目Dockerfile

我特别不明白如果将VOLUME条目与-v标志组合起来会发生什么.

如果有人理解得很好,请解释我!

volume docker

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

如何在docker图像中"取消声明"卷?

我正在编写一个Dockerfile来设置用于测试Web应用程序的映像.我基于tutum/lamp图像(https://github.com/tutumcloud/tutum-docker-lamp/blob/master/Dockerfile),因为这似乎是一个很好的基础.

作为我的dockerfile的一部分,我想创建一个mysql数据库并在其中设置一些东西.但是,tutum/lamp图像声明VOLUME ["/etc/mysql", "/var/lib/mysql" ],所以如果我理解正确,我在Dockerfile中对MySQL数据库所做的任何更改都不会被保留.

  • 我理解正确吗?

如是,

  • 有没有办法"取消声明"这些卷,以便这些目录将像其他一切一样成为联合文件系统的一部分?

谢谢!

mysql docker

13
推荐指数
1
解决办法
1989
查看次数

使用 Cargo Run 时跳过更新 crates.io 索引

我有一个用 Rust 编写的简单程序。当我cargo run在终端输入时,它总是显示:

Updating crates.io index...
Run Code Online (Sandbox Code Playgroud)

这大约需要 40 秒。但我只是想执行我的程序,并且我认为货物不需要每次运行程序时都更新索引,因为这使得测试非常慢......

有没有一个选项可以跳过它?

rust rust-cargo

11
推荐指数
2
解决办法
8206
查看次数

VOLUME命令在Dockerfile中做了什么?

我很难理解VOLUME(https://docs.docker.com/engine/reference/builder/#volume)的附加优势.

在Dockerfile中,可以使用mkdir来创建目录.创建目录后,我们可以处理它.为什么指定VOLUME(mount)并分配给该目录?VOLUME mount有什么优势?我试图在没有VOLUME的情况下理解我们会错过什么.

对我来说它看起来像一个冗余的功能,但我可能是错的.

docker dockerfile

9
推荐指数
2
解决办法
4903
查看次数

Dockerfile中VOLUME的实际用途是什么?

首先,我想明确表示我已经在研究这个主题方面做了尽职调查.非常密切相关的是这个问题,这并没有真正解决我的困惑.

我知道,当VOLUME在Dockerfile中指定时,这指示Docker在容器的持续时间内创建一个未命名的卷,该容器被映射到其内部的指定目录.例如:

# Dockerfile
VOLUME ["/foo"]
Run Code Online (Sandbox Code Playgroud)

这将创建一个卷来包含存储在/foo容器内的任何数据.音量(通过观看时docker volume ls)会显示为随机混乱的数字.

每次执行docker run此操作时,不会重复使用此卷.这是引起混淆的关键点.对我来说,卷的目标是在所有映像实例中包含状态持久性(所有容器都从它开始).所以基本上如果我这样做,没有明确的卷映射:

#!/usr/bin/env bash
# Run container for the first time
docker run -t foo

# Kill the container and re-run it again. Note that the previous 
# volume would now contain data because services running in `foo`
# would have written data to that volume.
docker container stop foo
docker container rm foo

# …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

9
推荐指数
1
解决办法
349
查看次数

对于代码使用卷,这是一个docker最佳实践吗?

VOLUME指令应用于公开由docker容器创建的任何数据库存储区域,配置存储或文件/文件夹.强烈建议您将VOLUME用于图像的任何可变和/或用户可维修部分.

你会将你的代码存储在卷中吗?

比如你的jar文件.在不重建映像的情况下部署应用程序可能会有点方便.
如果将代码存储在卷中,是否有任何考虑因素?喜欢表现,安全或其他.

docker

7
推荐指数
1
解决办法
1757
查看次数

Dockerfile - 如何从本地文件夹复制文件?

以下是Dockerfile

FROM golang:1.14.10
MAINTAINER xyz

COPY ~/go/bin/product-api /go/bin/product-api

COPY ~/go/bin/swagger /go/bin/swagger

ENTRYPOINT ["/go/bin/product-api"]
Run Code Online (Sandbox Code Playgroud)

docker build -t cloud-native-product-api:1.0.0 .,给出了错误:

Step 3/5 : COPY ~/go/bin/product-api /go/bin/product-api
COPY failed: stat /var/lib/docker/tmp/docker-builder398080099/~/go/bin/product-api: no such file or directory
Run Code Online (Sandbox Code Playgroud)

我认为图像构建过程将/var/lib/docker/tmp/docker-builder398080099作为工作区并从该路径引用。

如何将文件从本地机器的特定文件夹复制到 Docker 镜像中?

docker dockerfile docker-volume

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

每次我执行 docker compose up 时,Docker 都会创建一个新卷

我有一个 docker-compose 文件,可以启动多个服务。我刚刚收到一条错误消息,指出我的磁盘空间不足,因此我输入“docker system df”并看到我有 21 个卷。如果我有 3 个 docker 容器,每个容器都附加一个卷,为什么它显示的卷总数为 21 个?

我正在使用 AWS EC2。这是我的撰写文件,我设置卷的方式有什么问题吗?当我关闭并重新启动时,postgres 数据得到保留,我只是对卷大小和由于 T2 Large 实例上没有空间而无法重建的消息感到困惑。

version: "3"
services:
  nftapi:
    env_file:
      - .env
    build:
      context: .
    ports:
      - '443:5000'
    depends_on: 
      - postgres
    volumes: 
      - .:/app
      - /app/node_modules
    networks:
      - postgres
      
  postgres:
    container_name: postgres
    image: postgres:latest
    ports:
    - "5432:5432"
    volumes:
    - /data/postgres:/data/postgres
    env_file:
    - docker.env
    networks:
    - postgres
 
  pgadmin:
    links:
    - postgres:postgres
    container_name: pgadmin
    image: dpage/pgadmin4
    ports:
    - "8080:80"
    volumes:
    - /data/pgadmin:/root/.pgadmin
    env_file:
    - docker.env
    networks:
    - …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services docker

5
推荐指数
1
解决办法
4366
查看次数