标签: docker-container

如何从Windows中的Docker容器访问“ http:// localhost”?

我有一组在Windows 10中使用Docker运行的容器,这是输出docker-compose ps

> docker-compose ps
     Name                    Command               State                          Ports
--------------------------------------------------------------------------------------------------------------
db_mysql          docker-entrypoint.sh mysqld      Up      3306/tcp
elk               /usr/bin/supervisord -n -c ...   Up      0.0.0.0:81->80/tcp
php71-fpm-nginx   /config/bootstrap.sh             Up      443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:9001->9001/tcp
Run Code Online (Sandbox Code Playgroud)

这是输出docker inspect

> docker inspect php71-fpm-nginx
[
    {
        ...
            "NetworkMode": "anotherlampdocker_default",
            "PortBindings": {
                "80/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "80"
                    }
                ],
                "9001/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "9001"
                    }
                ]
            },
        ...
        "Mounts": [
            {
                "Source": "/d/Development/www",
                "Destination": "/data/www",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }, …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-networking docker-container

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

Crontab 不会重新启动 Docker 容器

我有一个在根帐户下运行的容器,我可以开始使用它:

docker start containername
Run Code Online (Sandbox Code Playgroud)

我希望 crontab 启动它,所以我使用 root

crontab -e
Run Code Online (Sandbox Code Playgroud)

并设置一个像这样的条目:

* * * * * /usr/bin/docker start containername
Run Code Online (Sandbox Code Playgroud)

但这行不通。我也尝试过

* * * * * root /usr/bin/docker start containername
Run Code Online (Sandbox Code Playgroud)

没有运气。

有人知道我如何才能完成这项工作吗?

ubuntu cron docker ubuntu-16.04 docker-container

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

Docker 容器内的 Nodemon

我正在尝试在 docker 容器中使用 nodemon:

文件

FROM node:carbon
RUN npm install -g nodemon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "nodemon" ]
Run Code Online (Sandbox Code Playgroud)

构建/运行命令

docker build -t tag/apt .
docker run -p 49160:8080 -v /local/path/to/apt:/usr/src/app -d tag/apt
Run Code Online (Sandbox Code Playgroud)

将本地卷附加到容器以观察代码更改,会导致一些覆盖和 nodemon 抱怨找不到节点模块(其中任何一个)。我该如何解决这个问题?

node.js docker nodemon dockerfile docker-container

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

在 Visual Studio 中运行时将环境变量传递给 Docker 容器

我们在 Visual Studio (2017) 中有一个 .NET Core 项目,它添加了 Docker 支持。我们的项目依赖于环境变量在启动时自行配置。正如我们所理解的,为了将环境变量值传递给容器,您可以docker run使用-e.

当您通过选择 Docker 配置文件从 Visual Studio 运行项目的容器化版本时,我们注意到 Visual Studio 执行一个docker run命令。但是,我们无法弄清楚如何让 Visual Studio 在运行容器时包含我们的环境变量值。

有没有办法告诉 Visual Studio 将我们的环境变量值传递给它运行的容器?

请注意,我们不想在映像中指定环境变量值,因为这些值会根据部署到的位置而变化。

environment-variables visual-studio docker docker-container

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

macOS 和 Windows 上的 --network host 的 Docker 替代方案

我有两个 Docker 容器:

  • 数据库
  • 使用数据库的应用程序

我像这样运行我的数据库容器:

docker run --name my-db -p 127.0.0.1:3306:3306 my-db-image

我的应用程序容器是这样的:

docker run --name my-app --network host -it my-app-image

这在 Linux 上运行良好。我可以从主机系统和应用程序容器访问数据库。完美的。

--network host不适用于 Mac 和 Windows:

主机网络驱动程序仅适用于 Linux 主机,Docker for Mac、Docker for Windows 或 Docker EE for Windows Server 不支持。

(来源: https: //docs.docker.com/network/host/

我仍然可以从主主机访问数据库127.0.0.1:3306,但无法从应用程序容器访问它。

我该如何解决这个问题?如何让应用程序容器连接到数据库(并使用 继续从主主机访问数据库127.0.0.1:3306)?

我尝试过使用host.docker.internalandgateway.docker.internal但它不起作用。

我还尝试--network my-network在创建后my-network使用启动两个容器docker network create my-network,但它不起作用。

我不知道如何解决这个问题。

docker docker-container docker-network docker-run

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

docker 容器:更改网络内核设置,net.core.rmem_max

我正在尝试设置net.core.rmem_max=26214400在容器上

我有这个 docker-compose

    develop:
      sysctls:
       - net.core.rmem_max=26214400
      image: centos6
Run Code Online (Sandbox Code Playgroud)

但当我这样做时

docker-compose up -d develop
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

ERROR: for develop_1  Cannot start service develop: OCI runtime create 
failed: container_linux.go:348: starting container process caused
 "process_linux.go:402: container init caused \"open
 /proc/sys/net/core/rmem_max: no such file or directory\"": unknown

ERROR: for develop  Cannot start service develop: OCI runtime create
 failed: container_linux.go:348: starting container process caused
 "process_linux.go:402: container init caused \"open
 /proc/sys/net/core/rmem_max: no such file or directory\"": unknown
Run Code Online (Sandbox Code Playgroud)

linux-kernel sysctl docker docker-compose docker-container

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

如何访问 Azure App Service 应用程序日志以检查 Docker Compose 错误?

我是 Azure 的新手,这是我在 StackOverflow 上的第一个问题。我在使用 Docker Compose 使用多容器 Docker (Linux) 部署新的 Azure 应用服务时遇到问题。不幸的是,我无法访问我的应用程序日志,因为存在未知错误。我只更改配置以使用我的私有注册表和docker-compose配置,其他设置保持默认值。我正在使用 Azure 学生计划,因此不能选择加入 1:1 专家支持。

我的应用服务基本上由 4 个容器组成:webservice(Django REST Framework)、comprof(VueJS)、raspisample(Express)和db(PostgreSQL)。我正在使用 GitLab 的 Docker Registry (registry.gitlab.com),它是一个私有注册表(图像不公开)。这是我的docker-compose.yml文件。

version: '3'

services:
  webservice:
    image: registry.gitlab.com/something/webservice:latest
    restart: always
    working_dir: /opt/webservice
    environment:
      - DEBUG=false
      - DATABASE_URL=postgresql://postgres:postgres@db:5432/postgres
      - PREDICTOR_URL=https://something-predictor.azurewebsites.net
      - CACHE_DIR=/var/cache
      - SECRET_KEY="**omitted**"
      - LOG_DIR=/var/log/webservice
      - UPLOADS_DIR=/var/uploads
      - ACCESS_LOG=/var/log/webservice/access_main.log
      - ERROR_LOG=/var/log/webservice/error_main.log
    ports:
      - "81:80"
    volumes:
      - webservice_data:/var/log/webservice
      - webservice_data:/var/cache
      - webservice_data:/var/uploads
    depends_on:
      - …
Run Code Online (Sandbox Code Playgroud)

docker-compose azure-web-app-service docker-container

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

Kubernetes POD 是否有与其关联的命名空间和 cgroup?

Docker 容器具有与之关联的 cgroup 和命名空间,无论它们是在 pod、虚拟机​​还是主机中运行。
同样,Kubernetes Pod 是否具有与其关联的命名空间和 cgroup,或者只是 pod 内的容器具有这些(cgroup 和命名空间)关联。如果他们这样做,我如何从主机那里找到这些信息?

cgroups kubernetes docker-container linux-namespaces kubernetes-pod

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

Docker 容器与 golang http.Get 错误“证书由未知机构签名”

我有一个带有 Golang 的容器,它调用 https api。我正在使用暂存容器,当我尝试运行时,我得到一个certificate signed by unknown authority

url := "https://restcountries.eu/rest/v2/name/" + params.Get("country")
response, err := http.Get(url)
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile 是这样的:

FROM golang:1.15 AS builder
WORKDIR /GreetingAPI
COPY . /greeting
WORKDIR /greeting
ENV GO111MODULE=on
RUN CGO_ENABLED=0 GOOS=linux go build -o greeting

FROM scratch
COPY --from=builder /greeting .
CMD ["./greeting"]
Run Code Online (Sandbox Code Playgroud)

我使用这个answare更新了我的 Dockerfile 。但是当我尝试构建容器时,我得到 ERROR: "/ca-certificates.crt" not found: not foundfailed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/ca-certificates.crt" not found: …

go docker docker-compose docker-container

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

Docker 驱动程序“overlay2”无法删除根文件系统:unlinkat - 设备或资源繁忙

当尝试删除 docker 容器时(例如尝试删除时docker-compose down),我总是收到以下错误:

ERROR: for <my_container>  container d8424f80ef124c2f3dd8f22a8fe8273f294e8e63954e7f318db93993458bac27: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/64311f2ee553a5d42291afa316db7aa392a29687ffa61971b4454a9be026b3c4/merged: device or resource busy
Run Code Online (Sandbox Code Playgroud)

重新启动 docker 服务、修剪或强制删除容器等常见建议不起作用。我发现唯一有效的方法是使用 手动卸载sudo umount /home/virtfs/xxxxx/var/lib/docker/overlay2/<container_id>/merged,然后我就可以删除容器。

我的操作系统CentOS Linux release 7.9.2009 (Core)有内核版本3.10.0-1127.19.1.el7.x86_64。我认为这可能是由于 overlay2 与 CentOS 冲突,但根据此页面,我的 CentOS/内核版本应该可以工作。找到解决方案会很棒,因为我理想情况下希望docker-compose down不必使用提升的权限来预先卸载。

centos docker docker-container

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