GVKun编程网logo

通过GUI访问Windows 2016 Server容器(Docker容器)?(通过访问服务器来获取不同的服务的设备)

14

本文将为您提供关于通过GUI访问Windows2016Server容器的详细介绍,我们还将为您解释Docker容器?的相关知识,同时,我们还将为您提供关于amazon-web-services–无法在

本文将为您提供关于通过GUI访问Windows 2016 Server容器的详细介绍,我们还将为您解释Docker容器?的相关知识,同时,我们还将为您提供关于amazon-web-services – 无法在Windows IIS Docker容器中启动交互式会话、Docker容器与win10访问wsl中的docker中容器、Docker容器中文乱码(修改docker容器编码格式)的解决方案、docker容器使用(docker容器命令)的实用信息。

本文目录一览:

通过GUI访问Windows 2016 Server容器(Docker容器)?(通过访问服务器来获取不同的服务的设备)

通过GUI访问Windows 2016 Server容器(Docker容器)?(通过访问服务器来获取不同的服务的设备)

我需要在Windows 2016 Server上使用Docker /
Windows容器并为其准备Windows应用程序才能在其上运行。通过Powershell配置Windows并不像在Ubuntu上那样方便,尤其是如果您从未真正使用过Windows
Server并且需要学习所有Powershell命令时,尤其如此;)

是否可以通过GUI访问Windows容器?

可以在Docker,Ubuntu,VNC中使用:您可以在Docker容器中运行GUI应用程序吗?

想知道是否可以对Windows容器执行类似的操作?

谢谢。

==更新==

截至2016年2月,RDP绝对不是一个选项-不确定他们是否打算在最终版本中支持它!

https://msdn.microsoft.com/zh-
cn/virtualization/windowscontainers/about/work_in_progress#remote-
desktop

Remote DesktopWindows Containers cannot be managed/interacted with through a RDP session in TP4.

到目前为止,我使用Midnight
Commander至少拥有一个不错的文件浏览器,但是Windows上的命令行仍然没有太大的乐趣。

答案1

小编典典

在此视频中,MS容器开发人员Taylor Brown说,他们将RDP从TP3拆分为TP4, 很可能在RTM版本Server 2016中不支持RDP

https://channel9.msdn.com/Events/TechNetVirtualConference/TechNetVC2016/Day-3-Containers-
Session-with-
QA

从Dez开始更新。 2018年

Server 2019已退出,并且所有容器映像仍无法使用RDP /不支持RDP。(当然,对于纳米图像没有任何意义)

检查一下这个不错的介绍,了解发生了什么变化:https: //stefanscherer.github.io/docker-on-windows-
server-2019/

要获得较为完整的概述,应该提到的是,有一些野蛮破解,可能使RDP在某些图像和设置中起作用,例如:https :
//withinrafael.com/2018/03/09/using-
容器中的远程桌面服务/

amazon-web-services – 无法在Windows IIS Docker容器中启动交互式会话

amazon-web-services – 无法在Windows IIS Docker容器中启动交互式会话

我正在使用AWS“带有容器的Windows Server 2016 Base”映像(ami-5e6bce3e).

使用docker info我可以确认我有最新的(服务器版本:1.12.2-cs-ws-beta).

从Powershell(以管理员身份运行),我可以在交互模式下成功运行“microsoft / windowsservercore”容器,连接到容器中的CMD:

docker run -it microsoft/windowsservercore cmd

当我尝试以交互模式运行“microsoft / iis”容器时,虽然我能够连接到IIS(通过浏览器),但我从未连接到容器中的交互式CMD会话.

docker run -it -p 80:80 microsoft/iis cmd

相反,我只是得到:

Service ‘w3svc’ started

使用另一个Powershell窗口,我可以:

docker container ls

…并看到我的容器正在运行.

试图附加锁定而永不返回.

我已经切换了区域,发现每个区域都有不同的AMI:

> us-east-1:ami-d08edfc7
> us-west-2:ami-5e6bce3e

……这两个都有相同的结果.

使用的相关链接:

> AWS announcement and simple Docker example
> MSDN simple Docker example
> MSDN IIS Docker example

更新

使用以下链接,我能够基于服务器基础创建自己的Dockerfile并安装IIS,这似乎工作正常.

custom Dockerfile

最佳答案
这不是AWS AMI的问题,这是由于Microsoft IIS Dockerfile编写/成为Docker新手的方式.

Link to Microsoft’s IIS DockerFile

最后一行(第7行):

ENTRYPOINT ["C:\\ServiceMonitor.exe","w3svc"]

Difference between CMD and ENTRYPOINT

因此,由于此Dockerfile使用ENTRYPOINT,要启动交互式PowerShell会话,请使用以下命令:

docker run --entrypoint powershell -it -p 80:80 microsoft/iis

请注意,似乎“–entrypoint”标志需要在运行后,因为这不起作用:

docker run -it -p 80:80 microsoft/iis --entrypoint powershell

Here is another reference link regarding ENTRYPOINT and CMD differences

Docker容器与win10访问wsl中的docker中容器

Docker容器与win10访问wsl中的docker中容器

容器

容器和镜像的区别

镜像可以理解为一种构建时(build-time)结构,而容器可以理解为一种运行时(run-time)结构。

容器和虚拟机的区别

虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。
容器和虚拟机都依赖于宿主机才能运行。宿主机可以是笔记本,是数据中心的物理服务器,也可以是公有云的某个实例。
在下面的示例中,假设宿主机是一台需要运行 4 个业务应用的物理服务器。

  • 虚拟机:需要创建 4 个虚拟机并安装 4 个操作系统,然后安装 4 个应用。

    虚拟机模型将底层硬件资源划分到虚拟机当中。每个虚拟机都是包含了虚拟 cpu、虚拟 RAM、虚拟磁盘等资源的一种软件结构。因此,每个虚拟机都需要有自己的操作系统来声明、初始化并管理这些虚拟资源。
    但是,操作系统本身是有其额外开销的。例如,每个操作系统都消耗一点 cpu、一点 RAM、一点存储空间等。每个操作系统都需要独立的许可证,并且都需要打补丁升级,每个操作系统也都面临被攻击的风险。

  • 容器:服务器启动之后,所选择的操作系统会启动。在 Docker 世界中可以选择 Linux,或者内核支持内核中的容器原语的新版本 Windows

    容器模型具有在宿主机操作系统中运行的单个内核。在一台主机上运行数十个甚至数百个容器都是可能的——容器共享一个操作系统/内核。
    这意味着只有一个操作系统消耗 cpu、RAM 和存储资源,只有一个操作系统需要授权,只有一个操作系统需要升级和打补丁。同时,只有一个操作系统面临被攻击的风险。简言之,就是只有一份 OS 损耗。

启动容器

docker container run
#格式:
docker container run [OPTION] [REPOSITORY]:[TAG]
#option
-it #将当前终端连接到容器
-d #以后台启动方式启动容器
--name #重命名
-p #映射端口,[docker主机端口]:[容器端口],当有流量访问docker主机端口时,流量会映射到容器内的端口
#例如:
docker container run -it ubuntu:16.04

仔细观察上面命令的输出内容,会注意到每个实例中的提示符都发生了变化。这是因为 -it 参数会将 Shell 切换到容器终端——现在已经位于容器内部了!其中 -it 参数告诉 Docker 开启容器的交互模式并将读者当前的 Shell 连接到容器终端。接下来,命令告诉 Docker,用户想基于 ubuntu:latest 镜像启动容器。
使用Ctrl-PQ组合键退出容器,可以再退出容器的同时还保持容器运行

查看运行状态的容器

docker container ls

可以看到输出中显示了刚刚运行的ubuntu容器

连接到运行中的容器

#格式
docker container exec [opt] [容器NAME/ID] [ARG...]
#例如:
docker container exec -it strange_bouman bash

在示例中,将本地 Shell 连接到容器是通过 -it 参数实现的。本例中使用名称引用容器,并且告诉 Docker 运行 Bash Shell(在 Windows 示例中是 PowerShell)。

停止容器运行

 docker container stop [容器NAME/ID]
#例如:
docker container stop strange_bouman
docker container stop 9dc53040fa41

删除容器

docker container rm [容器NAME/ID]
#例如:
docker container rm strange_bouman

注:删除容器只能删除不在运行下的容器,容器在运行时无法被删除。

  • 我们可以通过docker container ls -a来确认容器是否已经被成功删除

win10中访问wsl2中的docker容器

以nigelpoulton/pluralsight-docker-ci为例子:

  • 1、首先在wsl的linux环境中启动容器,并用-p对其映射端口(此处的映射端口是将docker所在的宿主机(即wsl中的linux)映射到容器
$ docker container run -d --name webserver -p 80:8080 nigelpoulton/pluralsight-docker-ci

Unable to find image 'nigelpoulton/pluralsight-docker-ci:latest' locally
latest: Pulling from nigelpoulton/pluralsight-docker-ci
729ec3a6ada3: Pull complete
f0a3eea3dca0: Pull complete
e07851c50ad6: Pull complete
f78e7cd1f8dc: Pull complete
7cad1fbd2f07: Pull complete
22835c51693f: Pull complete
Digest: sha256:61bc64850a5f2bfbc65967cc33feaae8a77c8b49379c55aaf05bb02dcee41451
Status: Downloaded newer image for nigelpoulton/pluralsight-docker-ci:latest
049b6ee85436549b11d457cf2903e2262067bd7ba5e5499c5ba9840fcdc9cf8d
  • 2、通过命令docker container ls查看当前运行的容器以及端口映射情况
$ docker container ls
CONTAINER ID   IMAGE                                COMMAND                  CREATED          STATUS          PORTS                                   NAMES
049b6ee85436   nigelpoulton/pluralsight-docker-ci   "/bin/sh -c 'cd /src…"   29 minutes ago   Up 29 minutes   0.0.0.0:80->8080/tcp, :::80->8080/tcp   webserver
  • 3、建立win10和wsl中的linux的端口映射关系
    上述步骤只能在wsl中访问容器的8080端口,你可以通过 ifconfig 查看docker的ip,然后通过curl docker-ip即可看到服务的返回。但是直接在win10的浏览器上访问还是不行,因此需要建立映射。
    以管理员身份打开powershell
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8077 connectaddress=<wsl中的linux的eth0的ip> connectport=<wsl中linux映射的端口>
#例如:上面我是用wsl的ubuntu中的80端口映射到了容器的8080端口,所以我这边的connectport要填80,172.19.115.157是我ubuntu的eth0的ip
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8077 connectaddress=172.19.115.157 connectport=80
  • 4、建立映射后可以查看
netsh interface portproxy show all

侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         50051       172.25.16.145   50051
0.0.0.0         8077        172.19.115.157  80
  • 5、现在就可以通过win10本机的8077端口访问到容器的8080端口了

    在这里插入图片描述

    在这里插入图片描述

Docker容器中文乱码(修改docker容器编码格式)的解决方案

Docker容器中文乱码(修改docker容器编码格式)的解决方案

前台上传文件到服务器后,服务器返回给前台的文件列表中出现中文乱码,所有的中文文件名全部变成?,英文文件名则正常显示。

  问题经过定位,发现后台代码的multipartfile类在执行transterto的方法时就发生了此异常,然而配置文件集中的multipartResolver以及encodingFilter均已经设置成了UTF-8,排除代码异常。kubectl exec进入到docker容器中进行查看时发现,文件在容器中也是中文文件名显示异常。查看docker容器编码格式:执行locale命令;可以看到当前编码格式为POSIX,而这种编码格式不支持中文

  解决办法:locale -a查看容器所有语言环境

  C.UTF-8可以支持中文,只需要把容器编码设置为C.UTF-8即可

    1.临时修改:

       locale
       locale -a
       LANG=C.UTF-8  (有的是zh_CN.UTF-8,不过我在本地没发现这种编码)
       source /etc/profile

    2.永久修改:修改Dockerfile

      在Dockerfile中添加一行

      ENV LANG C.UTF-8

      重新制作docker镜像,docker run -ti [镜像] 进入容器后执行locale发现编码格式已经被修改为C.UTF-8,之前出现的中文文件名乱码问题也没有了。

以上所述是小编给大家介绍的Docker容器中文乱码(修改docker容器编码格式)的解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

您可能感兴趣的文章:
  • 查看docker镜像中文件的方法
  • Docker环境搭建Jenkins在构建任务时控制台日志出现中文乱码的问题
  • Docker-compose一键部署gitlab中文版的方法步骤
  • Docker容器 日志中文乱码问题解决办法
  • Docker 命令教程(附中文解释)
  • Docker解决终端无法输入中文的问题

docker容器使用(docker容器命令)

docker容器使用(docker容器命令)

1、docker客户端

    1)通过docker查看客户端的所有命令

        [root@localhost ~]# docker

        

image.png

    2)深入了解docker命令使用方法

        [root@localhost ~]# docker stats --help

        image.png

2、容器的使用

    1)获取镜像(载入ubuntu镜像)

        [root@localhost ~]# docker pull ubuntu

    2)启动容器,并进入该容器

        [root@localhost ~]# docker run -it ubuntu /bin/bash

        image.png

            参数说明:

                -i:交互式操作

                -t:终端

                ubuntu:ubuntu镜像

                /bin/bash:放在镜像名后的是命令,这里我们希望有一个交互式的Shell,因此用的是/bin/bash

                退出终端使用exit命令

    3)查看所有容器

        [root@localhost ~]# docker ps -a

    4)启动已经停止的容器

        [root@localhost ~]# docker start 16f91abb561d

    5)docker容器后台运行,使用-d指定容器的运行模式

        [root@localhost ~]# docker run -itd --name ubuntu-test ubuntu /bin/bash

    6)停止容器

        [root@localhost ~]# docker stop cbeab6605102

    7)重启容器

        [root@localhost ~]# docker restart cbeab6605102

    8)后台启动时进入容器时,使用attach命令

        [root@localhost ~]# docker attach f4c1ed1987e4

        image.png

        注意:使用attach进入容器后,再退出这个容器,会导致容器的停止

    9)使用exec进入后台运行的容器,从容器中退出,不会导致容器的停止

        [root@localhost ~]# docker exec -it d9d6240dffe1 /bin/bash

        

image.png

3、容器的导入导出

    1)导出容器

        [root@localhost ~]# docker export d9d6240dffe1 > /tmp/ubuntu.tar

        

image.png

    2)导入容器快照(从快照文件中导入为镜像,以下实例将快照文件ubuntu.tar导入到镜像test/ubuntu:v1)

        [root@localhost ~]# docker import /tmp/ubuntu.tar test/ubuntu:v1

4、删除容器

    1)删除一个容器

        [root@localhost ~]# docker rm -f d9d6240dffe1

    2)删除所有容器

        [root@localhost ~]# docker rm -f $(docker ps -aq)

今天的关于通过GUI访问Windows 2016 Server容器Docker容器?的分享已经结束,谢谢您的关注,如果想了解更多关于amazon-web-services – 无法在Windows IIS Docker容器中启动交互式会话、Docker容器与win10访问wsl中的docker中容器、Docker容器中文乱码(修改docker容器编码格式)的解决方案、docker容器使用(docker容器命令)的相关知识,请在本站进行查询。

本文标签: