标签: docker

在Ubuntu上安装docker时,为什么不像apt-get install docker那么简单?

我已经按照 docker 网站上的说明在 Ubuntu 上安装了 docker 十几次(7 个命令,包括删除旧版本、添加 gpg 钥匙串等)。我总是直接通电,但今天我停下来想知道为什么这不仅仅是一个命令。apt 肯定足够聪明,可以做到这一切。当然,我通过肌肉记忆安装的数百个其他软件包并不更难管理。

这是一个关于官方 apt repo 注册如何工作、docker 有何不同以及哪些历史或业务决策导致 docker install 需要十几个步骤而不是一个步骤的问题。

ubuntu gpg repository apt docker

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

为什么mongo的官方docker镜像不使用XFS,然后警告不使用它?

根据官方文档,带有 WiredTiger 的 MongoDB 应该在带有 XFS 文件系统的 Linux 上运行。然而,mongo 的官方 docker 镜像使用 ext4,这意味着每当我们启动容器时都会收到警告:

Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem"
Run Code Online (Sandbox Code Playgroud)

那么为什么官方的docker镜像不使用XFS呢?这是一个可以忽略不计的问题吗?

xfs mongodb docker

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

停止 postgresql 容器

我有一个关于停止数据库容器的问题。

  • 我有一个运行 postgresql的docker 镜像。当我使用此图像创建容器时:

sudo docker run --name db -d asg1612/postgresql

  • 它运行命令:

/usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf

  • 并且目录/var/lib/pgdata被创建为容器卷

  • 我停止容器:

须藤泊坞窗停止数据库

数据库会正常停止吗?

我会有损坏的数据吗?

postgresql docker

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

了解 OOM 杀手日志

我在 docker 容器中运行了一些进程,并且我对该容器使用了内存限制。有时 docker 容器内的一些进程被 OOM 杀手杀死。我在 syslog 文件中看到:

beam.smp invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0
beam.smp cpuset=/ mems_allowed=0
CPU: 0 PID: 20908 Comm: beam.smp Not tainted 3.13.0-36-generic #63~precise1-Ubuntu
Hardware name: Xen HVM domU, BIOS 4.2.amazon 05/23/2014
 ffff880192ca6c00 ffff880117ebfbe8 ffffffff817557fe 0000000000000007
 ffff8800ea1e9800 ffff880117ebfc38 ffffffff8174b5b9 ffff880100000000
 000000d08137dd08 ffff880117ebfc38 ffff88010c05e000 0000000000000000
Call Trace:
 [<ffffffff817557fe>] dump_stack+0x46/0x58
 [<ffffffff8174b5b9>] dump_header+0x7e/0xbd
 [<ffffffff8174b64f>] oom_kill_process.part.5+0x57/0x2d4
 [<ffffffff81075295>] ? has_ns_capability_noaudit+0x15/0x20
 [<ffffffff8115b709>] ? oom_badness.part.4+0xa9/0x140
 [<ffffffff8115ba27>] oom_kill_process+0x47/0x50
 [<ffffffff811bee4c>] mem_cgroup_out_of_memory+0x28c/0x2b0
 [<ffffffff811c122b>] mem_cgroup_oom_synchronize+0x23b/0x270
 [<ffffffff811c0ac0>] ? memcg_charge_kmem+0xf0/0xf0
 [<ffffffff8115be08>] pagefault_out_of_memory+0x18/0x90
 [<ffffffff81747e91>] mm_fault_error+0xb9/0xd3
 [<ffffffff81766267>] ? __do_page_fault+0x317/0x570
 [<ffffffff81766495>] __do_page_fault+0x545/0x570 …
Run Code Online (Sandbox Code Playgroud)

linux cgroup oom-killer docker

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

如何让正在运行的 Docker 容器知道其他容器?

我在需要在配置文件中设置客户端 IP 地址的服务器上管理一个分布式服务。

目前,在连接到客户端的服务器之前启动了几个客户端容器。这使服务器能够从其名称中检索其 IP 地址,如其/etc/hosts. 然后在配置文件中设置此信息。它适用于静态基础设施。

由于我希望我的基础设施是动态的,我想添加新客户端,但我不知道如何让服务器知道其他容器,因为似乎不可能--link为正在运行的容器设置新配置(我使用过)。

有任何想法吗 ?

docker

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

在 docker 中使用 iptables 端口重定向

我有一台运行 Jenkins(端口 8080 上的 HTTP)的 Linux 服务器,并且同一台服务器也在运行 Docker 1.12.1。我使用了一些 iptables 规则(根据 Jenkins 官方安装文档)将端口 8080 重定向到主机的端口 80,这样默认 HTTP 将适用于 Jenkins(即http://myserver而不是http://myserver:8080):

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)

然而,这些规则破坏了 Docker 在docker build命令期间通过 HTTP 下载正确资源的能力。例如,RUN apt-get update由于多个“无法下载”错误而失败。这样做wget http://www.google.com的容器内返回该詹金斯主要页面的HTML。来自主机的 HTTP GET 工作正常。删除 iptables 规则会导致RUN apt-get update再次工作。所以我认为那些 iptables 规则正在干扰 docker 的网络机制。

这样的端口重定向可以和Docker共存吗?如果是这样,如何编写 …

iptables port-forwarding redirection jenkins docker

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

如何使用用户名、密码、uid 和 gid 创建 CIFS docker 卷

我正在尝试使用此处的 docker-volume-netshare驱动程序创建docker 卷https : //github.com/ContainX/docker-volume-netshare

顺序应该是这样的:

docker volume create -d cifs <some_options>
docker run -v <the_volume> <other_docker_options>
Run Code Online (Sandbox Code Playgroud)

我可以让它在某种程度上工作,但对于我的生活,我无法让它通过我需要的所有选项。

与其试图重述无数不同的失败模式,我更愿意陈述我的目标。在下面, docker-volume-netshare 将执行一个mount -t cifs ...命令。这可以在verbose设置为时的日志中看到true

这是我试图获取的挂载命令。我可以在那里获得用户名和密码,但只有在使用 .netrc 文件时,我发现无法将 uid 和 gid 输入命令。

mount -t cifs -o username=myusername,password=mypasswd,uid=500,gid=499,rw //myserver.example.net/mysharename /the_mount_point/
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找的是通过 docker-volume-netshare 传递这些选项的权威语法。

cifs docker

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

使用 Docker 访问 /etc/mysql/my.cnf

/etc/mysql/my.cnf如果我使用这个 docker-compose,我该如何编辑?我需要注释掉bind-address以允许来自所有主机的连接。

https://github.com/indiehosters/piwik/blob/master/docker-compose.yml

mysql docker

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

Docker 创建巨大的 devicemapper 文件

今天,我在备份过程中注意到 docker 17.05/var/lib/docker/devicemapper/devicemapper/Debian Stretch上创建了两个非常大的文件。

-rw------- 1 root root 100G Dez  8 22:50 data
-rw------- 2 root root 2,0G Dez  7 01:22 metadata
Run Code Online (Sandbox Code Playgroud)

我的问题:我的服务器有一个 120 GB 的 SSD 并且 / 分区是

root@server:/# df -h /
Dateisystem                 Größe Benutzt Verf. Verw% Eingehängt auf
/dev/mapper/server--vg-root   71G     32G   37G   47% /
Run Code Online (Sandbox Code Playgroud)

那怎么可能呢?为什么?这个文件消耗了我的大量备份,我删除了它。没有它,Docker 守护进程将无法启动。

我有一个在 docker 中运行的应用程序:PlexMediaServer 与此脚本:https ://hub.docker.com/r/linuxserver/plex/

是的,有一卷包含我所有的音乐和视频文件。但那是在 RAID 上,而不是在系统驱动器上。

从备份恢复文件时,需要几个小时,我很确定它会完全填满我的 SSD 然后停止。

debian docker

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

Docker - PHP 7.2 FPM Alpine - Imagick

我使用 Docker 镜像php:7.2-fpm-alpine作为基础镜像,使用以下命令安装 Imagick:

RUN apk add --update --no-cache autoconf g++ imagemagick-dev libtool make pcre-dev \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
    && apk del autoconf g++ libtool make pcre-dev
Run Code Online (Sandbox Code Playgroud)

构建一切顺利,我有带有 Imagick 的 php7.2,但由于以下错误而无法使用:

UnableToOpenConfigureFile `coder.xml' @ warning/configure.c/GetConfigureOptions/714
Run Code Online (Sandbox Code Playgroud)

我试图解决这个问题两个小时。我尝试添加 XML 库但没有任何运气。有任何想法吗?

php-fpm imagemagick docker php7 docker-compose

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