我正在尝试将一些文件和文件夹复制到我的localhost中的docker镜像构建中.
文件是这样的:
folder1
file1
file2
folder2
file1
file2
Run Code Online (Sandbox Code Playgroud)
我正在尝试制作这样的副本:
COPY files/* /files/
Run Code Online (Sandbox Code Playgroud)
但是,所有文件都放在/ files /中是否有一种方法在Docker中保留子目录结构以及将文件复制到其目录中?
假设我的主机上有一个Docker容器和一个文件夹/hostFolder
.现在,如果我要对这个文件夹添加到多克尔容器的体积,那么我可以通过使用这样做ADD
在Dockerfile
或安装它作为一个音量.
到现在为止还挺好.
现在/hostFolder
包含一个子文件夹/hostFolder/subFolder
.
我想挂载/hostFolder
到泊坞容器(无论是读写或只读并不重要,无论是对我的作品),但我不希望把它列入/hostFolder/subFolder
.我想排除这个,我也希望Docker容器能够对这个子文件夹进行更改,而不会在主机上更改它.
这可能吗?如果是这样,怎么样?
在Dockerfile中,我有
COPY . .
Run Code Online (Sandbox Code Playgroud)
我想排除整个目录,在我的例子中,node_modules目录.
像这样的东西:
COPY [all but **/node_modules/**] .
Run Code Online (Sandbox Code Playgroud)
Docker可以实现吗?
我从openjdk创建了一个docker镜像:8-jdk-alpine但是当我尝试执行简单的命令时,我得到以下错误:
RUN bash
/bin/sh: bash: not found
RUN ./gradlew build
env: can't execute 'bash': No such file or directory
Run Code Online (Sandbox Code Playgroud) 我今天刚刚下载了适用于Windows 10 64bit的Docker Toolbox.我正在阅读教程.尝试使用Dockerfile构建映像时,我收到以下错误.
脚步:
错误:$ docker build -t docker-whale.无法准备上下文:无法评估Dockerfile路径中的符号链接:GetFileAttributesEx C:\ Users\Villanueva\Test\testdocker\Dockerfile:系统找不到指定的文件.
顺便说一句:我试过几个选项@ https://github.com/docker/docker/issues/14339
$ docker info
Containers: 4
Running: 0
Paused: 0
Stopped: 4
Images: 2
Server Version: 1.10.1
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 20
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 4.1.17-boot2docker
Operating System: Boot2Docker 1.10.1 (TCL 6.4.1); master : b03e158 - Thu …
Run Code Online (Sandbox Code Playgroud) 我有一个Python(2.7)应用程序,它在我的dockerfile中启动:
CMD ["python","main.py"]
Run Code Online (Sandbox Code Playgroud)
main.py在启动时打印一些字符串,然后进入循环:
print "App started"
while True:
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
只要我使用-it标志启动容器,一切都按预期工作:
$ docker run --name=myapp -it myappimage
> App started
Run Code Online (Sandbox Code Playgroud)
我可以稍后通过日志看到相同的输出:
$ docker logs myapp
> App started
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用-d标志运行相同的容器,容器似乎正常启动,但我看不到任何输出:
$ docker run --name=myapp -d myappimage
> b82db1120fee5f92c80000f30f6bdc84e068bafa32738ab7adb47e641b19b4d1
$ docker logs myapp
$ (empty)
Run Code Online (Sandbox Code Playgroud)
但容器似乎还在运行;
$ docker ps
Container Status ...
myapp up 4 minutes ...
Run Code Online (Sandbox Code Playgroud)
Attach也不显示任何内容:
$ docker attach --sig-proxy=false myapp
(working, no output)
Run Code Online (Sandbox Code Playgroud)
任何想法都出错了?在后台运行时"打印"的行为会不同吗?
Docker版本:
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.2
Git commit …
Run Code Online (Sandbox Code Playgroud) 在我的Dockerfile中,我想定义稍后可以在Dockerfile中使用的变量.
我知道该ENV
指令,但我不希望这些变量成为环境变量.
有没有办法在Dockerfile范围声明变量?
我在a中使用RUN指令Dockerfile
来安装rpm
RUN yum -y install samplerpm-2.3
Run Code Online (Sandbox Code Playgroud)
但是,我想传递值"2.3"作为参数.我的RUN指令应该类似于:
RUN yum -y install samplerpm-$arg
Run Code Online (Sandbox Code Playgroud)
哪里 $arg=2.3
在构建Docker镜像时,如何COPY
将文件放入图像中,以便生成的文件归root用户所有?
我正在看一个教程来 dockerize 我的 django 应用程序。我不明白为什么我们PYTHONUNBUFFERED
在DockerFile 中用作环境变量。
你能帮忙吗?
docker ×10
dockerfile ×10
alpine-linux ×1
bash ×1
copy ×1
django ×1
docker-copy ×1
dockerhub ×1
python ×1
variables ×1