相关疑难解决方法(0)

如何从docker容器访问主机端口

我有一个运行jenkins的码头集装箱.作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器.有没有办法将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器?

编辑:我在Linux机器上本地运行docker.

更新:

除了下面的@larsks答案,要从主机获取主机IP的IP地址,我还会执行以下操作:

ip addr show docker0 | grep -Po 'inet \K[\d.]+'
Run Code Online (Sandbox Code Playgroud)

docker docker-container

217
推荐指数
13
解决办法
18万
查看次数

在docker build期间在主机上执行命令

是否可以创建Dockerfile在构建映像时在主机上执行命令?

现在我在做:

./script_that_creates_magic_file.sh
docker build .
Run Code Online (Sandbox Code Playgroud)

使用Dockerfile:

FROM alpine
COPY magic_file
Run Code Online (Sandbox Code Playgroud)

我希望能够做到:

docker build .
Run Code Online (Sandbox Code Playgroud)

使用Dockerfile:

FROM alpine
# invoke script_that_creates_magic_file.sh on the host
COPY magic_file
Run Code Online (Sandbox Code Playgroud)

当然,此脚本与Dockerfile位于同一目录中.

docker dockerfile

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

docker容器文件夹中的命名管道通过boot2docker挂载到mac os x文件系统

我正在使用Mac OS X上的boot2docker通过docker image包装一些科学软件.该软件(https://github.com/voutcn/megahit.git)正在使用命名管道(在python代码中,但它并不重要)将不同的部分(用C书写)相互连接起来.我从主机Mac OS X机器挂载临时文件夹,在docker容器中提供临时区域(因为软件的临时输出可能很大),如下所示:

docker run -v /external/folder:/tmp/scratch <image> <args>
Run Code Online (Sandbox Code Playgroud)

它给了我在容器内的这个挂载线:

none on /tmp/scratch type vboxsf (rw,nodev,relatime)
Run Code Online (Sandbox Code Playgroud)

在这个挂载的文件夹中,名为管道创建在容器内运行时失败.它甚至与python,C或任何特定语言无关.我mkfifo pipe1在这个文件夹中用linux命令检查了一次错误:

mkfifo: cannot create fifo 'pipe1': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

它适用于容器内任何内部未安装的文件夹.为什么会发生这种情况又如何解决?

PS:这是我轻松重现问题的方法.

1)带有boot2docker的Mac OS X.

2)Dockerfile是:

FROM ubuntu:14.04
#WORKDIR /tmp <- this one would work
WORKDIR /tmp/scratch
ENTRYPOINT [ "mkfifo" ]
CMD [ "pipe1" ]
Run Code Online (Sandbox Code Playgroud)

3)图像构建:

docker build --rm -t mine/namedpipes:latest .
Run Code Online (Sandbox Code Playgroud)

4)运行(在要安装的外部主机文件夹中):

docker run -v $(pwd):/tmp/scratch mine/namedpipes:latest
Run Code Online (Sandbox Code Playgroud)

macos named-pipes docker boot2docker

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

Docker run script in host on docker-compose up

thank you for watching this question.

So my question relates to best practices on how to run a script on a docker-compose up directive.

Currently i'm sharing a volume between host and container to allow for the script changes to be visible to both host and container. Similar to a watching script polling for changes on configuration file.

The script has to act on host on changes according to predefined rules.

So my question is:

How could I start this …

bash docker dockerfile docker-compose docker-machine

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

从Docker容器中执行主机命令

我正在寻找一种方法,使用户能够在主机上执行一组有限的命令,而仅从容器/浏览器访问它。我们的目标是防止主机需要SSH'ing只是运行命令偶尔喜欢make startmake stop等等。这些make命令只是执行一系列的docker-compose命令,并在开发有时需要。

我想到的两种可能方法是:

  • 通过浏览器内部的cloud9终端(我们已经在使用它)。默认情况下,此终端当然只访问容器本身。
  • 通过一个自定义的微型web应用程序(例如node.js / express),其中的按钮映射到命令。如果在主机本身上运行,这将很容易做到,但是我想将所有这样的代码保留在容器中。

security docker

4
推荐指数
2
解决办法
8379
查看次数

从另一个正在运行的容器重新启动 docker 容器

我正在使用 docker-compose 进行部署。我想从“centos-2”容器重新启动我的“centos-1”容器。两个容器都在同一台主机上运行。请建议,我怎样才能以最简单和自动化的方式实现这一目标?

我遵循了如何从 docker 容器在主机上运行 shell 脚本?并尝试从“centos-2”容器在主机上运行脚本,但该脚本是在容器内而不是在主机上执行的。

脚本:

    #!/bin/bash
    sudo docker container restart centos-1
Run Code Online (Sandbox Code Playgroud)

错误:

    line 2: docker: command not found
Run Code Online (Sandbox Code Playgroud)

(Docker 没有安装在任何 centos-2 容器中)

docker docker-compose

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

通过docker容器访问主机

如何通过docker容器运行命令来访问主机?我需要访问主机,以便可以检查 Docker 容器和映像的空间使用情况。

docker

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