标签: docker

在 docker 容器内运行后台脚本

在我的 Dockerfile 中,我运行了一个脚本:

RUN /bin/sh -c scripts/init.sh
Run Code Online (Sandbox Code Playgroud)

在内部init.sh,所有以 结尾的命令&都不会执行:我无法运行后台进程。知道为什么吗?

process docker

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

以 sudo 身份运行 docker

我安装了 boot2docker 并运行:

./boot2docker start
 export DOCKER_HOST=tcp://localhost:4243
Run Code Online (Sandbox Code Playgroud)

我从 Docker 站点开始了一个教程。

我不明白一件事 - 当我跑步时:

sudo docker info
==>
Get http:///var/run/docker.sock/v1.11/info: dial unix /var/run/docker.sock: no such file or directory
Run Code Online (Sandbox Code Playgroud)

但是,当我在没有sudo它的情况下运行时:

MacCris:bin cristianc$ docker info
Containers: 2
Images: 10
Storage Driver: aufs
 Root Dir: /mnt/sda1/var/lib/docker/aufs
 Dirs: 14
Execution Driver: native-0.2
Kernel Version: 3.14.1-tinycore64
Debug mode (server): true
Debug mode (client): false
Run Code Online (Sandbox Code Playgroud)

知道为什么像教程中那样使用 sudo 运行不起作用(至少对我而言)?

sudo docker macos

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

如何升级在 Docker 容器中运行的软件(例如 PostgreSQL)?

使用基础 PostgreSQL Docker 映像时,您选择一个 PostgreSQL 版本,启动一个容器并运行。伟大的!但是,将来升级到更新版本的 PostgreSQL 的正确/最佳方法是什么?

docker

12
推荐指数
2
解决办法
5452
查看次数

从 swarm 上的 docker 服务连接到 VPN (OpenVPN)

我有一个 OpenVPN 服务器运行,暴露了一些私有 IP 地址,我希望我的 docker swarm 服务访问这些地址。

理想情况下,容器“内部”不会有 OpenVPN 客户端,因为图像预计将部署在不需要 VPN 的环境中。

到目前为止我尝试过的

我使用dperson/openvpn-client映像成功地将容器连接到我的 VPN 。

我使用该--net=container:my-vpn-client标志成功启动了使用该容器作为其网络的另一个容器。

现在我正在尝试设置一个docker 服务来访问我的私有 IP 地址,我发现的是:

  • 我无法在服务中运行 openVPN 客户端,因为它无法提供cap-add: NET_ADMIN。Docker 在讨论这个问题时有一些悬而未决的问题,但它们仍然是悬而未决的。
  • 我想我可以让 openVPN 客户端容器在 swarm 集群“旁边”运行,但我不能使用,network_mode: "container:my-vpn-client"因为它不受支持并且确实有意义,因为我不可能强制在每个节点上都存在一个任意容器swarm 而不是服务本身。
  • 我尝试创建一个可连接的网络(桥接/覆盖),然后将我的 OpenVPN 客户端容器粘在其中,并期望该网络的其他成员神奇地通过该管道……我很失望。

所以我在这里,有什么想法吗?

PS 如果有帮助,这主要是设置一些自动化测试,这些测试将在单个 docker 机器上以 swarm 模式运行服务,如 swarm init > stack deploy > run tests > swarm leave。所以如果有一个“黑客”......我可能会感兴趣;)

vpn openvpn docker

12
推荐指数
1
解决办法
2885
查看次数

Docker for Windows - Cisco AnyConnect 的设置允许共享驱动程序

VPN 阻止了我允许 Docker for Windows 在 Windows 10 机器上共享 C: 的尝试。

当我离开 VPN 时工作正常。当它打开时,我得到

防火墙阻止了 Windows 和容器之间的文件共享。有关更多信息,请参阅文档。

文档说

您不需要在任何其他网络上打开端口 445。默认情况下,允许从 10.0.75.2(虚拟机)连接到 10.0.75.1 端口 445(Windows 主机)。

我在“谷歌搜索”试图找到如何做到这一点 - 有人可以建议吗?

我使用了 docker 18.03.1-ce-win65 (17513)、Cisco AnyConnect Secure Mobility Client 3.1.12020 和 Symatec Endpoint 14。

当我在办公室并使用电缆时,一切正常,但在家里,当我连接 VPN 时,我无法与 docker 共享驱动器。由于公司政策,我必须使用此 VPN 客户端。

windows docker docker-for-windows cisco-anyconnect

12
推荐指数
1
解决办法
9169
查看次数

在 boot2docker for Windows 中从主机挂载目录

我正在运行 docker 1.6 并boot2docker在 Windows 8.1 机器上运行。当我使用 Boot2Docker Start 快捷方式时,它会将我带到一个 cygwin bash 提示符,我可以在其中本地运行 docker 命令。

我在从我的用户文件夹安装目录时遇到问题。我试过了:

$ docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

我收到错误:

invalid value "C:\\Users\\someone\\AppData\\Roaming/Bitcoin:/datadir"
for flag -v: \Users\someone\AppData\Roaming/Bitcoin:/datadir 
is not an absolute path 
See 'c:\Program Files\Boot2DockeForWindows\docker.exe run --help'.
Run Code Online (Sandbox Code Playgroud)

当我这样称呼它时,我得到了相同的结果:

$ docker run -d --name abe -v "$APPDATA/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v "/c/users/someone/AppData/Roaming/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v ~/AppData/Roaming/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

我也试过:

$ docker run -d --name abe …
Run Code Online (Sandbox Code Playgroud)

windows cygwin bash windows-8.1 docker

11
推荐指数
2
解决办法
9975
查看次数

Windows 容器:容器管理员与管理员?

当谈到使用 Docker 的用户时,我有点困惑。当我运行 Windows 容器(例如 microsoft/windowsservercore)并输入“whoami”时,我得到以下响应

user manager\containeradministrator
Run Code Online (Sandbox Code Playgroud)

但是当在容器内运行“net user”时,我没有看到任何容器管理员,而只是

-------------------------------------------------------------------------------
Administrator            DefaultAccount           Guest
Run Code Online (Sandbox Code Playgroud)

那么这个conataineradministrator到底是什么用户,他有什么权限呢?他是否属于某个用户组?

windows permissions container docker

11
推荐指数
1
解决办法
2242
查看次数

如何在 Designare ex x399 上启用硬件虚拟化?

我刚刚完成了一个新的工作站构建(Designare EX x399、Threadripper 1950x、gtx 1080ti)并且一切正常,除了 Docker 不起作用,因为我需要在 BIOS 中启用硬件辅助虚拟化。但是,我找不到选项或与我如何启用它相关的任何材料。这个主板可以吗?

bios virtualization docker threadripper

11
推荐指数
1
解决办法
9314
查看次数

即使 server_name 不匹配,Nginx 也会为站点提供服务

这是我的nginx配置(作为 docker 容器运行,以防万一):

events {
    worker_connections 4096;  ## Default: 1024
}

http {
    server {
        server_name registry.mydomain;
        listen 80;
        listen 443 ssl;
        client_max_body_size 0;  # Disables checking, to avoid "request entity too large"
        ssl_certificate /etc/nginx/certs/registry.crt;
        ssl_certificate_key /etc/nginx/certs/registry.key;

        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://registry:5000;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,nginx即使是对其他域的请求,它也在为该站点提供服务。这是预期的:

$ http http://registry.mydomain/v2/_catalog?n=100
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 20
Content-Type: application/json; charset=utf-8
Date: Thu, 05 Apr 2018 12:43:21 GMT
Docker-Distribution-Api-Version: …
Run Code Online (Sandbox Code Playgroud)

nginx ubuntu docker

11
推荐指数
1
解决办法
8304
查看次数

使用 dockercomposer-compose 转发 ssh 密钥

在 docker 中,18.09+我们可以使用以下方法在构建镜像时使用转发的 ssh 密钥:

# syntax=docker/dockerfile:experimental
# example file
FROM node:10.15.3-alpine

RUN apk update && apk add openssh-client git

# use the forwarded ssh key
RUN --mount=type=ssh git clone <repo>
Run Code Online (Sandbox Code Playgroud)

然后我们将像这样构建图像:

DOCKER_BUILDKIT=1 docker build --ssh default .
Run Code Online (Sandbox Code Playgroud)

我想用docker-compose它来实现这一点,但它似乎不起作用。--sshdocker-compose 命令没有标志,我看不到可以在docker-compose.yml文件中设置的任何内容来完成此操作。

ssh forwarding ssh-keys docker

11
推荐指数
1
解决办法
8486
查看次数