标签: docker

UDP 流量未从 Docker 容器转发 -> Docker 主机

我有一个 docker 容器,但我无法从容器内部运行 DNS 查找,尽管它在 docker 主机上运行良好。

已知构建 Docker 主机的配置管理代码可在市场上的标准 RHEL 7 映像上运行,因此已知问题出在 SOE RHEL 7 映像内部。

RHEL 7.2 / Docker 版本 1.12.6,构建 88a4867/1.12.6。容器是 RHEL 7.3。SELinux 处于启用/许可模式。Docker 主机是一个 Amazon EC2 实例。

一些配置:

# /etc/sysconfig/docker
OPTIONS='--dns=10.0.0.10 --dns=10.0.0.11 --dns-search=example.com'
DOCKER_CERT_PATH=/etc/docker
ADD_REGISTRY='--add-registry registry.example.com'
no_proxy=169.254.169.254,localhost,127.0.0.1,registory.example.com
http_proxy=http://proxy.example.com:8080
https_proxy=http://proxy.example.com:8080
ftp_proxy=http://proxy.example.com:8080
Run Code Online (Sandbox Code Playgroud)

容器和主机中的解析器配置是一样的:

# /etc/resolv.conf
search example.com
nameserver 10.0.0.10
nameserver 10.0.0.11
Run Code Online (Sandbox Code Playgroud)

如果我重新启动 docker 守护进程,--debug我会看到以下内容journalctl -u docker.service

Aug 08 11:44:23 myhost.example.com dockerd-current[17341]: time="2017-08-08T11:44:23.430769581+10:00" level=debug msg="Name To resolve: http://proxy.example.com."
Aug 08 11:44:23 myhost.example.com dockerd-current[17341]: time="2017-08-08T11:44:23.431488213+10:00" level=debug …
Run Code Online (Sandbox Code Playgroud)

kernel-modules bridge linux-networking docker

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

在 alpine:3.9 上安装 openjdk 11

我正在尝试使用 openjdk 11 构建一个 alpine docker 映像。为此,我正在启动一个 alpine 容器:

docker run -it alpine:3.9 /bin/sh
Run Code Online (Sandbox Code Playgroud)

并运行以下命令:

export JAVA_HOME=/opt/openjdk-11
export PATH=$JAVA_HOME/bin:$PATH

export JAVA_VERSION=11.0.2
export JAVA_URL=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
export JAVA_SHA256=99be79935354f5c0df1ad293620ea36d13f48ec3ea870c838f20c504c9668b57

set -eux; \
    \
    wget -O /openjdk.tgz "$JAVA_URL"; \
    echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \
    mkdir -p "$JAVA_HOME"; \
    tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \
    rm /openjdk.tgz;
Run Code Online (Sandbox Code Playgroud)

在那之后,我可以确认一些事情似乎是正确的:

/ # ls -lah $JAVA_HOME/bin/java
+ ls -lah /opt/openjdk-11/bin/java
-rwxr-xr-x    1 668      668         8.5K Jan 18 05:20 /opt/openjdk-11/bin/java
/ # echo $PATH …
Run Code Online (Sandbox Code Playgroud)

java docker alpine

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

如何在 CentOS 7(在 Docker 上)添加语言支持?

我正在尝试将语言环境设置为日语,但 docker 上的 CentOS 映像不包含语言支持。

bash-4.2# yum groupinstall -y "Japanese Support"
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: centos.mirror.secureax.com
 * updates: centos.mirror.secureax.com
Warning: group Japanese Support does not exist.
Maybe run: yum groups mark install (see man yum)
No packages in any requested group available to install or update
Run Code Online (Sandbox Code Playgroud)

我已经检查GROUPLISTyum grouplist以及yum grouplist hidden既不包括日本的支持。
有没有办法安装日语支持?
提前致谢。

centos yum docker

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

Docker 守护进程在更新后回答“404 页面未找到”

我最近将我的 docker 从 1.4 更新到 1.5(使用包lxc_docker)。

从那以后,docker daemon 发送这样的错误(对于每个命令):

$ docker version 
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Git commit (client): a8a31ef
OS/Arch (client): linux/amd64
FATA[0000] Error response from daemon: 404 page not found 
Run Code Online (Sandbox Code Playgroud)

但是如果我使用以前版本的客户端,我会得到很好的答案:

$ /usr/bin/docker-old version 
Client version: 1.4.0
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 4595d4f
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.4.1
Git commit (server): a8a31ef
Run Code Online (Sandbox Code Playgroud)

好像是代理设置(HTTP_PROXY …

http-proxy docker

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

网络命名空间内的 iptables LOG 规则

我正在尝试为 docker 容器设置 iptables 规则。我正在使用nsenter在容器的网络命名空间内执行 iptables 命令:

# log access to port 8080
PID=$(docker inspect --format "{{.State.Pid}}" $ID)
/home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG
Run Code Online (Sandbox Code Playgroud)

除了LOG规则之外,这种方法非常有效。那些似乎没有在任何地方登录。请注意,应用于主机系统的相同规则有效并记录到/var/log/kern.log.

我在哪里可以找到这些日志规则的输出?这是网络命名空间的已知问题/限制吗?

networking iptables containers docker

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

从私有注册表中删除标记的 Docker 镜像

如何从私有 Docker 注册表中的映像中删除错误添加的标签?选项 -rmi 似乎不适用于 Docker 1.9.1 中的远程图像。

user@ubuntu-user:~$ docker --version  
Docker version 1.9.1, build a34a1d5

user@ubuntu-user:~$ docker search myregistry:5000/user/image
NAME                                                                     
myregistry:5000/user/image:20160119                                         
myregistry:5000/user/image:20160119-20160120        

user@ubuntu-user:~$ docker rmi myregistry:5000/user/image:20160119-20160120
Error response from daemon: could not find image: no such id: myregistry:5000/user/image:20160119-20160120
Error: failed to remove images: [myregistry:5000/user/image:20160119-20160120]
Run Code Online (Sandbox Code Playgroud)

docker docker-registry

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

Debian / IPv6:默认路由在 1800 秒后过期,失去连接

我在 vServer 上运行 Debian 8。安装 docker 并启用 IPv6 后,我注意到一些奇怪的事情。不知道docker和这个有没有关系,只是安装后发现这个问题。

我的默认路由配置为在 ca 后过期。1800 秒。在此超时后,我实际上消失了。这是我(显然)松散 IPv6 连接的时候。

root@wopr:~#  ip -6 route
xxxx:yyyy:zzz:xxxx::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev br-5c1ce68ea951  proto kernel  metric 256
fe80::/64 dev br-61f6bbfdbe87  proto kernel  metric 256
[a lot more routed for my docker containers]
default via fe80::1 dev eth0  proto ra  metric 1024  expires 1259sec hoplimit 64
Run Code Online (Sandbox Code Playgroud)

为什么将路由配置为在 1800 秒后过期?我在哪里可以配置这个?

[编辑 2016-05-14 16:08]

手动添加默认路由似乎工作得很好。它保持原样。但是我需要在启动后有一个非过期的路由。

[编辑 2016-05-14 16:13]

该机器在 netcup.de …

networking debian routing ipv6 docker

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

在 Docker swarm 模式下使用私有物理网络

我正在使用 Docker 以 swarm 模式(使用 Docker 17.03.1-ce)进行生产设置。将涉及2个数据中心。在两个数据中心,所有机器在私有网络上都有一个公共 IP 和一个私有(数据中心本地)IP,所以会有 2 个私有网络。

链接到简化的图表可视化设置

专用网络接口上的网络流量是免费的,而公共接口上的流量不受限制(而且速度较慢),因此在可能的情况下,我更希望网络流量通过专用接口。

现在,据我所知(我认为),集群模式下 Docker 节点之间的所有流量都将通过用于与集群主机通信的相同网络接口,在我的情况下,必须是公共接口才能进行多 DC 网络可能的。然而,大多数预期的流量将在同一个 DC 中的节点之间发生,如果源节点和目标节点碰巧在同一个私有网络上,如果 Docker 能够以某种方式通过我的私有网络路由流量,那就太好了。

恐怕这可能无法开箱即用,因为群主不知道这些专用网络以及节点在其上拥有的 IP。

我能想到的一个解决方案是设置一个 VPN 并在其上部署 swarm,但这会增加额外的复杂性,我更喜欢纯 Docker swarm 解决方案。


更新:正如评论中所建议的,解决方案的基础可能是使用 iptables 将传出流量路由到私有 IP 而不是公共 IP。但是,如果我想这样做,我的下一个问题将是如何管理所有这些规则。在 DC 中有 10 个服务器,我需要 10 * 9 = 90 个服务器来通过专用网络路由所有可能的本地流量。我可以想象,也许存在一些工具可以帮助完成这样的任务,或者我可以创建一个,但也许有一种更简单的方法来做到这一点。

networking docker docker-swarm

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

用于 nginx 和 nodejs 服务器的 docker-compose

我有以下docker-compose.yml文件:

version: '3'
services:
    server:
        build:
            context: ../../
            dockerfile: ./packages/website/Dockerfile
        command: node /cutting/index.js
        environment:
            PORT: 8000
            NODE_ENV: production
        restart: always
    nginx:
        build:
            context: ./
            dockerfile: ./nginx/Dockerfile
        command: tail -f /dev/null
        depends_on:
            - server
        ports:
            - "8000:8000"
        restart: always
Run Code Online (Sandbox Code Playgroud)

以及以下内容nginx.conf

worker_processes 1;

user nobody nogroup;
pid /tmp/nginx.pid;
error_log /tmp/logs/nginx.error.log;

events {
    worker_connections 1024;
    accept_mutex off;
}

http {
    include mime.types;
    default_type application/octet-stream;
    access_log /tmp/logs/nginx.access.log combined;
    sendfile on;

    server {
        proxy_http_version 1.1; # this is essential for chunked …
Run Code Online (Sandbox Code Playgroud)

nginx node.js docker docker-compose

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

如何在没有配置文件的情况下执行 docker-compose down 操作?

当您这样做时docker-compose up,它是基于docker-compose.yml文件的。

这通常会启动一个网络,构建并运行多个服务。如果您使用该标志执行 up 操作-ddocker-compose客户端将分离并让服务器单独操作。

如果执行 a docker-compose down,它会关闭正在运行的容器,并删除相应的网络。

但是...如果之后文件消失了怎么up.yml

问题

docker stop您是否必须通过手动查找该项目的服务等等来docker rm手动关闭docker network rm

或者docker-compose足够智能,可以用标签标记所有东西(容器、网络等),这样你就可以告诉它一些东西,这样docker-compose down project-name它就不会在.yml(现在不在文件系统中)文件中查找,而是检查正在运行的实例和网?

configuration configuration-management shutdown docker docker-compose

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