前面的三篇docker 文档大家看的肯定不过瘾,自己可能也已经上手一试了。。。不知道有没有发现问题。。。

哈哈。。。

我来说说我遇到的问题哦

一、windows docker 镜像越来越大

默认的docker 镜像全部下载到了C盘 C:\ProgramData\Docker 中 ...  ,导致越来越大,最后c盘就爆了,我们需要切换下镜像保存位置

docker desktop 的setting中设置data-root

一旦切换了目录,原来存在镜像以及容器就不被检查出来了,都需要重新创建,所以在切换之前最好先删除原来下载好的镜像&容器;

二、镜像下载速度问题

前面文章提到过,通过使用网易等镜像服务地址可以加载下载速度;这里推荐另外一种更好的一种方式,使用 阿里云的镜像服务,从而使用自己的镜像加速地址

1.访问地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

2.如果没有阿里云账号,自己注册登录即可

3.然后开启镜像服务即可,就可以得到镜像加速地址

4.docker desktop 中设置镜像地址

然后你会发现下载,推送速度会变快,使用也会更加愉快哦。。。

三、容器站点权限

  这个问题只是一个点,需要引入的是一个镜像中配置IIS的概念;我们系统的站点文件,在配置站点时会出现如下错误:

 有了这个错误,其实我们在windows中IIS可以通过如下方式设置,还是比较方便的

docker中我们改如何配置呢?

那就需要引入powershell命令,来操作IIS配置了,来看具体的命令;

#引入IIS配置模块
RUN Import-Module IISAdministration; \
Import-Module WebAdministration; \
#设置允许加载用户配置为true
Set-ItemProperty -Path IIS:\AppPools\DefaultAppPool -Name "processModel.loadUserProfile" -Value true;

将上诉命令直接放入dockerfile即可解决上诉问题。来完整看看dockerfile文件内容

#引入运行环境
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8 AS runtime
SHELL ["powershell", "-command"] #引入IIS配置模块
RUN Import-Module IISAdministration; \
Import-Module WebAdministration; \
Set-ItemProperty -Path IIS:\AppPools\DefaultAppPool -Name "processModel.loadUserProfile" -Value true; #复制站点文件
WORKDIR /inetpub/wwwroot
COPY Publish/. ./

解读下上面的dockerfile,上诉的dockerfile还是比较简单的,后续系列会慢慢完善和补充这些内容;

1.引入镜像文件,aspnet:4.8

2.SHELL ["powershell", "-command"]

SHELL用于设置执行命令(shell式)所使用的的默认 shell 类型:

SHELL在Windows环境下,Windows 下通常会有 cmd 和 powershell 两种 shell,可能还会有 sh。这时就可以通过 SHELL 来指定所使用的 shell 类型:

3.引入IIS配置模块,设置允许加载用户配置

4.复制站点文件到容器内

 补充说明下,dockerfile就在Publish的同级目录下

四、dockerfile常见指令

1.FROM:指定base镜像,如果本地不存在会从远程仓库下载
2.MAINTAINER:设置镜像的作者,比如用户邮箱等
3.COPY:把文件从build context复制到镜像,支持两种形式:COPY src dest 和 COPY [“src”, “dest”],src必须指定build context中的文件或目录
4.ADD:用法与COPY类似,不同的是src可以是归档压缩文件,文件会被自动解压到dest,也可以自动下载URL并拷贝到镜像:ADD html.tar /var/www ADD http://ip/html.tar /var/www
5.ENV:设置环境变量,变量可以被后续的指令使用:ENV HOSTNAME sevrer1.example.com
6.EXPOSE:如果容器中运行应用服务,可以把服务端口暴露出去:,EXPOSE 80
7.VOLUME:申明数据卷,通常指定的是应用的数据挂在点:VOLUME ["/var/www/html"]
8.WORKDIR:为RUN、CMD、ENTRYPOINT、ADD和COPY指令设置镜像中的当前工作目录,如果目录不存在会自动创建。
9.RUN:在容器中运行命令并创建新的镜像层,常用于安装软件包:RUN yum install -y vim
10.CMD 与 ENTRYPOINT:这两个指令都是用于设置容器启动后执行的命令,但CMD会被docker run后面的命令行覆盖,而ENTRYPOINT不会被忽略,一定会被执行。docker run后面的参数可以传递给ENTRYPOINT指令当作参数。Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效

五、windows对docker支持

众所周知,docker基于linux内核,其实时不支持windows系统,两者内核差距太大,那windows又是如何支持docker的呢?虚拟机技术来实现,将docker运行于linux虚拟机中

 在linux下面安装docker和在windows下面安装docker概念有所不同。通常来讲,linux下面安装docker,你的机器既是localhost,同时也是docker主机。
Docker的客户端,docker守候进程和容器都是直接运行在你的localhost机器上面的。因为是在一台机器上,所以你可以使用localhost为你的docker容器做端口映射,比如:localhost:8000或者0.0.0.0:8000 在window下面安装docker,docker的守候进程和容器是运行在linux虚拟机里面,docker命令则是运行在windows系统里面。
Docker主机的地址是linux虚拟机的地址,它被启动的时候,会分到一个ip地址。当你启动一个容器的时候,容器的端口号会映射到虚拟机的一个端口号

那虚拟机的技术就很多了,可以自己选择来使用了;

  1. Docker desktop for windows

  2. Microsoft store app来安装linux子系统

  3. Hyper-V创建虚拟机来安装docker

这段内容也是网上学习到的,只是符合我的理解想法,希望大家来交流;

后续:

 后面本系列的内容会围绕windows docker进阶来展开,一些深入的应用方式;另外一个方向就是.net core部署到docker上,也是后续的重点,让.net跨平台容器部署;

Docker:四、Docker进阶 Windows Docker IIS 部署的更多相关文章

  1. Windows server iis部署Django详细操作

    教程基于Windows server2012+Python3.6+IIS之上部署django的,同样适用于server2012之上的版本服务器和windows7以上的windows操作系统. 文章来自 ...

  2. windows+jenkins+iis 部署

    1.安装jenkins 下载地址:https://www.jenkins.io/download/ 2.需要配置java环境 配置教程:https://www.cnblogs.com/liuxiaoj ...

  3. windows 2012 IIS 部署 .net core HTTP Error 502.5 - Process Failure 错误解决办法

    安装系统补丁: 2012 R2对应>Windows8.1-KB2999226-x64.msu 下载地址: https://www.microsoft.com/zh-CN/download/det ...

  4. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  5. ASP.NET Core多平台部署 (Windows Server+IIS与CentOS 7+Nginx)

    一,Windows Server+IIS部署 1,安装配置IIS,这个应该都不用多说了,教程一堆 2,下载安装.NET Core Runtime 与 .NET Core SDK,下载请点击下载地址,如 ...

  6. Windows Docker 部署 Spring Boot 项目

    目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...

  7. [第四篇]——Windows Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结

    Windows Docker 安装 Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境. Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境, ...

  8. SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置

      SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...

  9. 部署上次的Hapi到Windows+Docker,WindowsDocker

    前言: 理论的就不多说了,具体的架构看图.web这里是上篇文章开发的Hapi服务,数据库Mysql,废话不多说,粗略的画了下,架构图如下: Mysql镜像拉取,配置 数据库镜像查找 docker se ...

随机推荐

  1. 手把手教Linux驱动3-之字符设备架构详解,有这篇就够了

    一.Linux设备分类 Linux系统为了管理方便,将设备分成三种基本类型: 字符设备 块设备 网络设备 字符设备: 字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程 ...

  2. archlinux安装kde

    联网 dhcpcd & 配置国内源 打开文件 nano /etc/pacman.conf 在文件最后加上这段 [arhclinuxcn] Server = https://mirrors.tu ...

  3. js大数字转换,将大额数字转换为万、千万、亿等

    代码 /** * 大数字转换,将大额数字转换为万.千万.亿等 * @param value 数字值 */ export function bigNumberTransform (value) { co ...

  4. Java面试题(Kafka篇+zookeeper 篇)

    Kafka 152.kafka 可以脱离 zookeeper 单独使用吗?为什么? kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafk ...

  5. 解析WAV音频文件----》生成WAV音频文件头

    前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i WAV音频文件介绍: WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows3.1操作系统 ...

  6. Labview学习之路(一)程序框图中的修饰

    很多小伙伴知道在前面板有很多修饰符,比如上凸框,加粗下凹框等等,但是其实在程序框图中也是有修饰符的,他的位置比较隐蔽,并且修饰符很少,所以很多人基本没有用过.现在就给大家介绍一些这些程序框图种的修饰. ...

  7. 复杂一点的SQL语句:Oracle DDL和DML

    DDL:对表或者表的属性进行了改变 create:创建表创建用户创建视图 创建表 create table student(id int,score int) ; student后面与括号之间可以有空 ...

  8. 利用递归方法实现链表反转、前N个节点反转以及中间部分节点反转

    一.反转整个链表 问题:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5-&g ...

  9. 【好文分享】为什么强烈禁止开发人员使用isSuccess作为变量名

    原文来自阿里云hollies:https://developer.aliyun.com/article/701413   简介: 在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提 ...

  10. 转贴:110个Oracle 函数

    转载地址:https://bbs.csdn.net/topics/310021870 1. ASCII返回与指定的字符对应的十进制数;SQL> select ascii(A) A,ascii(a ...