在Dockerfile中,我有
COPY . .
Run Code Online (Sandbox Code Playgroud)
我想排除整个目录,在我的例子中,node_modules目录.
像这样的东西:
COPY [all but **/node_modules/**] .
Run Code Online (Sandbox Code Playgroud)
Docker可以实现吗?
我正在尝试将一些文件从我的docker容器复制到我的localhost,我阅读了文档说明这样做的方法
docker cp 'container':path/to/file dest/path
Run Code Online (Sandbox Code Playgroud)
但是这需要我知道容器中我想要的路径和目录,如何查看容器的目录?我试过docker diff和docker inspect但是这些没有显示容器的文件目录
我是 Docker 的初学者,我正在尝试分两个阶段构建映像,如下所述:https : //docs.docker.com/develop/develop-images/multistage-build/
您可以有选择地将工件从一个阶段复制到另一个阶段
查看那里给出的示例,我认为可以在第一阶段构建一些文件,然后将它们提供给下一个阶段:
FROM golang:1.7.3 AS builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]
Run Code Online (Sandbox Code Playgroud)
(示例取自上述链接页面)
那不是应该做的COPY app.go .
和COPY --from=builder /go/src/github.com/alexellis/href-counter/app .
应该做的吗?
我可能对正在发生的事情有一个完全的误解,因为当我尝试做类似的事情时(见下文),似乎COPY
第一阶段的命令无法看到刚刚构建的文件(我可以确认它们实际上是使用一个RUN ls
步骤构建的,但是我得到了一个lstat <the file>: no such file or directory
错误)。
事实上,我可以收集到的大多数其他信息COPY
(除了上面链接中的示例),而是表明这COPY
实际上是为了从 …
我正在尝试将整个目录从我的docker映像复制到本地计算机.
图像是一个keycloak图像,我想复制主题文件夹,以便我可以处理自定义主题.
我正在运行以下命令 -
docker cp 143v73628670f:keycloak/themes ~/Development/Code/Git/keycloak-recognition-login-branding
Run Code Online (Sandbox Code Playgroud)
但是我收到以下回复 -
Error response from daemon: Could not find the file keycloak/themes in container 143v73628670f
Run Code Online (Sandbox Code Playgroud)
当我使用 - 连接到我的容器时 -
docker exec -t -i 143v73628670f /bin/bash
Run Code Online (Sandbox Code Playgroud)
我可以使用 - 导航到主题 -
cd keycloak/themes/
Run Code Online (Sandbox Code Playgroud)
我可以看到它位于那里,文件在终端中是预期的.
我在Mac上本地运行实例.
如何将整个主题文件夹复制到本地计算机?我做错了什么?
在Dockerfile中,将目录复制为非root用户(例如$ UID 1000)的常用方法如下:
COPY --chown=1000:1000 /path/to/host/dir/ /path/to/container/dir
Run Code Online (Sandbox Code Playgroud)
但是,我想改用变量。例如
ARG USER_ID=1000
ARG GROUP_ID=1000
COPY --chown=${USER_ID}:${GROUP_ID} /path/to/host/dir/ /path/to/container/dir
Run Code Online (Sandbox Code Playgroud)
但这是不可能的。有解决方法吗?
请注意,我知道一个可能的解决方法是将目录复制为root,然后在目录上运行chown(变量与可以很好地配合使用RUN
)。但是,仅在单独的命令中使用chown时,图像的大小会增加。
我需要在第一阶段排除 Docker COPY 中的文件,但在第二阶段的另一个 COPY 中使用它,因为它会破坏 Docker 层缓存。
我的文件夹结构如下:
src/
public/
.env
package.json
nginx.conf
Run Code Online (Sandbox Code Playgroud)
我的 Dockerfile 如下所示:
FROM node:14 as builder # line-1
WORKDIR /app # line-2
COPY . /app # line-3 nginx.conf is copied but not needed
RUN yarn && yarn build # line-4
FROM nginx:1.21.1 # line-5
WORKDIR /app # line-6
COPY --from=builder /app/build /app/build # line-7
COPY nginx.conf /app # line-8 nginx.conf is copied
CMD nginx -c /app/nginx.conf # line-9
Run Code Online (Sandbox Code Playgroud)
当我更改nginx.conf
docker 层缓存时,由于第三行,缓存变得无效。
我无法使用,.dockerignore
因为它会在两个阶段都忽略它。 …
我想将目录从主机复制到容器,但无法使用以下命令:
$ docker cp -r <a-dir> <a-container-ID>:/destination/path
unknown shorthand flag: 'r' in -r
Run Code Online (Sandbox Code Playgroud)
使用scp -r
shell 命令我可以做到,所以我也期待docker cp -r
。
如何在不使用 make compress .tar 文件及其提取物的情况下克服它?
我的问题是我有一个docker-compose.yml
文件和一个haproxy.cfg
文件,我想让docker-compose将haproxy.cfg
文件复制到docker容器中。根据Docker composer发布后的复制文件,我可以使用卷来执行此操作,但就我而言,出现以下错误。谁能帮助我实现这一目标。
以下是代码和所有内容
docker-compose.yml
version: "3.3"
services:
###After all services are up, we are initializing the gateway
gateway:
container_name: gateway-haproxy
image: haproxy
volumes:
- .:/usr/local/etc/haproxy
ports:
- 80:80
network_mode: "host"
Run Code Online (Sandbox Code Playgroud)
资料夹结构
命令输出
root@ubuntu:/home/karunesh/Desktop/Stuff/SelfStudy/DevOps/docker# docker-compose up
Creating gateway-haproxy ...
Creating gateway-haproxy ... done
Attaching to gateway-haproxy
gateway-haproxy | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds
gateway-haproxy | [ALERT] 219/163305 (6) : [/usr/local/sbin/haproxy.main()] No enabled listener found (check for 'bind' directives) …
Run Code Online (Sandbox Code Playgroud) Say we have a simple deployment.yml file:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ikg-api-demo
name: ikg-api-demo
spec:
selector:
matchLabels:
app: ikg-api-demo
replicas: 3
template:
metadata:
labels:
app: ikg-api-demo
spec:
containers:
- name: ikg-api-demo
imagePullPolicy: Always
image: 913xxx371.dkr.ecr.us-west-2.amazonaws.com/main_api:c56cefbd0c81142558cf814cba7d7cd75d7cb6a7
ports:
- containerPort: 80
Run Code Online (Sandbox Code Playgroud)
the problem is that this image/container depends on another image/container - it needs to cp data from the other image, or use some shared volume.
How can I tell kubernetes to download another image, run it as a container, …
docker-copy ×9
docker ×7
dockerfile ×4
amazon-eks ×1
docker-image ×1
docker-layer ×1
eks ×1
haproxy ×1
keycloak ×1
kubernetes ×1
shell ×1
ubuntu ×1