需要有关创建临时 docker 容器以在主机上生成文件的指导
Need guidance for creating temporary docker container for generating file on host machine
我想创建一个 docker 容器,它可以读取名为 helloworld.proto 和 运行命令
protoc --dart_out=grpc:lib/src/generated -Iprotos protos/helloworld.proto
容器将从所有依赖项开始,并使用主机机器可以访问的 gRPC 生成所需的文件。这可以实现吗?
如果您的进程的主要目标是从主机系统读取文件并将文件写回主机系统,您会发现直接在主机系统上 运行 进程要容易得多并且不涉及 Docker.
原则上您可以使用 Docker bind mounts 使主机目录对容器可见。但是,特别是对于一次性命令,启动容器所需的命令行长度将比您尝试的命令长度长 运行:
sudo \ # docker run can take over the host so root is required
docker run \
--rm \ # delete the container when done
-v "$PWD:/data" \ # make host directive visible to container
-w /data \ # make mounted directory current working directory
-u $(id -u):$(id -g) \ # write files as current host user
some-image-containing-protoc \
proton --dart-out=grpc:lib/src/generated -Iprotos protos/helloworld.proto
通常只需一个命令(sudo apt-get install protobuf-compiler
、brew install protobuf
)即可在您的主机系统上全局安装 protoc
,这通常更易于管理。
我想创建一个 docker 容器,它可以读取名为 helloworld.proto 和 运行命令
protoc --dart_out=grpc:lib/src/generated -Iprotos protos/helloworld.proto
容器将从所有依赖项开始,并使用主机机器可以访问的 gRPC 生成所需的文件。这可以实现吗?
如果您的进程的主要目标是从主机系统读取文件并将文件写回主机系统,您会发现直接在主机系统上 运行 进程要容易得多并且不涉及 Docker.
原则上您可以使用 Docker bind mounts 使主机目录对容器可见。但是,特别是对于一次性命令,启动容器所需的命令行长度将比您尝试的命令长度长 运行:
sudo \ # docker run can take over the host so root is required
docker run \
--rm \ # delete the container when done
-v "$PWD:/data" \ # make host directive visible to container
-w /data \ # make mounted directory current working directory
-u $(id -u):$(id -g) \ # write files as current host user
some-image-containing-protoc \
proton --dart-out=grpc:lib/src/generated -Iprotos protos/helloworld.proto
通常只需一个命令(sudo apt-get install protobuf-compiler
、brew install protobuf
)即可在您的主机系统上全局安装 protoc
,这通常更易于管理。