1. 前言

容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 容器化应用程序可以作为一个单元进行测试,并可以作为容器映像实例部署到主机操作系统 (OS)。

就像船只、火车或卡车运输集装箱而不论其内部的货物一样,软件容器充当软件部署的标准单元,其中可以包含不同的代码和依赖项。 按照这种方式容器化软件,开发人员和 IT 专业人员只需进行极少修改或不修改,即可将其部署到不同的环境。

  1. 名词解释

Dockfile:包含有关如何生成 Docker 映像的说明的文本文件。 与批处理脚本相似,首先第一行将介绍基础镜像,然后是关于安装所需程序、复制文件等操作的说明,直至获取所需的工作环境。

Docker镜像:包含创建容器所需的所有依赖项和信息的包。 镜像包括所有依赖项(例如框架),以及容器运行时使用的部署和执行配置。 通常情况下,镜像派生自多个基础镜像,这些基础镜像是堆叠在一起形成容器文件系统的层。 创建后,镜像不可变。

Docker 容器:Docker 镜像的实例。 容器表示单个应用程序、进程或服务的执行。 它由 Docker 镜像的内容、执行环境和一组标准指令组成。 在缩放服务时,可以从相同的镜像创建多个容器实例。 或者,批处理作业可以从同一个镜像创建多个容器,向每个实例传递不同的参数。

  1. Docker常用命令
  • docker help

查看所有Docker命令

  • docker info

检查Docker的安装是否正确,如果没有找到此命令,则表示Docker没有正确安装

  • docker pull [OPTIONS] NAME[:TAG|@DIGEST]

拉取一个预建的镜像,如拉取dockerhub上组织名为happy,Repository为ecodecoreweb的镜像,命令:docker pull happy/ecodecoreweb

  • docker run --name sample_job(容器别名) -d happy/ecodecoreweb /bin/sh -c "while true; do echo Docker; sleep 1; done"

以后台进程的方式运行一个新的容器,sample_job命令会隔一秒打印一次Docker,使用Docker logs可以查看输出。如果没有起名字,那这个job会被分配一个id,以后使用命令例如Docker logs查看日志会变得比较麻烦。

  • docker logs sample_job

运行Docker logs命令来查看job的当前状态:

  • docker stop sample_job

停止名为sample_job的容器

  • docker start sample_job

启动名为sample_job的容器

  • docker kill sample_job

kill名为sample_job容器的进程(必须处于启用状态)

  • docker restart sample_job

重新启动该容器(必须处于启用状态)

  • docker stop sample_job

停止该容器

  • docker rm sample_job

如果要完全移除容器,需要将该容器停止,然后才能移除

  • docker commit sample_job job1(镜像名)

将容器的状态保存为镜像(window不支持运行中的容器)

  • docker images

查看所有镜像的列表

  • docker ps/docker ps -a

查看所有运行中的镜像的列表/查看所有镜像的列表

  • docker build [OPTIONS] PATH | URL

从Dockerfile创建镜像,如:

docker build -t ecodecoreweb:test(镜像名称:tag) D:workwebetcoreapp2.2publish(应用位置)

四、 环境准备

  • Docker客户端下载并安装,下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-windows

A、运行Docker客户端,确保如下图状态:

B、检查Docker安装是否正确,打开命令窗口,输入:docker info,出现如下图所示,则表示安装成功

  • Docker下安装所需镜像 (可以忽略这一步,先不操作,构建应用镜像时自动安装)

以下以asp.net core所需镜像为例:

在命令窗口输入:docker pull microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803

  1. 应用部署(以下以asp.net core web应用为例)

步骤:发布应用-》在应用路径构建Dockerfile文件-》创建镜像-》运行容器-》浏览应用

  • 发布应用:直接用Visual Studio开发工具发布应用到本地(如何发布吗?问搜索引擎)
  • 在应用路径构建Dockerfile文件(位置与应用程序路径一致)

#基于 `dotnet:2.2-aspnetcore-runtime-nanoserver-1803 ` 来构建我们的镜像

FROM dotnet:2.2-aspnetcore-runtime-nanoserver-1803

#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中

COPY . /publish

#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹

WORKDIR /publish

#设置Docker容器对外暴露60000端口

EXPOSE 60000

#使用`dotnet ECode.Core.Web.dll`来运行应用程序

ENTRYPOINT ["dotnet

查看docker内部路径_web应用在Docker容器中部署(Windows)相关推荐

  1. Docker 在容器中部署静态网站

    Docker 在容器中部署静态网站 在容器中部署静态网站 设置容器的端口映射 run -P``--publish-all=true|false:容器暴露的所有端口进行映射 -p``--publish= ...

  2. docker部署html页面,Docker 案例: 在容器中部署静态网站

    ----------------知识点------------ 容器的端口映射: docker  run  [-P] [-p] -P,–publish-all=true | false,大写的P表示为 ...

  3. Openstack技术\在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server

    MySQL部署 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server. 操作步骤: 搜索mysql镜像 拉取mysql镜像 创建容器 操作容器中的mysql 容器 ...

  4. docker 内部ping不通宿主机_Docker容器数据管理

    在Docker容器内部创建的文件默认存储在可写的容器层,容易产生几个问题: 当容器不存在时,数据文件不能持久化,同时这些数据文件不方便在容器之外被其他进程使用. 当容器运行的时候容器可写层严重依赖宿主 ...

  5. docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目

    本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料 Sentinel+Nacos 是 ...

  6. Docker(3):docker运行nginx实例以及在java容器中运行java程序

    一.目的 通过运行nginx可以充分理解运行镜像原理,以及镜像内部虚拟网络端口和服务器端口的桥接关系.同时,使用java容器,编译java文件,并且运行java程序. 二.docker运行nginx镜 ...

  7. 【Docker】练习-在容器中部署静态网站

    创建映射80端口的交互式容器 安装Nginx 安装文本编辑器vim 创建静态页面 修改Nginx配置文件 运行Nginx 验证网页访问 1.运行一个待端口映射的交互容器,命名为web docker r ...

  8. docker部署html页面,在Docker容器中部署静态网页的方法教程

    前言 一般我们在访问容器时需要通过容器的端口来访问,那如何设置容器的端口映射呢? 我们通过以下命令来设置: docker run -p ip:hostPort:containerPort [--nam ...

  9. docker 运行java程序_Docker:在容器中运行Java应用程序

    您可以使用Docker在特定的运行时环境中运行容器中的Java应用程序.本教程介绍如何创建Dockerfile,以便在OpenJDK 8的容器中运行简单的Java应用程序. 示例应用程序由一个Main ...

最新文章

  1. eclipse新建maven项目_通过Eclipse新建简单动态项目,访问成功
  2. 加油!兄弟连的兄弟们!
  3. 换肤的css,换肤功能,css文件中准备三套颜色
  4. java 泛型 类型形参(Type Parameters)Type Parameters 边界(Bound)
  5. 腾讯安全上海游戏部门笔试题
  6. 安装kepserver找不到根证书_考完二手车评估师证书却找不到工作,面试官的话让我记忆犹新!...
  7. Spring Controller – Spring MVC控制器
  8. 我要自学编程,Java和C语言相比哪个好?
  9. 手机都可以直接敲R了,还要电脑干嘛
  10. 比鲁大师好的测试电脑软件,电脑跑分软件哪个好?好用的电脑跑分软件盘点
  11. python做项目看板_基于pyecharts搭建BI看板
  12. Centos校准时间
  13. Adobe InDesign繁体字转简体字
  14. 炫 音乐可视化 html5 在线,HTML5打造的炫酷本地音乐播放器-喵喵Player
  15. html 设置IE兼容模式
  16. 微信小程序上传阿里云视频文件流程及代码
  17. “大众点评开发者平台”正式上线
  18. mysql出现waiting_MySQL出现Waiting for table metadata lock的原因以及解决方法
  19. C语言:计算油费.2021-07-13
  20. 智能大屏交互中心成彩电业新趋势

热门文章

  1. CCF认证-2015-3-2 数字排序
  2. 列表的下标;查找,判断,增加,删除函数
  3. 梯度为什么是函数增加最快的方向
  4. 中波形过于密集_论高速公路波形护栏板外观设计的重要性
  5. oracle 加号 用法,Oracle的加号(+)表示法和ansi JOIN符号之间的区别?
  6. echarts vue 柱状图实例_「源码学习」适用于 Vue3 的 ECharts 包装组件
  7. [过年菜谱之]杭椒牛柳
  8. Java Applet 问题汇总
  9. ansi c标准_C语言为什么需要有标准库
  10. Carryon的字符串