文档说:
在这种配置下,当容器消耗内存超过200M且小于500M时,下次系统内存回收尝试将容器内存收缩到200M以下。
但这实际上意味着什么?
假设我有一个运行 Solr 的容器,并且:
docker run -m 1G --memory-reservation 768M solr
开始使用800M内存时,对容器内部的Solr进程有什么影响?没有?
是否仅当/当内存使用量随后降至 768M 以下时...此标志允许 docker 从 solr 容器中回收内存?...否则容器将继续消耗高水位内存使用情况?
这与群调度有什么关系?如果 swarm 总是为容器分配 1G 因为-m那么--memory-reservation在这种情况下没有用?
当我必须在一个图像中运行多个服务(例如 postfix 和其他邮件服务)时,我在 docker 图像中使用主管。当我将所有服务的 stdout/stderr 重定向到主管并且主管也登录到 stdout/stderr 时,我希望在控制台上的实际日志输出前面有一个前缀/标签,以了解哪个日志来自哪个服务。我找不到任何配置设置,但也许你知道一种方法。
我需要在 Kubernetes 中运行这个 Docker 命令:
docker run -p 8080:8080 sagemath/sagemath sage -notebook
Run Code Online (Sandbox Code Playgroud)
我可以映射除“-notebook”之外的所有内容 - 有谁知道怎么做?
这是我到目前为止所拥有的,当然它不起作用,因为“-notebook”没有正确转换为 kubectl:
kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
Run Code Online (Sandbox Code Playgroud) 根据官方文档,可以“强制”删除卷。文档中的--force. 到目前为止,我在网络上发现的这意味着删除其他容器仍在使用的卷。
使用该--force选项似乎没有影响:
$ docker volume create mydata
$ docker docker run -v mydata:/mydata alpine:latest /bin/sh -c "touch /mydata/mydata.test; ls /mydata"
$ docker volume rm --force mydata
Error response from daemon: unable to remove volume: remove mydata: volume is in use - [1cbcfa3d47a32db7b0075e113216f7146a436a4da22a97dc2f7b60c68de95c3d]
Run Code Online (Sandbox Code Playgroud)
这与省略--force标志时的输出相同。这是一个错误还是我误解了什么?
$ docker version
Client:
Version: 18.01.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: 03596f5
Built: Wed Jan 10 20:09:13 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server: …Run Code Online (Sandbox Code Playgroud) 我得到:
PS C:\tmp> docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
no matching manifest for windows/amd64 in the manifest list entries
Run Code Online (Sandbox Code Playgroud)
现在,在你说“复制!”之前,“确保它处于实验模式”,就像这个问题的所有其他答案一样,我有.
我已按照基于 LinuxKit 的 LCOW 映像的说明进行操作,甚至阅读并按照步骤从在 Windows 上运行 Linux 容器手动创建 hyper-v 映像。
我已经下载了 Docker 的夜间版本。
我在实验模式下运行:
PS C:\tmp> docker version
Client:
Version: master-dockerproject-2018-02-01
API version: 1.36
Go version: go1.9.3
Git commit: 26a2a459
Built: Thu Feb 1 23:50:28 2018
OS/Arch: windows/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: master-dockerproject-2018-02-01 …Run Code Online (Sandbox Code Playgroud) 我需要在 Docker 容器内创建命名空间。作为其中的一部分,我需要将/proc私有挂载到内部命名空间。我意识到我必须以特定权限运行容器才能实现这一点,但我更愿意启用最小集。
这有效:
$ sudo docker run --privileged --security-opt=seccomp=unconfined \
-it fedora:rawhide /usr/bin/unshare -Ufmp -r \
/bin/sh -c 'mount -t proc proc /proc'
Run Code Online (Sandbox Code Playgroud)
这不会:
$ sudo docker run --cap-add=sys_admin --security-opt=seccomp=unconfined \
-it fedora:rawhide /usr/bin/unshare -Ufmp -r \
/bin/sh -c 'mount -t proc proc /proc'
mount: /proc: cannot mount proc read-only.
Run Code Online (Sandbox Code Playgroud)
因此,仅关闭 seccomp 过滤器并添加CAP_SYS_ADMIN是不够的。什么是足够了吗?
更新: Selinux 是问题的一部分。如果您全局关闭 selinux 强制,它会起作用。但是,您也可以使用 关闭对特定容器的强制执行--security-opt label:disable,这在在线 Docker 手册的安全配置部分有记录:
sudo docker run --cap-add=sys_admin --security-opt …Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 16.04 上使用 Docker CE,使用 ZFS 作为 Docker 的存储。设置非常标准:
/var/lib/docker。大部分时间一切正常。但是,有时当我的 VM 启动时,zpool 无法挂载。我相信(虽然我不是 100% 确定)这是因为 Docker 服务在 ZFS 文件系统安装之前启动,实际上我看到/var/lib/docker在根 FS 上创建了一个文件夹。
如何确保在挂载所有 ZFS 文件系统之前 Docker 服务不会启动?
我有一个 docker swarm 配置,在那里我部署了两个堆栈(main和mon),我可以在一个堆栈中公开一个端口,我可以从另一个堆栈中引用它。但是,我试图找到一种不这样做的方法,而是让它使用 127.0.0.11 DNS 访问它。
在mon我有一项名为grafana
使用https://docs.docker.com/docker-cloud/apps/service-links/#discovering-services-or-containers-on-another-stack这表明我可以使用堆栈名称来引用它没有当我尝试ping grafana.mon它时,它只返回无效的主机名。
Docker 的新手,我正在努力使其正确。
我想创建一个 docker 容器来“深度冻结”使用 bash 脚本和大量依赖项创建的应用程序,这样我就不必再维护它了。我认为 docker 会帮助我解决这个问题。将更新/升级语句放在 Dockerfile 中(如“apt-get upgrade”)是一个好习惯吗?这不会在未来破坏应用程序,这是 docker 应该阻止的吗?
我已经使用 letencrypt 设置了 nginx 以使用 https。我/etc/nginx/conf.d/app.conf的如下(没有server配置其他指令):
server {
location /.well-known/acme-challenge/ {
autoindex on;
root /var/www/certbot/;
}
location / {
return 301 https://$host$request_uri;
}
server_name example.com;
listen 80;
}
server {
listen 443;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
server_name example.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location /static/ {
gzip on;
gzip_static on;
gzip_types text/plain text/css text/javascript application/javascript;
gzip_disable "msie6";
alias /static/;
autoindex off;
}
# many other locations
}
Run Code Online (Sandbox Code Playgroud)
当我尝试打开时https://example.com,nginx 返回 …
docker ×10
docker-swarm ×1
https ×1
kubernetes ×1
logging ×1
namespaces ×1
nginx ×1
security ×1
supervisord ×1
ubuntu ×1
ubuntu-16.04 ×1
zfs ×1
zfsonlinux ×1