标签: docker-for-windows

在 Docker 容器中运行标准 .NET 控制台应用程序

我正在尝试将一个非常简单的控制台应用程序作为 Windows docker 容器运行。我有一个使用“dotnet-framework:4.7.2-runtime-windowsservercore-1803”基础映像的 docker 文件,如下所示。

FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT "DockerConsoleApp.exe"
Run Code Online (Sandbox Code Playgroud)

控制台应用程序每 5 秒将“Hello World”输出到日志文件中”

static void Main(string[] args)
    {
        while (true)
        {
            try
            {
                Thread.Sleep(5000);
                _logger.Info("Hello Wolrd");
            }
            catch (Exception e)
            {
                //handle the exception 
                Console.Error.WriteLine(e);
            }
        }


    }
Run Code Online (Sandbox Code Playgroud)

我正在使用以下 docker compose 文件

version: '3.4'

services:
  dockerconsoleapp:
    image: dockerconsoleapp:dev
    build:
      context: .\
      args:
        source: obj\Docker\publish
    volumes:
      - C:\Users\user\source\repos\DockerConsoleApp\DockerConsoleApp:C:\app
      - C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Remote Debugger:C:\remote_debugger:ro
      - C:\Users\user\source\repos\DockerConsoleApp\VolumeTest:C:\app\logs
Run Code Online (Sandbox Code Playgroud)

问题是,一旦我手动构建或运行“docker-compose up -d”,容器就会被创建,然后立即死亡。我希望容器应该保持运行状态,因为应用程序正在入口点中被调用,并且应用程序应该继续运行,除非手动停止。

.net console-application docker docker-for-windows

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

Add-host 或 extra_host 不适用于 Windows 容器

  • 环境:Windows 版 Docker
  • 容器:Windows容器

在 docker run 命令中,有 --add-host 选项。这不适用于 Windows 容器。

同样,撰写文件中有一个配置选项 extra_host.txt。这也不适用于 Windows 容器。

有什么具体原因,这不适用于 Windows 容器吗?

docker docker-compose docker-for-windows

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

Docker绑定8080端口时无法访问Host中的应用程序

我有一个带有 Java spring boot 应用程序的 docker 映像,该应用程序在端口 8080 的 docker 容器中启动和运行没有问题,正如您在部分日志中看到的那样:

\n\n
   2020-02-24 02:09:07.906  INFO : Tomcat started on port(s): 8080 (http) with context path \'/web-app\'\n   2020-02-24 02:09:07.909  INFO : Started web-app in 7.034 seconds (JVM running for 7.601)\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我在容器内运行curl命令(使用终端),我会得到正确的响应,表明服务器正在运行并且正在运行。

\n\n
/# curl http://localhost:8080/web-app/cars/1\n{"id":"1"}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,当我尝试访问主机上的应用程序时,问题就来了,我正在使用 Windows 10 顺便说一句(在网络浏览器中http://localhost:8080/web-app/cars/1),这里是如何我运行泊坞窗图像。

\n\n
docker run web-app -p 8080:8080\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我不认为这是 Windows 问题,因为我可以运行一个简单的 nginx 服务器,并且可以毫无问题地在主机上访问它。

\n\n
docker run -d -p 80:80 nginx\n
Run Code Online (Sandbox Code Playgroud)\n\n

我注意到的一件事是当看到正在运行的容器时,端口列

\n\n
C:\\Users\\luis>docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED …
Run Code Online (Sandbox Code Playgroud)

docker docker-for-windows docker-network

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

无法将卷标志与Windows容器一起使用

我试图将主机文件夹映射到guest虚拟机,方法与在linux/mac上轻松完成相同-v "$(pwd)":/code.我无法想出一个简单的例子来使用Windows Containers.

docker build -t="webdav" .
docker run --rm -it -v C:\junk:C:\code --name webdav webdav powershell


C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container f0fa313478fddb73e34d47699de0fc3c2a3bdb202ddcfc2a124c5c8b7523ec09 encountered an error during Start: failure in a Windows system call: The connection with the Virtual Machine hosting the container was closed. (0xc037010a).
Run Code Online (Sandbox Code Playgroud)

我尝试了无数其他变化,这里接受的答案给出了同样的错误.

文档似乎只指泊坞工具箱.这个例子只给了我invalid bind mount spec.

我的Dockerfile

FROM microsoft/windowsservercore

RUN powershell -Command Add-WindowsFeature Web-Server

RUN powershell -Command mkdir /code

WORKDIR /code
ADD * /code/
Run Code Online (Sandbox Code Playgroud)

操作系统名称:Microsoft …

docker docker-volume docker-for-windows

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

无法使用 Docker windows 更改卷上文件/文件夹的权限

我尝试使用 Docker windows 更改卷上文件/文件夹的权限。但出乎意料的是,权限没有改变。

环境: 主机:Windows 10 Pro Docker 版本 17.09.0-ce,构建 afdb6d4

重现步骤:

  1. 使用下面的 Dockerfile 构建镜像。
  2. 运行具有卷的容器。
  3. 更改文件/文件夹的权限。

Dockerfile:

FROM microsoft/windowsservercore
CMD [ "powershell" ]
Run Code Online (Sandbox Code Playgroud)

输出:

D:\data\docker\sample>docker build -t sample .
Sending build context to Docker daemon  1.272GB
Step 1/2 : FROM microsoft/windowsservercore
 ---> 2cddde20d95d
Step 2/2 : CMD powershell
 ---> Running in dd207fe8b262
 ---> e0203df155cd
Removing intermediate container dd207fe8b262
Successfully built e0203df155cd
Successfully tagged sample:latest

D:\data\docker\sample>docker run -d --name sample --mount type=volume,source=sample_volume,target=C:/data sample ping -t localhost
5a21f41d63de321e912ec3b99010a062d2e04d5f99145c6cd8bf649d3fbbebf1

D:\data\docker\sample>docker exec …
Run Code Online (Sandbox Code Playgroud)

windows docker docker-for-windows

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

Dockerfile 无法执行 CMD 命令(docker for windows)

无法在 dockerfile 中的 docker for windows 上执行 CMD 命令。

我想使用 CMD 运行几个命令,但是,甚至无法运行单个命令。

我已经尝试了以下方法,但没有任何效果......

1.

CMD "sqlcmd -S database -i C:\db\db_scripts\upgradescript.sql -U sa -P mypassword"
Run Code Online (Sandbox Code Playgroud)

2.

RUN ["powershell", "-NoProfile", "-Command", "c:\db\db_scripts\script.ps1"]
Run Code Online (Sandbox Code Playgroud)

3.

CMD ["cmd", "sqlcmd", "-S", "database", "-i", "C:\db\db_scripts\upgradescript.sql", "-U", "sa", "-P", "mypassword"]
Run Code Online (Sandbox Code Playgroud)

4.

ARG arg1=database
ARG arg2=C:\db\db_scripts\upgradescript.sql
ARG arg3=sa
ARG arg4=mypassword!

RUN ["cmd", "-NoProfile", "-Command", "sqlcmd -S $env:arg1 -i $env:arg2 -U $env:arg3 -P $env:arg4"]
Run Code Online (Sandbox Code Playgroud)

5.

RUN powershell.exe  c:\db\db_scripts\script.ps1
Run Code Online (Sandbox Code Playgroud)

6.

ENTRYPOINT ["powershell", "-NoProfile", "-Command", "sqlcmd"]
CMD ["-S database -i C:\db\db_scripts\upgradescript.sql -U …
Run Code Online (Sandbox Code Playgroud)

containers docker dockerfile docker-container docker-for-windows

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

删除后找回 docker-for-windows Kuberentes kubeconfig 文件

~/.kube/config在设置对基于云的 K8s 集群的访问时,我的 Docker for Windows文件被替换。

有没有办法重新创建它而无需重新启动 Docker for Windows Kubernetes?

更新 我当前的~/.kube/config文件现已设置为 GKE 集群。我不想为 Kubernetes 重置 Docker 并破坏它。相反,我想为 Windows 版 Docker 创建一个单独的 kubeconfig 文件,即将其放置在其他位置而不是~/.kube/config.

docker kubernetes docker-for-windows

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

什么是 Docker for Windows 的“minikube docker-env”替代品

我正在运行 Docker for Windows 的内置 Kubernetes 集群以进行开发,我需要对集​​群运行一些 Docker 命令,但我找不到 Minikube 的“minikube docker-env”的替代品。

我想做这样的事情来操作 Kubernetes 集群:

eval $(minikube docker-env)
Run Code Online (Sandbox Code Playgroud)

我想在完成 Kubernetes 集群后做这样的事情:

eval $(docker-machine env -u)
Run Code Online (Sandbox Code Playgroud)

docker kubernetes docker-for-windows docker-for-mac

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

如何从启动中删除 Docker.Service

每次启动计算机时,Docker.Service 服务都会加载到我的内存中。

系统:Windows 10 Pro 1903、Docker 2.0.0.3

我试图通过以下方式避免这种情况:

  • 在任务管理器启动选项卡中禁用 docker
  • 在 Docker for Desktop 本身中禁用它
  • 从注册表中的 Run / RunService 文件夹中删除所有与 docker 相关的条目

重新启动计算机后,Docker.Service 仍然出现在我的任务管理器中。如何防止我的计算机在启动时加载 Docker.Service?

windows containers docker windows-10 docker-for-windows

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

如何列出docker容器内的所有目录和文件?

以下是我的 dockerfile:

FROM python:3.6.5-windowsservercore
COPY . /app
WORKDIR /app
RUN pip download -r requirements.txt -d packages
Run Code Online (Sandbox Code Playgroud)

要获取图像中的文件列表,我尝试了以下两个选项,但出现错误:

encountered an error during CreateProcess: failure in a Windows system call: 
The system cannot find the file specified. (0x2) extra info: 
{"CommandLine":"dir","WorkingDirectory":"C:\\app"......
Run Code Online (Sandbox Code Playgroud)
  1. docker run -it <container_id> dir
  2. 修改 dockerfile 并在 dockerfile - 末尾添加 CMD CMD ["dir"],然后运行docker run <container_id> dir

如何列出docker中的所有目录和文件?

docker dockerfile docker-image docker-container docker-for-windows

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