相关疑难解决方法(0)

为什么我需要 tty: true 在 docker-compose.yml 中而其他图像不需要?

我已经寻找答案有一段时间了,但我还没有找到它,在继续测试之前我需要理解它。

我正在通过安装 bash 创建基于 Alpine 的映像,如下图所示:

FROM alpine:3.12

RUN apk add --no-cache --upgrade bash rsync gzip \
&& rm -rf /var/cache/apk/*

COPY ./docker/backup/hello.sh /hello.sh

RUN mkdir /backup \
&& chmod u+x /hello.sh

WORKDIR /backup

ENTRYPOINT ["sh","/hello.sh"]
CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

你好.sh

#!/bin/sh
echo "=> Hello Word"
echo "$@"
exec "$@"
Run Code Online (Sandbox Code Playgroud)

我第一次尝试 bash 时无法使用以下命令访问:

docker-compose exec myalpine bash
Run Code Online (Sandbox Code Playgroud)

但是搜索是否找到答案,我必须放入 docker-compose.yml ,并且在启动命令后tty: true我已经能够访问容器 shellmyalpinedocker-compose up -d

导致我的 docker-compose.yml 的一部分如下

services:
  myalpine:
    build:
      context: ./
      dockerfile: ./docker/backup/Dockerfile
      args:
        - DOCKER_ENV=${DOCKER_ENV}
    restart: …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

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

无法使用 docker 容器运行 react 应用程序

我有一个 react-app,它简单地显示 hello-world 消息,但我喜欢通过 docker-container 运行该应用程序,但遇到了这个问题。此消息后,进程停止而不运行应用程序..

? ?wds?: Project is running at http://172.17.0.2/
? ?wds?: webpack output is served from
? ?wds?: Content not from webpack is served from /app/public
? ?wds?: 404s will fallback to /
 Starting the development server...
Run Code Online (Sandbox Code Playgroud)

无法理解我应该做什么,因为我在 Dockerfile 中有一个带有基本代码的非常小的应用程序

FROM node:alpine
RUN mkdir /app
COPY . /app
WORKDIR /app
COPY package.json ./
RUN npm install
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

我是否需要安装 webpack-dev-server,我试过了,但出现版本错误,例如“手动添加的服务器”的版本低于已经服务器的版本。所以我重新安装了 webpack-dev-server。

我已经用“create-react-app”创建了应用程序,所以我认为每个依赖项都是自动管理的..有谁知道,我该如何解决问题..提前致谢(顺便说一句..)

我用来构建的命令: docker build . -t lucki

运行镜像命令: docker run -p 3000:3000 lucki

这是项目结构: …

docker reactjs create-react-app

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

如何使用 docker compose 运行 -it?

docker run -idt ubuntu:16.04, 之后我们可以使用docker ps来查看容器的启动情况。

但是如果使用 docker compose as next 和 docker-compose up,我们可以看到docker ps找不到容器,从docker ps -a我们可以看到它退出了。

version: '2'
services:
  me:
    image: 'ubuntu:16.04'
Run Code Online (Sandbox Code Playgroud)

问题:我们如何实现-idt使用 docker compose?

docker docker-compose

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

如何在Dockerfile中指定图像是交互式的?

我创建了一个运行命令行工具的Docker容器。该容器应该是交互式的。我能以某种方式在Dockerfile中指定容器始终以交互方式启动吗?

作为参考,这是dockerfile:

FROM ubuntu:latest

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

RUN mkdir adr-tools && \
    cd adr-tools && \
    curl -L https://github.com/npryce/adr-tools/archive/2.2.0.tar.gz --output adr-tools.tar.gz && \
    tar -xvzf adr-tools.tar.gz && \
    cp */src/* /usr/bin && \
    rm -rf adr-tools

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

编辑:我知道-itrun命令的选项。我明确要求在docker文件中执行此操作的方法。

EDIT2:这不是Dockerfile中Interactive命令的重复项,因为我的问题解决了如何docker run避免指定为的参数的问题,而有利于在Dockerfile中指定它们,而假定的重复项解决了图像构建期间的交互式输入问题由码头工人本身。

interactive docker dockerfile

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

c# Grpc Client 无法连接到本地主机上的 docker(for windows) 容器中托管的 Grpc Server

Grpc Greeter Service我和客户一起做了一个简单的。当服务托管在本地主机上时,客户端能够调用 rpc 并接收响应。但是,当服务在本地主机上的 docker 容器内运行时,客户端无法连接到该服务。

** Grpc 服务服务器 **

namespace GreeterServer
{
    class Program
    {
        private readonly static ManualResetEvent shutdown = new ManualResetEvent(false);
        static void Main(string[] args)
        {
            int port = 5000;
            Console.WriteLine("Hello World!");
            Server server = new Server{
                Services = {GreeterService.BindService(new GreeterController())},
                Ports = {new ServerPort("localhost", port, ServerCredentials.Insecure)}
            };
            server.Start();
            Console.WriteLine("Grpc Server started");
            Console.Read();
            shutdown.WaitOne();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

** Grpc 服务的 Dockerfile **

FROM microsoft/dotnet:2.1-sdk as base
WORKDIR /app

COPY *.csproj .
RUN dotnet restore

COPY …
Run Code Online (Sandbox Code Playgroud)

c# docker microservices grpc

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

Docker 日志不显示颜色(express + nodejs 图像)

一个小而有趣的问题(对我来说):

我正在尝试从我编写的小型服务器(nodejs + express)创建 docker 映像。我的服务器代码是:

var express = require('express');
var Inflector = require('inflected');
var colors = require('colors');

var app = express();

app.get('/hello/:name', function(req, res, next){
    var name = Inflector.titleize(req.params.name);
    console.log("Saying hello to " + name.yellow);
    res.send('Hello ' + name);
});

var port = 9090;
app.listen(port, function(){
    console.log(('App is running on port ' + port).inverse);
});
Run Code Online (Sandbox Code Playgroud)

我正在用这个 Dockerfile 创建我的图像:

FROM centos:centos6

RUN     rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

RUN     yum install -y npm

COPY . /src

RUN cd /src; npm install

EXPOSE 9090 …
Run Code Online (Sandbox Code Playgroud)

node.js docker

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

为什么运行控制台应用程序的容器在启动后就退出

我想在容器中以交互方式运行一个简单的 dotnet core 控制台应用程序。我无法做到这一点,容器只是启动然后立即退出,而没有完全运行程序。

控制台应用程序只有以下三个语句。

Console.WriteLine("Hello World!");
var readText = Console.ReadLine(); // Wait for me to enter some text
Console.WriteLine(readText);
Run Code Online (Sandbox Code Playgroud)

最后两行使其具有交互性。

当我运行容器时,它会打印 Hello World! 但它立即退出,没有等我输入一些文本。为什么?我缺少什么?

我能够以类似的方式在容器中运行 dotnet core Web 应用程序,并且能够映射容器外部和容器内部的端口以成功浏览 Web 应用程序。但当谈到控制台应用程序时,我被难住了。

我想我可能缺少一些非常简单的东西。使我抓狂

重现步骤如下所述。

  1. 启动 Vs2019 并创建一个新的 .net core 控制台项目。

新的 DotNet Core 控制台项目创建

  1. 添加一些语句以使其具有交互性。

简单的 DotNet Core 控制台应用程序

  1. 为创建的项目添加 Docker 支持。右键单击项目,添加 -> 选择 Container Orchestrator 支持

向控制台应用程序添加 Docker 支持

使用 Docker Compose.jpg 添加容器编排器支持

Docker Linux 容器

  1. 现在,Visual Studio 创建了一组文件并更改了 csproj 文件。

Windows 资源管理器中的解决方案文件夹

Windows 资源管理器中的项目文件夹

添加 Docker 支持后的解决方案资源管理器

  1. 在 powershell 中导航到包含解决方案文件的文件夹。运行命令“docker-compose up”

PowerShell 中的 Docker-Compose 命令

  1. 一旦构建了镜像,并且容器启动并运行,我们就可以开始发现问题。

Docker启动容器

  1. 我们可以在这里看到Hello-World!。但它不会等我输入一些东西。键入 docker ps -a 并查看退出的容器。当我尝试使用 docker start -i 或 docker start -a 启动该容器时,容器启动但立即退出。我应该怎么做才能使容器运行,以便我可以为在其中运行的应用程序输入一些内容?您也可以在 docker 桌面中看到。即使我启动它们(使用每个容器的 docker 桌面 UI 提供的启动按钮),它也会再次停止。 …

docker .net-core docker-compose

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