标签: docker-run

如何使用 <none> 标签运行 docker 镜像

我有一个带<none>标签的 docker 图像。在此处输入图片说明

我想用 TAG 运行 hello-world 图像<none>。我怎样才能做到这一点?

docker docker-run

7
推荐指数
2
解决办法
2492
查看次数

运行 docker 容器时文件“权限被拒绝”

我有一个无法编辑但需要在 Docker 容器中运行的文件。因为该文件没有扩展名,所以我必须使用 chmod 来设置文件可执行文件。但是当我从 docker 文件构建 docker 镜像后,我总是得到一个"permission denied" error

我的泊坞窗文件:

FROM alpine

COPY . /home/guestuser/bin/gateway

RUN apk add libressl-dev
RUN apk add libffi-dev

RUN pwd

WORKDIR /home/guestuser/bin/.
RUN ["chmod", "+x", "gateway"]

RUN pwd

CMD ["/home/guestuser/bin/gateway"]


EXPOSE 11878
Run Code Online (Sandbox Code Playgroud)

我总是收到这个错误:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/home/guestuser/bin/gateway\": permission denied": unknown.
Run Code Online (Sandbox Code Playgroud)

正如我已经提到的,我无法编辑我想要执行的文件。我究竟做错了什么?

chmod dockerfile docker-image docker-run

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

Dockerfile COPY 与“docker run ... cp”

我们有一个构建管道,它首先使用 dockerfile 进行 docker 构建。该 dockerfile 有许多 COPY 命令。我们还有一个后续步骤,使用“cp”命令执行 docker 运行,如下所示:

docker run --volume /hostDirA:/containerDirB --workdir /folderB dockerRepo:somebuildnum cp -R /hostDirC/。/containerDirB

首先,在要点之前,我的理解是 cp 命令是将一个文件夹复制到另一个文件夹,这两个文件夹都在容器上。这是正确的理解吗?

其次,当 COPY 已经通过 dockerfile 在 docker 构建中完成时,为什么要在 docker run 中以这种方式完成 cp ?我们是否有正当理由不将此 cp 移至 dockerfile 内?

docker dockerfile docker-build docker-run

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

ECS/Fargate 容器定义命令参数

我们正在尝试在 AWS ECS 上启动 Fargate 容器。在容器定义中我们有

"command": [
        "/bin/bash",
        "-c",
        "\"envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'\""
      ]
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

"command": [
        "/bin/bash",
        "-c",
        "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
      ]
Run Code Online (Sandbox Code Playgroud)

使用docker run,我们将成功使用:

docker run -p 8000:80 -e "VAR1=somevalue" -d nginx-sample:latest /bin/bash -c "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
Run Code Online (Sandbox Code Playgroud)

在 kubernetes 世界中(也有效):

 containers:
      env:
      - name: VAR1
        value: "somevalue"
      command: ["/bin/bash"]
      args: ["-c", "envsubst < …
Run Code Online (Sandbox Code Playgroud)

bash amazon-ecs docker aws-fargate docker-run

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

docker 容器在入口点退出

我正在尝试使用 docker run 命令通过 Dockerfile 运行 docker 容器。以下是我的 Dockerfile。

FROM python:3.6
# for imaging stuff
RUN apt-get update
RUN apt install libmagickwand-dev
# Create  app directory
RUN mkdir -p /home/test/app
# Install Libre Office and ghostscript for pdf conversion and repairing
RUN apt-get update -qq \
    && apt-get install -y -q libreoffice \
    && apt-get remove -q -y libreoffice-gnome \
    && apt-get update \
    && apt-get -y install ghostscript \
    && apt-get -y install nano \
    && apt-get -y install …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-build docker-entrypoint docker-run

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

配置docker run使用ssl/https/tls

有没有办法配置 docker run 使用 https?就像是:

docker run --https --certs xyz  myimage 
Run Code Online (Sandbox Code Playgroud)

或者你必须在 Dockerfile/image 中配置这些东西吗?对于 TLS 也是如此。

 docker run --tls --certs xyz  myimage 
Run Code Online (Sandbox Code Playgroud)

优点之一是我们不必将证书复制到映像中 - 我宁愿避免在映像和/或正在运行的容器中包含证书。

尽管我认为最佳实践是使用将-v主机中的证书共享到容器中的选项。

更新:经过一些研究,我发现了这个: https: //docs.docker.com/engine/security/https/

它说用这样的东西启动 docker 域:

 dockerd --tlsverify --tlscacert=ca.pem \
   --tlscert=server-cert.pem --tlskey=server-key.pem \
   -H=0.0.0.0:2376
Run Code Online (Sandbox Code Playgroud)

为了保护机器上的所有容器,这样做是否正确?

ssl https docker docker-run

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

如何使用 docker run 命令执行 ps1 脚本?

我需要使用官方的 PowerShell Core Docker 映像来运行 Docker 容器并使其执行 PowerShell 脚本文件。

我知道可以使用 Dockerfile 和 Docker 构建来完成,但在这种情况下不能使用它。

通过阅读文档,我想出了这个,但它似乎不起作用:

docker run -it --rm --entrypoint "/tmp/test.ps1" repo/powershell:latest

docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"/tmp/test.ps1\": stat /tmp/test.ps1: no such file or directory": unknown.
ERRO[0001] error waiting for container: context canceled
Run Code Online (Sandbox Code Playgroud)

错误似乎表明它找不到该文件,但stat "/tmp/test.ps1"手动运行时它工作正常。

我觉得pwsh还应该指定二进制文件,但找不到如何执行此操作的方法。

powershell docker devops powershell-core docker-run

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

如何将 docker run -it bash 命令转换为 docker-compose?

给出以下命令:

docker run -dit -p 9080:9080 -p 9443:9443 -p 2809:2809 -p 9043:9043 --name container_name --net=host myimage:latest bash
Run Code Online (Sandbox Code Playgroud)

如何将其转换为等效的 docker-compose.yml 文件?

docker docker-compose docker-run

4
推荐指数
1
解决办法
1657
查看次数

在一个 dockerfile 中,我们可以将多个 RUN 命令合并为一个 RUN 命令吗?

我知道每个 RUN 命令都会创建一个层。假设我有以下 RUN 命令:

RUN python -m pip install --upgrade pip
RUN python -m pip install --upgrade setuptools
RUN pip install -r requirements.txt 
Run Code Online (Sandbox Code Playgroud)

我希望在一个运行命令中运行所有命令。下面这个可以用吗?

RUN python -m pip install --upgrade pip; python -m pip install --upgrade setuptools; pip install -r requirements.txt 
Run Code Online (Sandbox Code Playgroud)

如果我使用以下内容,则会出现错误“标记‘&&’在此版本中不是有效的语句分隔符。”:

RUN python -m pip install --upgrade pip && python -m pip install --upgrade setuptools && pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-run

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

Docker容器中的Spring Boot应用程序端口映射

在我的 application.yml 文件中,我添加了 8080 上的服务器端口。

server:
  port: 8080
Run Code Online (Sandbox Code Playgroud)

现在在我的 Dockerfile 中,我公开了端口范围8080-8089。我的目标是在不同的外部和内部端口上运行此映像。

我的 Dockerfile 如下

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} user-service.jar
EXPOSE 8000-8089

ENTRYPOINT ["java","-jar","/user-service.jar"]
Run Code Online (Sandbox Code Playgroud)

我的 docker 镜像构建命令如下:

docker image build -t user-service .
Run Code Online (Sandbox Code Playgroud)

现在构建此映像后,我的 docker run 命令如下:

docker run -d -p 8080:8080  -it user-service
Run Code Online (Sandbox Code Playgroud)

这里,user-service是我的 docker 镜像 TAG。之后,我可以在 8080 端口上访问该应用程序。

但问题是,当我使用端口映射 -p 8081:8081 运行另一个容器时,应用程序正在运行,但无法使用端口 8081 进行访问。

我的 docker 运行命令是:

docker run -d -p 8081:8081  -it user-service
Run Code Online (Sandbox Code Playgroud)

现在我的目标是我想用 docker 中的外部和内部端口映射跳过 application.yml 服务器端口

注意事项

  1. 这是 .jar …

docker spring-boot dockerfile docker-run

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