Visual Studio Tools for Docker快速新建Docker镜像
Posted fireworkseasycool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio Tools for Docker快速新建Docker镜像相关的知识,希望对你有一定的参考价值。
一、Docker简介
Docker是基于Linux容器技术(LXC),使用Go语言实现的开源项目,诞生于2013年,遵循Apache2.0协议。Docker自开源后,受到广泛的关注和讨论。
Docker在开发和运维中的优势:
(1)更快的交付和部署。
使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境,开发完后,测试和运维人员可以直接使用完全相同的环境来部署代码,实现了生产环境的无缝运行。
(2)更高效的资源利用。
Docker容器的运行不需要额外的虚拟化管理程序支持,它是内核级的虚拟化 ,可以实现更高的性能,同时对资源的额外需求很低。
(3)更轻松的迁移和扩展。
Docker容器几乎可以在任意的平台上运行,支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。
(4)更简单的更新管理。
使用Dockerfile,只需要修改一点点配置,就可以替代以往大量的更新工作。并且所有的修改都以增量的方式被分布和更新,从而实现自动化且高效的容器管理。
首先需要知道以下几个概念:
(1)Docker镜像
Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。镜像是创建Docker容器的基础。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制和创建和更新现有的镜像,用户可以直接从网上下载一个已经做好的应用镜像,并直接使用。
(2)Docker容器
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的,互不可见的。
可以把容器看做一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间)以及运行在其中的应用程序打包而成的盒子。
(3)Docker仓库
Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。它的设计理念与Git类似。Docker镜像库分公开仓库和私有仓库。最大的公开仓库是官方提供的Docker Hub。当然,如果不想公开镜像,可以搭建自己的私有仓库。
(4)Dockerfile
一般介绍完以上三个概念就结束了,但我在这里要介绍下Dockerfile,因为镜像的好坏很大程度取决于Dockerfile。Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像。
二、介绍Visual Studio Tools for Docker使用
安装Docker for Windows,系统需求:Windows 10 64bit: Pro, Enterprise or Education
Visual Studio2017 v15.6或以上
(1)新建一个Web API程序
(2)添加Docker支持
右键项目->添加->Docker支持
选择Linux目标操作系统(Windows目标平台的镜像只能在Windows平台运行,而Linux目标平台的镜像既能在Linux平台下运行,也能在新版Win10下运行,因为新版Win10带Linux系统)
之后VS会自动生成一个Dockerfile文件,暂先不讨论它的优劣。
(3)添加容器程序支持
右键项目->添加->容器业务流程协调程序支持
Visual Studio Tools for Docker 通过以下文件向解决方案添加 docker-compose 项目:
.dockerignore列出在生成上下文时要排除的文件和目录类型。
docker-compose.yml基本 Docker Compose 文件,用于分别定义通过 docker-compose build 和 docker-compose run 生成和运行的映像集合。
docker compose.override.yml一个可选文件,通过 Docker Compose 读取,包含服务的配置替代。 Visual Studio 执行 docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" 以合并这些文件。
可以看到输出,在Debug模式下,Visual Studio Tools for Docker已经帮我们新建镜像myapi:dev,dev是镜像的标签。而在Release模式下运行,会生成myapi:latest镜像。
在命令行中输入:docker images
可以看大此镜像。TAG是镜像的标签,IMAGE ID是镜像的唯一标识,CREATED是镜像创建时间,SIZE为镜像大小,优秀的镜像往往体积都较小。
(4)在Debug模式下运行程序,成功返回["value1","value2"]
我们来看它的容器,输入指令:docker ps -a
可以看到容器状态STATUS为UP,已经启动了12分钟。状态为Exited为停止状态。
(5)然后换成Release模式,重新生成项目,成功生成myapi:latest镜像。
这步操作可以改成cmd进入Dockerfile所在目录,输入指令:docker-compose build
然后输入指令:docker run -it -p 52333:80 myapi:latest
-i:保持标准输入打开,默认为false
-t:是否分配虚拟终端,默认为false
-p:映射到本地主机的临时端口
成功运行镜像,浏览器打开:http://localhost:52333/api/values
可获得返回值,可以看出,新版Win10是可以运行目标平台为Linux的镜像。
三、把镜像推送到Docker Hub上
首先需要注册Docker Hub账号,我注册时候是有坑的,注册系统需要做人机检测,需要FQ才能完成。官网地址:https://hub.docker.com/
(1)先把镜像打上标签
输入:docker tag ed159c1011fd zhubingjian/myapi:1.0.0
其中ed159c1011fd为myapi:latest的IMAGE ID。
可以看到,多了一个zhubingjian/myapi:1.0.0镜像,它的IMAGE ID和myapi:latest的相同。
(2)推送镜像到Docker Hub
输入指令:docker login
一般需要输入账号和密码,由于我的Docker是登录状态,所以不用输入
输入指令:docker push zhubingjian/myapi:1.0.0
然后登录自己的Docker Hub,查看网站上的镜像。
(3)打开Ubuntu,获取镜像并运行。
输入指令:docker pull zhubingjian/myapi:1.0.0
这个镜像是公开的,其他人也可按这个方式获取
输入指令,运行镜像:docker run –it –p 52998:80 zhubingjian/myapi:1.0.0
新开一个终端,输入指令,测试获取返回值:curl http://localhost:52998/api/values
四、nginx配置反向代理
最后在Nginx的配置文件中加一段配置,注意端口52998要对应上一步的
server { listen 52999; server_name 服务器IP; # access_log /var/log/nginx/rap_access.log; # charset utf-8; # autoindex off; location /{ proxy_pass http://localhost:52998; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
在本地的浏览器访问:http://localhost:52999/api/values
就可以获取返回值了。
以上是关于Visual Studio Tools for Docker快速新建Docker镜像的主要内容,如果未能解决你的问题,请参考以下文章
Unity Tools for Visual Studio 功能
认识微软Visual Studio Tools for AI
ODAC with Oracle Developer Tools for Visual Studio
无法显示Visual Studio 2008 Tools for Applications编辑器 - MSBuildToolsPath