标签: docker

Ubuntu 20.04 中没有 sudo 的 Docker?

我刚刚在 Ubuntu 20.04 上安装了 docker,并注意到 docker 必须作为 sudo 运行。

\n
wolf@linux:~$ docker ps\nGot permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json: dial unix /var/run/docker.sock: connect: permission denied\nwolf@linux:~$ \n\nwolf@linux:~$ sudo docker ps\nCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES\nwolf@linux:~$ \n
Run Code Online (Sandbox Code Playgroud)\n

找到了这个教程并尝试遵循它

\n

步骤2 \xe2\x80\x94 不使用sudo执行Docker命令(可选)

\n

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04

\n
wolf@linux:~$ sudo usermod -aG docker ${USER}\nwolf@linux:~$ su - ${USER}\nPassword: \nwolf@linux:~$\n
Run Code Online (Sandbox Code Playgroud)\n

这里好像还好。

\n
wolf@linux:~$ id -nG\nwolf docker\nwolf@linux:~$ \n\nwolf@linux:~$ docker ps\nCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS …
Run Code Online (Sandbox Code Playgroud)

ubuntu docker ubuntu-20.04

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

为什么我的 websocket 连接在 60 秒内关闭?

我有一个由 nginx 代理的 Angular Web 应用程序。应用程序中有一个 websocet 功能,相关部分如下所示:

  location /ws {
    proxy_http_version 1.1;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Upgrade $http_upgrade;
    proxy_pass http://websocket.server:9090/ws;
    proxy_set_header Host $host;
  }
Run Code Online (Sandbox Code Playgroud)

docker-composenginx 是 dockerized 的,并通过自定义构建的映像在我的机器上运行:

FROM node:alpine as node-build
WORKDIR /app
ADD ...
RUN npm install
RUN npm run build --prod

FROM nginx:alpine
ADD nginx.conf ./
COPY --from=node-build /app/... /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud)
version: "3"
services:
  frontend:
    build:
      context: .
    ports:
    - 4200:80
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)

除了其他几个位置之外,nginx.conf 中没有其他任何内容:

server {
  listen 80;
  server_name frontend;
  location / {...}
  location …
Run Code Online (Sandbox Code Playgroud)

nginx docker

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

如何在云形成中的同一 ECS 任务中从另一个容器引用容器主机名或 IP

我正在尝试设置一个 AWS ECS 集群,该集群有一个任务,该任务有 3 个单独的容器用于 prometheus、promscale 和 prometheus-ecs-discovery。

我试图弄清楚如何动态地将PROMSCALE_HOSTNAMEprometheus 容器中的环境变量设置为 promscale 容器的主机名或 ip,因为我最终在配置文件中使用此值,以便 prometheus 容器可以与 promscale 通信容器。

有什么办法可以做到这一点,或者我是否必须在我的 VPC 中创建一个负载均衡器来处理这个问题?

PrometheusTask:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: !Sub "${Stage}-prometheus"
      ContainerDefinitions:
        - Name: !Sub "${Stage}-prometheus-container"
          Image: myorg/prometheus:latest
          Environment:
            - Name: STAGE
              Value: !Ref Stage
            - Name: PROMSCALE_HOSTNAME # <-- I WANT THIS VALUE TO BE THE HOSTNAME OR IP OF THE PROMSCALE CONTAINER
              Value: !Sub "${Stage}-promscale-container"
        - Name: !Sub "${Stage}-prometheus-ecs-discovery-container"
          Image: myorg/prometheus-ecs-discovery:latest
          Environment:
            - Name: AWS_REGION
              Value: !Ref AWS::Region
        - …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services docker amazon-ecs

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

在 Centos Stream 8 上扩展 /var 分区

在安装我的centos Stream 8操作系统期间,我给/var设置了10GB的大小,认为这已经足够了,但是在我开始使用docker之后,我发现它在/var分区上占用了太多空间,如下所示df 命令:

\n
[root@compute-07 ~]# df -h\nFilesystem           Size  Used Avail Use% Mounted on\ndevtmpfs              28G     0   28G   0% /dev\ntmpfs                 28G     0   28G   0% /dev/shm\ntmpfs                 28G  179M   28G   1% /run\ntmpfs                 28G     0   28G   0% /sys/fs/cgroup\n/dev/mapper/cs-root  371G  8.2G  363G   3% /\n/dev/mapper/cs-home  100G  2.0G   98G   2% /home\n/dev/mapper/cs-var    10G  9.0G  1.1G  90% /var\n/dev/sda2            2.0G  412M  1.6G  21% /boot\n/dev/sda1            2.0G  7.3M  2.0G   1% /boot/efi\n/dev/mapper/cs-tmp    10G  105M  9.9G   2% /tmp\ntmpfs                5.5G   16K  5.5G   1% /run/user/42\noverlay               10G  9.0G  1.1G  90% \n\n/var/lib/docker/overlay2/77f74478297ca61595f0003d35c7323ec627adb44d94cef92c2b4a3c97319a66/merged\noverlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/5eeb399ce4a3c0d8065d63123985269a359fa66f4d20a8486326e466a48a0128/merged\noverlay …
Run Code Online (Sandbox Code Playgroud)

partition filesystems lvm centos docker

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

为什么Docker在安装NodeJS的时候下载这么多?

我有一个简单的Dockerfile

FROM node:4.2.2
EXPOSE 8000
Run Code Online (Sandbox Code Playgroud)

当我运行时docker build -t myapp .,它会显示下载内容的大小:

使用 Docker 安装 NodeJS

尽管 NodeJS 本身不大于 30Mb,但它似乎大于 200Mb。正在下载的其他东西是什么?

node.js docker

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

macvlan网络中的​​Docker容器连接

我有一个在 Windows Server 2012 R2 上运行的 CentOS 7 Hyper-V VM,它充当我的 Docker 主机。我正在尝试使用 Docker 的 macvlan 网络驱动程序将我的容器与其他 VM 放在 LAN 中。

网络:

docker create network -d macvlan --subnet=10.1.0.0/24 --gateway=10.1.0.1 -o parent=eth0 macnet
Run Code Online (Sandbox Code Playgroud)

容器:

docker run --net=macnet -it --ip=10.1.0.2 ubuntu bash
Run Code Online (Sandbox Code Playgroud)

从容器中,我无法 ping 网关。我tcpdump -n -i eth0在 Docker 主机上做了,看到arp来自容器的请求,但没有回复。Docker 主机 VM 的 NIC 是一个外部网络虚拟交换机,我怀疑这就是原因。是否有一些我遗漏的配置?

hyper-v docker

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

Mysql 需要以 root (docker) 身份运行

我在运行我的 mysql docker 时遇到了一些麻烦。这是我的错误:

testmysql    | + echo 'Finished mysql_install_db'
testmysql    | Finished mysql_install_db
testmysql    | + pid=59
testmysql    | + mysql=(mysql --protocol=socket -uroot -hlocalhost --socket=/var/run/mysqld/mysqld.sock)
testmysql    | + for i in '{30..0}'
testmysql    | + mysqld --verbose --skip-networking --socket=/var/run/mysqld/mysqld.sock
testmysql    | + echo 'SELECT 1'
testmysql    | + mysql --protocol=socket -uroot -hlocalhost '--socket=/var/run/mysqld/mysqld.sock --verbose'
testmysql    | + echo 'MySQL init process in progress...'
testmysql    | + sleep 1
testmysql    | MySQL init process in progress...
testmysql    | 2017-02-06 21:44:19 …
Run Code Online (Sandbox Code Playgroud)

mysql docker docker-compose

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

nginx http 重定向错误地将参数加倍(通过 AWS ELB)

例如,当我浏览

http://example.com/foo?x=1&y=2

nginx 将我重定向到

https://example.com/foo?x=1&y=2?x=1&y=2

现在,如果我继续重定向,我会得到

https://example.com/foo?x=1&y=2?x=1&y=2?x=1&y=2?x=1&y=2

它不断加倍参数,不知道我做错了什么。

我的 nginx 配置:

server {
  listen 80;
  listen 443 ssl;

  server_name {{ .SERVER_NAME }} www.{{ .SERVER_NAME }};

  ssl_certificate     /etc/ssl/nginx.crt;
  ssl_certificate_key /etc/ssl/nginx.key;

  if ($http_x_forwarded_proto != "https") {
      rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
  }

  # Nginx will reject anything not matching /
  location / {
    # Reject requests with unsupported HTTP method
    if ($request_method !~ ^(GET|POST|HEAD|OPTIONS|PUT|DELETE|PATCH)$) {
      return 405;
    }

    # Only requests matching the whitelist expectations will
    # get sent to the application server …
Run Code Online (Sandbox Code Playgroud)

ssl nginx redirect amazon-web-services docker

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

无法在 docker 镜像中启动 httpd 服务

我有以下 Dockerfile 应该启动 Centos 机器并安装 httpd:

FROM centos:centos6.6
RUN yum install -y httpd
RUN chkconfig httpd on; 
RUN /etc/init.d/httpd start
EXPOSE 80

CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

我构建图像:

docker build --no-cache -t centos_http .
Run Code Online (Sandbox Code Playgroud)

构建说:

...
Step 4/6 : RUN /etc/init.d/httpd start
---> Running in 0766e84ec292
Starting httpd: httpd: Could not reliably determine the server's fully  qualified domain name, using 172.17.0.2 for ServerName
[  OK  ]
...
Successfully built 5380a0bacdfb
Run Code Online (Sandbox Code Playgroud)

但是如果我运行图像:

docker run  -p 8090:80 -it  5380
[root@eda7400a46a9 /]# ps -ef | grep …
Run Code Online (Sandbox Code Playgroud)

httpd docker

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

是否可以减小 Docker 映像的大小?

我正在尝试创建一个精简的 Centos 7.4 图像。我想删除我不需要的东西,并想保留 Python 和 Yum。首先,我想摆脱 systemd。

我正在建立我的形象:

sudo docker build --squash --compress -t smaller-centos smaller-centos
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM centos

RUN rpm -e --nodeps systemd
RUN yum remove -y dracut-033-502.el7_4.1.x86_64 iputils-20160308-10.el7.x86_64 device-mapper-1.02.140-8.el7.x86_64  dbus-1.6.12-17.el7.x86_64 kpartx-0.4.9-111.el7_4.2.x86_64 cryptsetup-libs-1.7.4-3.el7_4.1.x86_64 kpartx-0.4.9-111.el7_4.2.x86_64 acl-2.2.51-12.el7.x86_64 bind-license-9.9.4-51.el7_4.2.noarch cryptsetup-libs-1.7.4-3.el7_4.1.x86_64dbus-1.6.12-17.el7.x86_64 dbus-python-1.1.1-9.el7.x86_64 hostname-3.13-3.el7.x86_64 iputils-20160308-10.el7.x86_64 kmod-libs-20-15.el7_4.7.x86_64 passwd-0.79-4.el7.x86_64 python-gobject-base-3.22.0-1.el7_4.1.x86_64 qrencode-libs-3.4.1-3.el7.x86_64 rootfiles-8.1-11.el7.noarch vim-minimal-7.4.160-2.el7.x86_64
RUN yum clean all

CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

我删除了一些图像,但新图像仍然比原始图像大。

$ 须藤泊坞窗图像

smaller-centos      latest              59c3425f7909        2 minutes ago       219MB
centos              latest              e934aafc2206        4 weeks ago         199MB
Run Code Online (Sandbox Code Playgroud)

$ sudo docker 版本

Client:
 Version:      18.03.1-ce
 API version: …
Run Code Online (Sandbox Code Playgroud)

docker

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