标签: docker

为什么在守护进程运行时出现“无法连接到 Docker 守护进程”?

Docker 服务显然正在运行:

$ systemctl status docker.service 
? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2015-12-28 19:20:50 GMT; 3 days ago
     Docs: https://docs.docker.com
 Main PID: 1015 (docker)
   CGroup: /system.slice/docker.service
           ??1015 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
$ ps wuf -u root | grep $(which docker)
root      1015  0.0  0.3 477048 12432 ?        Ssl   2015   2:26 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
Run Code Online (Sandbox Code Playgroud)

但是,Docker 本身拒绝与之交谈:

$ docker info
Cannot connect to the …
Run Code Online (Sandbox Code Playgroud)

arch-linux docker

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

Docker 容器内的进程是什么样的?

我最近多次听到关于什么是 Docker 容器的混淆,更具体地说,关于我在 Docker 容器内调用的命令和进程,内部发生了什么。

有人可以提供有关正在发生的事情的高级概述吗?

virtual-machine docker

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

`curl | 和有什么不一样?sh` 和`sh -c "$(curl)"`?

Docker 的一种简单安装方法(例如)是这样的:

curl -sSL https://get.docker.com/ | sh
Run Code Online (Sandbox Code Playgroud)

但是,我也看到了一些看起来像这样的(使用 Docker 示例):

sh -c "$(curl -sSL https://get.docker.com/)"
Run Code Online (Sandbox Code Playgroud)

它们在功能上似乎相同,但是否有理由使用一个而不是另一个?或者这只是一种偏好/审美?

(请注意,运行来自未知来源的脚本时要非常小心。)

shell pipe curl command-substitution docker

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

LXC 容器内外的用户权限?

我在我的服务器上的 Docker LXC 容器内运行一些服务,我开始真正用它们做一些严肃的事情。

我不清楚的一件事是用户权限在容器内部和外部如何工作。例如,如果我在容器中运行 MySQL 并将其数据目录设置为/dataDocker 卷,那么容器内外的权限如何影响访问策略?

显然,这个想法是在容器中以自己的用户身份运行 MySQL(即mysql:mysql),并赋予它对该目录的读写权限。我认为这将是相当简单的,只是chmoding 目录等。但这如何在容器之外工作?现在我有了这个名为“数据”的 Docker 共享卷,我该如何管理对它的访问控制?

我特别希望能够在 Docker 容器之外运行一个非特权用户,该用户将定期访问 MySQL 共享卷并备份数据。

如何设置权限、用户和组,以便主机上的特定用户可以读/写 Docker 共享卷中的文件和文件夹?

users permissions lxc docker

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

Docker 在容器内覆盖我的 /etc/resolv.conf 文件

我想将我的resin/rpi-raspbian:jessie容器设置/etc/resolv.conf为:

nameserver 208.67.222.222
nameserver 208.67.220.220
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile 有以下几行:

ADD resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

这个添加的文件包含正确的名称服务器。

我的 Docker 主机/etc/resolv.conf包含正确的信息。

我正在像这样运行容器:

docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \
-v /home/pi/share/ovpn:/ovpn \
--privileged --network=internet_disabled --name vpn-client \
--dns=208.67.222.222 \
openvpn-client_nat-gateway /bin/bash
Run Code Online (Sandbox Code Playgroud)

尽管如此,容器还是提供了以下输出:

root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0
Run Code Online (Sandbox Code Playgroud)

只有在我从容器内(或使用 docker exec)手动更改 resolv.conf 后,它才看起来正确。

我宁愿避免使用 exec 命令修复它。有人知道这里发生了什么吗?

docker

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

Docker 说“设备上没有剩余空间”但是,系统有足够的空间吗?

我正在尝试运行一个可在其他系统上运行的 docker 映像(如果您愿意,您甚至可以从 dockerhub 中提取它:它是dougbtv/asterisk)但是,在我的通用工作站上,它在抱怨可用空间(看起来像)它正在解压 docker 图像。

我尝试运行它,当我运行它时,我收到一个错误,指出它空间不足。这是我尝试运行它的一个例子,它抱怨空间。

[root@localhost docker]# docker run -i -t dougbtv/asterisk /bin/bash
Timestamp: 2015-05-13 07:50:58.128736228 -0400 EDT
Code: System error

Message: [/usr/bin/tar -xf /var/lib/docker/tmp/70c178005ccd9cc5373faa8ff0ff9c7c7a4cf0284bd9f65bbbcc2c0d96e8565d410879741/_tmp.tar -C /var/lib/docker/devicemapper/mnt/70c178005ccd9cc5373faa8ff0ff9c7c7a4cf0284bd9f65bbbcc2c0d96e8565d/rootfs/tmp .] failed: /usr/bin/tar: ./asterisk/utils/astdb2sqlite3: Wrote only 512 of 10240 bytes
/usr/bin/tar: ./asterisk/utils/conf2ael.c: Cannot write: No space left on device
/usr/bin/tar: ./asterisk/utils/astcanary: Cannot write: No space left on device
/usr/bin/tar: ./asterisk/utils/.astcanary.o.d: Cannot write: No space left on device
/usr/bin/tar: ./asterisk/utils/check_expr.c: Cannot write: No space left on device
[... another …
Run Code Online (Sandbox Code Playgroud)

fedora hard-disk docker

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

是否让 docker 安装了一个巨大的安全漏洞?

假设我有一台 Ubuntu 机器并且做了sudo apt install docker.io. 我是否只是在我的机器上放置了一个巨大的安全漏洞,允许任何具有终端访问权限的人升级为 root?

我这么问是因为我可以将任何目录作为容器内的卷安装,升级到容器内的根目录,而且似乎我可以在安装的卷中做任何我想做的事情。这一切似乎都是错误的,我觉得我肯定错过了一些东西。或者就这么简单,在 Ubuntu 的存储库中真的有一个不需要密码的“sudo”替代品?

security docker

23
推荐指数
2
解决办法
2771
查看次数

从 Docker 容器中提取文件?

我可以看到可以通过以下方式将文件插入到 Docker 容器中insert

docker insert IMAGE URL PATH
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Docker 容器中获取文件的内容并将它们保存在主机操作系统的某个地方?我想提取配置文件的值并将其存储在我的主机操作系统上。

linux docker

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

“date -d”命令在 Docker Alpine Linux 容器上失败

我使用以下 Dockerfile在Docker 容器中构建了Alpine Linux

FROM alpine:3.2
RUN apk add --update jq curl && rm -rf /var/cache/apk/*
Run Code Online (Sandbox Code Playgroud)

构建运行成功:

$ docker build -t collector .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon 
Step 0 : FROM alpine:3.2
3.2: Pulling from alpine
8697b6cc1f48: Already exists 
alpine:3.2: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: …
Run Code Online (Sandbox Code Playgroud)

linux date container docker alpine-linux

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

Docker:在特定目录中创建持久卷

我需要为 Docker创建一个持久卷。该卷必须命名extra-addons并位于/mnt/.

我运行这个命令:

sudo docker volume create /mnt/extra-addons
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

Error response from daemon: create /mnt/extra-addons: "/mnt/extra-addons" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path
Run Code Online (Sandbox Code Playgroud)

请注意,当我简单地运行: 时sudo docker volume create extra-addons,我不会遇到这个问题,但是当我使用 来检查有问题的卷时sudo docker inspect extra-addons,我发现它位于我不想要的地方:

[
    {
        "CreatedAt": "2018-04-21T14:40:25+03:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/extra-addons/_data",
        "Name": "extra-addons",
        "Options": {},
        "Scope": "local"
    }
]
Run Code Online (Sandbox Code Playgroud)

我的意思是我宁愿看到这样的音量: /mnt/extra-addons

任何的想法?

docker

22
推荐指数
3
解决办法
5万
查看次数