标签: docker

限制用户只能访问“docker检查”?

有没有办法授予用户(确切地说是www-data)访问权限以仅访问“docker检查”?任何可行的解决方案都是可以接受的

ubuntu bash sudo docker

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

如何对 Docker 命名空间设置例外?

通过/etc/docker/daemon.json,我使用配置了用户命名空间userns-remap。我正在尝试启动一个nginx-proxy容器,但它需要访问 Docker 套接字,这要求它是真正的root。命名空间破坏了这一点,导致"operation not permitted"错误。

有没有一种方法可以告诉 Docker 不要这个单独的容器放在命名空间中?如果可以通过 docker-compose 实现,那就更好了。

docker docker-compose

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

在特定IP地址上发布Docker Swarm服务

在 Centos 7.4 上,我正在设置一个群,我想在其中运行多个可在端口 80/443 上访问的路由器。
目的是在单个集群上托管多个环境(测试/登台...),所有环境都是对称的。

我使用 Docker 17.12.0-ce 和 Traefik v1.4.6 作为路由器。

基本思想是每个环境都有一个虚拟 IP 地址,并仅在该地址上发布 Traefik 端口。这对于 Docker swarm 来说是不可能的,所以我必须让 Traefik 实例监听端口 81/82 等,并以某种方式将流量从 VIP:80 带到 :81/:82。

集群管理器中所有环境的虚拟 IP 地址均由 Keepalived 处理。

Traefik 的相关 docker 服务配置:

"Ports": [
          {
           "Protocol": "tcp",
           "TargetPort": 80,
           "PublishedPort": 81,
           "PublishMode": "ingress"
          },

# netstat -anp|grep 81
tcp6       7      0 :::81                   :::*                    LISTEN      4578/dockerd        
Run Code Online (Sandbox Code Playgroud)

firewalld 设置为允许流量到达端口 80、81、82 等

直接在 VIP 上的 81 端口访问 Traefik 公开的后端服务是可行的。

在未正确配置任何内容的情况下访问 VIP 上的 80 端口会导致连接被拒绝

Traefik docker 实例运行在我用于以下测试的同一主机上。 …

haproxy docker ipvs docker-swarm

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

Jenkins docker 容器退出时退出代码为 137 并且 oom Kill 为 false

我们正在为 jenkins master 运行一个 docker 容器,它每 3 天就会以“exitcode 137”退出。我们必须重新启动 EC2 并启动映像才能使其再次运行。仅仅重新启动容器是行不通的。

退出容器上的 docker 检查为我们提供了以下信息: "State": { "Status": "exited", "Running": false, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead":假,“Pid”:0,“退出代码”:137,“错误”:“”,“开始时间”:“2019-09-05T11:00:29.683406065Z”,“完成时间”:“2019-09-05T13:24 :26.336749715Z”

EC2 是一个 m5a.large 实例,具有 8GB 内存,正在运行的容器上的 docker stats 给了我这样的信息: CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 88530703bf01 xenodochial_chandrasekhar 0.58% 1.092GiB / 7.546 GiB 14.47% 3.12MB / 6.67MB 368MB / 11.3MB 0

内存使用量显示为 1.092GiB / 7.546GiB,这意味着内存上限是主机内存 8GB,并且 oomkilled 为 false。

docker log 命令不显示太多信息。

还有其他人遇到过这个问题吗?我们如何知道容器退出的原因呢?

docker

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

是否可以在 Docker 上运行 Ubuntu 服务器?

我的团队一直在运行在 VirtualBox 上的 Ubuntu 16.04 服务器上开发我们的项目。当新开发人员加入我们的项目时,帮助他们在 VirtualBox 上创建新的 Ubuntu 服务器并安装所有依赖项只是为了每次启动项目,这对我们来说是一个很大的麻烦。

我们决定用 Docker 解决这个麻烦。因此,我正在尝试使用以下Dockerfiledocker-compose.yml,在 Docker 上的 Ubuntu 上运行我们的项目,但我找不到很多资源,例如how to run Ubuntu on Docker. 我是否会按照以下方式在 Docker 上运行 Ubuntu 的正确方向?

我感到困惑的一件事是为什么当我ifconfig在 Docker 上运行的 Ubuntu 服务器上运行时无法获取 IP 地址?

文件

FROM ubuntu:16.04

RUN sudo apt-get update
RUN sudo apt-get install -y build-essential autoconf libtool 
RUN sudo apt-get install -y python-setuptools python-dev python3-dev
RUN sudo apt-get install -y python-pip python3-pip
RUN sudo apt-get install -y python-virtualenv unixodbc-dev libffi-dev …
Run Code Online (Sandbox Code Playgroud)

ubuntu docker docker-compose

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

docker-compose 只向外界暴露一个网络

我有一个通过 docker-compose 文件创建的新应用程序。该文件包含2个网络:

version: '2.1'

# ----------------------------------
# Services
# ----------------------------------
services:
  application:
    image: tianon/true
    volumes:
      - ${APPLICATION_PATH}:/var/www

  nginx:
    build:
      context: ./docker/nginx
    volumes_from: 
      - application
    volumes:
      - ${DOCKER_STORAGE}/nginx-logs:/var/log/nginx
      - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
    ports:
      - "${NGINX_HTTP_PORT}:80"
      - "${NGINX_HTTPS_PORT}:443"
    networks:
      - frontend
      - backend

  redis:
    build:
      context: ./docker/redis
    volumes: 
      - ${DOCKER_STORAGE}/redis:/data
    ports:
      - "${REDIS_PORT}:6379"
    networks: 
      - backend

# ----------------------------------
# Networks
# ----------------------------------
networks:
  frontend:
    driver: "bridge"
  backend:
    driver: "bridge"

# ----------------------------------
# Volumes
# ----------------------------------
volumes:
  redis:
    driver: "local"
Run Code Online (Sandbox Code Playgroud)

您会注意到我这里有 2 个网络,frontend …

iptables docker docker-compose

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

无法 ping(权限被拒绝)

我的 docker 安装有问题。出于某些安全原因,我配置了我的“daemon.json”,将命名空间切换到另一个用户 ( userns-remap)。现在我遇到的问题是,如果我运行一个容器(使用切换的用户上下文 ( USER containeruser) 并尝试 ping 同一个容器网络中的另一个容器,我会收到以下错误:

$ ping 172.16.0.3
PING 172.16.0.3 (172.16.0.3): 56 data bytes
ping: permission denied (are you root?)
Run Code Online (Sandbox Code Playgroud)

我已经用 AppArmor 尝试了一些东西,分配更多的功能等等。但没有任何帮助来解决这个问题。

运行镜像是一个没有任何修改的 alpine linux。

你有解决我的问题的方法吗?

docker

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

Docker,系统尚未使用 systemd 作为 init 系统(PID 1)启动。无法操作

我正在尝试为我们创建的 centos 服务之一创建 docker 容器。

我们有 2 个 rpm 文件。

在 centos 8 的基础镜像上安装后。

我在其中安装了这 2 个 rpm 文件。

但是,当我尝试启动该服务时,出现此错误。当我运行 systemctl start <service_name> 时

系统尚未使用 systemd 作为 init 系统 (PID 1) 进行引导。无法操作

无法连接到总线:主机已关闭

根据不同帖子的反馈,我尝试通过以下步骤创建容器。

docker run -it -p 8080:80 -p 16700:16700 centos

docker run -it -p 8080:80 -p 16700:16700 --privileged=true centos

两者相同的问题。请建议。

centos docker

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

容器退出后如何退出docker exec?

在我连接到docker exec -ti的 docker 退出后,如何优雅地退出我已经连接到的 docker 容器?

如果我退出原始容器,则运行该docker exec命令的 shell会挂起,我能找到退出回其 shell 的唯一方法是docker exec从另一个终端终止该命令。

有没有更优雅的方式?

无论我是否启动容器,都会发生这种情况--rm

我在 Ubuntu 20.04 的 gnome-terminal 3.26.3 中的 bash 5.0.16 下运行 docker 19.03.12。

ubuntu bash containers docker

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

Fail2Ban iptables 条目拒绝 HTTPS 不会停止对 Amazon Linux 2 上的 Docker 容器的请求

我已经在 Amazon Linux 2 上设置了 Fail2Ban,使用nginx-http-auth以下覆盖配置启用内置监狱:

[nginx-http-auth]
enabled = true
action = iptables[name=HTTPS, port=https, protocol=tcp]
logpath = <snip>/logs/*error*.log
findtime = 15m
bantime = 15m
maxretry = 5
Run Code Online (Sandbox Code Playgroud)

该操作正在触发,我收到以下条目iptables -S

-A f2b-HTTPS -s 120.<snip>.122/32 -j REJECT --reject-with icmp-port-unreachable
Run Code Online (Sandbox Code Playgroud)

但是,我可以继续从被禁止的 IP 发出新的 HTTPS 请求,这些请求正在接收来自 Nginx 的 401 响应。我从两个 IP 地址进行复制 - 我的手机和另一个 EC2 主机。

以下是完整输出iptables -L:(注意:Nginx 在 Docker 内部运行,另外两个与本地网络隔离的容器也是如此)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
f2b-HTTPS  tcp  --  anywhere             anywhere             tcp dpt:https

Chain …
Run Code Online (Sandbox Code Playgroud)

https iptables fail2ban docker amazon-linux-2

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