zoukankan      html  css  js  c++  java
  • 使用Docker,很多坑(之一):在windows中使用

    最近在学习.net core,必不可少的需要学习docker,在此记录一下,做一下知识积累。
    前提:windows环境,vs2019
    目标:生成本地docker image,并上传到远程respository。从远程respository下拉取镜像并在本地部署运行
    1. 下载docker for windows并安装。

    2. Docker网站上注册用户。

    3. 打开docker desktop,一定要记得切换docker 为windows,并做好登陆(这时如果登录了,docker login时会调用这里)

    4. 打开vs2019,新建asp.net core项目,版本2.2(Mark一下,3.1的版本总有问题,这里先用2.2)

    5. 项目文件上右键菜单,添加docker file for windows

    6. Docker file内容如下,并修改其属性:

    (a)From 基础依赖镜像
    --#基于 microsoft/aspnetcore:2.0 来构建我们的镜像
    FROM microsoft/aspnetcore:2.0

    (b)Copy
    --#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中
    COPY . /publish

    (c)WORKDIR设置工作路径
    --#设置工作目录为 /publish 文件夹,即容器启动默认的文件夹
    WORKDIR /publish

    (d)对外开放的端口
    --#设置Docker容器对外暴露5000端口
    EXPOSE 5000

    (e)ENTRYPOINT 运行donet命令,参数是程序集的名字,不含路径
    --#使用dotnet CoreMvc.dll来运行应用程序
    ENTRYPOINT ["dotnet", "CoreMvc.dll"]

    1. 随便在页面上修改内容,运行项目。

    2. publish项目到本地。

    3. 打开控制台程序,进入到publish的文件夹,生成imange, 名为dockerimagetest, 命令为"docker build -t dockerimagetest ." Note:最后面有个英文的点。注意,如果这个image文件想上传到仓库里,名称前应该加上docker的用户名/, 如abc/dockerimagetest

    4. 上面的步骤表示镜像已经生成成功了,现在用一个容器来装载这个image来看看。命令"docker run --name=容器名称 -p 宿主端口:容器端口-d 镜像名称",容器名称为dockercontainertest,镜像名称为dockerimagetest,-d为后台运行并返回容器id,-p: 指定端口映射,格式为:主机(宿主)端口:容器端口,整个命令为"docker run --name=dockercontainertest -p 7788:80 -d dockerimagetest",执行完后打开网页,通过7788端口可以访问了:

    5. 上面的步骤生成了一个image并在本地运行了,下面我们要做的是把image push和pull回来。先把这个image上传。输入docker login,我这里docker for desktop已经登录了,所以它自己会检测,不用再填写用户名和密码了。

    6. 执行docker push dockerimagetest,出错,原来在推送之前要把镜像按/格式来命名。那如何重命名呢,我们用打标签的方式重命名。先查看所有的image,打标签语句:docker tag 旧名 dockerhub用户名/新名字,打完标签后再push,已经在上传了。



    7. 通过上图可以看到镜像已经上传了。下面试着把image pull下来并运行吧。此处应该找一个新机器,我这里资源有限,还是用原来的机器,先把所有的container和image清除干净。清理干净后,访问http://localhost:7788/,已经无法访问了。同时把本地publish文件夹内文件清空(模拟新的机器)

    8. 执行docker pull friendwang1001/dockerimagetest:latest

    9. 镜像已经下载下来了。重复第10步,装载镜像,镜像名稍有变化,docker run --name=dockercontainertest -p 7788:80 -d dockerimagetest,再次访问7788端口,网站加载上了,Yeah!

  • 相关阅读:
    7.6实战练习
    构造方法的主要应用
    6.0字符串String
    数组冒泡排序
    数组(二维数组)
    5.1数组(一维部分)
    4个方位的三角形和菱形
    4.3循环语句
    控制台输入输出
    4 java语句 4.2条件语句
  • 原文地址:https://www.cnblogs.com/friendwang1001/p/12867654.html
Copyright © 2011-2022 走看看