标签: docker

Docker Compose 返回错误“网络具有重叠的 IPv4”

首先说我对 Docker 完全陌生,我还不熟悉 Docker 生态系统。

我尝试执行的是创建一个docker-composer.yml在我的项目的本地开发环境中使用的。

我已经将wp-local-docker用于我的 WordPress 项目,但我也有一些旧项目具有不同的要求,因此,我做了自己的docker-compose.yml. 我自己的代码docker-compose.yml如下:

version: "3.4"
services:
   database:
      image: mysql:latest
      ports:
         - "3306:3306"
      environment:
         MYSQL_ROOT_PASSWORD: password
         MYSQL_DATABASE: appdb
         MYSQL_USER: appuser
         MYSQL_PASSWORD: password
      volumes:
         - $PWD/data/db:/var/lib/mysql
      networks:
          app_net:
              ipv4_address: 192.168.50.10
   phpmyadmin:
      image: phpmyadmin/phpmyadmin:latest
      links:
         - database:mysql
      ports:
         - "8181:80"
      environment:
         MYSQL_ROOT_PASSWORD: password
         MYSQL_USER: appuser
         MYSQL_PASSWORD: password
         PMA_HOST: mysql
         PMA_PORT: 3306
         PMA_USER: appuser
         PMA_PASSWORD: password
      networks:
         app_net:
            ipv4_address: 192.168.50.11
   web:
      build: $PWD/ApachePHP
      depends_on:
         - database
      links:
         - database:mysql …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

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

创建一个没有互联网访问权限的 Docker 容器

创建一个没有任何互联网访问权限的隔离 Docker 容器的最简单方法是什么?

networking firewall docker

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

111:连接拒绝 Docker 容器的 nginx 代理

  • CentOS 7

我有一个简单的 Nginx 代理 Docker 容器侦听端口 80。这是 Dockerfile:

FROM centos:7
MAINTAINER Brian Ogden

# Not currently being used but may come in handy
ARG ENVIRONMENT

RUN yum -y update && \
    yum clean all && \
    yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm \
    yum -y makecache && \
    yum -y install nginx-1.12.0 wget

# Cleanup some default NGINX configuration files we don’t need
RUN rm -f /etc/nginx/conf.d/default.conf


COPY /conf/proxy.conf /etc/nginx/conf.d/proxy.conf
COPY /conf/nginx.conf /etc/nginx/nginx.conf


CMD ["nginx"]
Run Code Online (Sandbox Code Playgroud)

对于这个 Nginx 代理,这里是我的 nginx.conf:

daemon off; …
Run Code Online (Sandbox Code Playgroud)

nginx proxy reverse-proxy docker

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

Wordpress Docker 容器将我的请求从端口 8000 重定向到 80

我正在尝试将我的 wordpress 博客从主机转移到我自己的服务器。我想使用 docker 来完成这项任务。

在我的服务器上运行 nginx,它承载了许多与这个问题无关的服务。我使用以下脚本来创建一个容器。

#!/bin/bash

docker create --name blog \
--net bridge \
-e WORDPRESS_DB_HOST=192.168.170.11 \
-e WORDPRESS_DB_USER=USER \
-e WORDPRESS_DB_PASSWORD=PASSWORD \
-e WORDPRESS_DB_NAME=wordpress \
-v /var/www/wordpress:/var/www/html \
-p 8000:80 \
wordpress
Run Code Online (Sandbox Code Playgroud)

数据库连接有效并且 apache2 正在运行。但是我无法访问wordpress。

当我尝试访问时localhost:8000,将我重定向到80nginx 正在侦听的端口。为什么?我想连接到容器内的端口 80 (apache2)。

当我从外部尝试此操作时也是如此(如果防火墙关闭)。

另一个问题是防火墙:端口 8000/tcp 对所有 IP 都是开放的,但我来自外部的请求仍然被阻止。我必须为这个 docker 容器打开什么?

运行Docker version 17.05.0-ce, build 89658beDebian Stretch

编辑:

root@server:~/docker# curl -v http://localhost:8000
* Rebuilt URL to: http://localhost:8000/
*   Trying ::1...
* TCP_NODELAY set …
Run Code Online (Sandbox Code Playgroud)

wordpress docker

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

如何强制 Docker 重新运行 `apt-get update`?

一些安全更新刚刚发布,我想重建我的 Docker 镜像以利用这些更新。

但是,当我运行docker build .它时,它会立即完成而不更新任何内容,因为Dockerfile. 它甚至不会尝试apt-get update在我的Dockerfile.

apt-get update即使没有任何变化,我如何强制 Docker再次运行命令?

有一个--no-cache选项表示它不会在构建过程中使用缓存,但我希望它之前将缓存用于命令,apt-get update并且我希望将结果保存到缓存中以备下次运行(替换当前缓存的图像),所以我肯定想使用缓存。

我也无法docker rmi删除apt-get运行后生成的图像,因为它拒绝删除该图像作为image has dependent child images.

docker

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

ECS 容器中的 HEALTHCHECK

我正在努力为 Amazon ECS 中的任务定义内的容器设置正确的 HEALTHCHECK。

我尝试了多种解决方案,但无法让最简单的“始终正确”的健康检查真正起作用。

我的健康检查看起来像这样:

[ "CMD-SHELL", "echo"]
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该总是产生一个健康的容器,但不幸的是,我总是处于不健康状态。当我对不健康的容器进行 docker 检查时,我得到以下信息

[ec2-user@ip-10-0-0-77 ~]$ docker inspect 8f14979ae4eb
[
    {
        "Id": "8f14979ae4eb4e16ec26a4ac886d29b29f5666e5f00d41c56d25f5efe0c7d57e",
        "Created": "2018-05-15T08:55:50.399791936Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "echo \"The application will start in ${JHIPSTER_SLEEP}s...\" &&     sleep ${JHIPSTER_SLEEP} &&     java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.war"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 783,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-05-15T08:55:51.049068973Z",
            "FinishedAt": "0001-01-01T00:00:00Z",
            "Health": {
                "Status": "starting",
                "FailingStreak": 2,
                "Log": [
                    {
                        "Start": …
Run Code Online (Sandbox Code Playgroud)

docker amazon-ecs

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

如何让 docker 容器通过名字看到对方?

我有一个 mongo 实例在一个名为的容器中运行,该容器mongo1已公开端口 27017。我可以从主机正常连接。

我有另一个容器正在运行一个想要连接到 mongo 实例的应用程序。

如何连接 2 个容器,以便将主机名mongo1公开给另一个容器并且它可以连接到mongo1:27017

docker

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

docker cron 不工作

我正在尝试构建一个包含 cron 的 docker 镜像。从 docker 文件系统的特定位置删除文件的 cron。下面是我的 Dockerfile

FROM ubuntu:latest
MAINTAINER docker@ekito.fr

RUN apt-get update && apt-get -y install cron

# Copy testfiles folder to docker container.
COPY ./testfiles /opt/

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

RUN (crontab -l -u root; echo "* * * * * root rm -rf /opt/*") | crontab

# Run the command on container startup
CMD cron

ENTRYPOINT ["/bin/sh", "-c", "/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

一切都很成功。我的 cron 也设置在容器中

roadrunner:test shailesh$ …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu containers docker

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

使用 makefile 在 docker 多阶段构建中复制文件

我使用多阶段构建将构建环境与最终的 docker 镜像分开:

FROM ubuntu:bionic AS build
RUN apt-get update && apt-get install -y \
    build-essential \
    [...]
RUN wget https://someserver.com/somefile.tar.gz && \
    tar xvzf somefile.tar.gz && \
    ./configure && \
    make && make install && \
    [missing part]

FROM ubuntu:bionic
COPY --from=build /tmp/fakeroot/ /
[...]
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来收集make install在运行时创建/复制的所有文件?

目前我正在使用ldd和单个文件副本的组合来获取它们:

cp /etc/xyz/* /tmp/fakeroot/xyz
cp --parents $(ldd /usr/sbin/nginx | grep -o '/.\+\.so[^ ]*' | sort | uniq) /tmp/fakeroot
Run Code Online (Sandbox Code Playgroud)

但是由于 make install 已经有了将哪个文件复制到哪个目录的信息,我问自己是否没有任何方法可以使用这种机制。

感谢您的任何想法!

make docker

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

AWS 代码构建错误:无法连接到 docker 守护进程

我试图使用 aws 代码构建服务构建 docker 镜像,然后将其推送到 ECR。我用于它的命令"buildspec.yml"在下面指定。

version: 0.2
phases:
  install:
    runtime-versions:
        docker: 18
 pre_build:
      - $(aws ecr get-login --no-include-email --region us-east-1)
      - REPOSITORY_URI=XXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/devopswebbuild
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG


Run Code Online (Sandbox Code Playgroud)

但是我在构建过程中遇到错误,docker 命令无法连接到 docker daemon。请帮助我解决这些问题。

Docker 构建项目配置详细信息如下:

代码

构建错误详细信息如下:

在此处输入图片说明

amazon-web-services docker amazon-ecs

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