本文将为您提供关于通过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容器)?(通过访问服务器来获取不同的服务的设备)
- amazon-web-services – 无法在Windows IIS Docker容器中启动交互式会话
- Docker容器与win10访问wsl中的docker中容器
- Docker容器中文乱码(修改docker容器编码格式)的解决方案
- docker容器使用(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容器中启动交互式会话
我正在使用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
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中容器
容器
容器和镜像的区别
镜像可以理解为一种构建时(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容器编码格式)的解决方案
前台上传文件到服务器后,服务器返回给前台的文件列表中出现中文乱码,所有的中文文件名全部变成?,英文文件名则正常显示。
问题经过定位,发现后台代码的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容器命令)
1、docker客户端
1)通过docker查看客户端的所有命令
[root@localhost ~]# docker
2)深入了解docker命令使用方法
[root@localhost ~]# docker stats --help
2、容器的使用
1)获取镜像(载入ubuntu镜像)
[root@localhost ~]# docker pull ubuntu
2)启动容器,并进入该容器
[root@localhost ~]# docker run -it ubuntu /bin/bash
参数说明:
-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
注意:使用attach进入容器后,再退出这个容器,会导致容器的停止
9)使用exec进入后台运行的容器,从容器中退出,不会导致容器的停止
[root@localhost ~]# docker exec -it d9d6240dffe1 /bin/bash
3、容器的导入导出
1)导出容器
[root@localhost ~]# docker export d9d6240dffe1 > /tmp/ubuntu.tar
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容器命令)的相关知识,请在本站进行查询。
本文标签: