zoukankan      html  css  js  c++  java
  • docker~从Dockerfile到Container的过程(终于算是OK了)

    回到目录

    上一文章,主要介绍Dockerfile里各参数的含义,以及在项目文件里这些内容的含义,因为大叔认为官方和网上其它文章说的有些模棱两可,不太好让大家理解,所有我又从新写了一个大白话的文章,希望可以给大家一些帮助.<DotNetCore跨平台~Dockerfile的解释

    本文章主要对一个windows下的dotnet new api生成的项目进行迁移,将它存储为一个镜像,然后运行这个镜像,生成一个容器,容器对外开放5000端口,大家就可以通过5000来访问它了,说起来很容易,做起来有些坑!

    Docerfile和DotnetCore部署的过程

    1. 项目需要在windows里恢复,生成一下,dotnet restore和dotent publish
    2. 我们在docker里使用的是生成后的东西,比较如目录是项目下的obj/docker/publish
    3. 你的Dockerfile与obj目录是同一级的
    4. 使用docker build '加你的项目根目录路径"
    5. 使用docker run -it -p 5000:5000 imageId 运行起一个容器来,同时向外监听了5000端口

    做起来

    1 通过dotnet new生成一个项目,路径:C:Userslindhellomvc

    2 我们在docker里使用的是生成后的东西,比较如目录是项目下的obj/docker/publish

    3 你的Dockerfile与obj目录是同一级的

    Dockerfile的内容如下

    #基于microsoft/dotnet 来构建我们的镜像,它有800多兆,不是300多兆那个
    FROM docker.io/microsoft/dotnet
    MAINTAINER lind
    #设置Docker容器对外暴露5000端口
    EXPOSE 5000
    #输入参数
    ARG source 
    #如果输入参数source为空,就使用当前目录下的bin/Release/PublishOutput作为发布目录
    COPY ${source:-obj/Docker/publish} ./hellomvc
    #将容器当前目录设为hellmvc
    WORKDIR hellomvc
    #在容器中运行dotnet这个命令
    ENTRYPOINT ["dotnet","hellomvc.dll"]

    4 使用docker build '加你的项目根目录路径"

    这个命令是在linux平台执行的,下面看一下我们项目的路径,可以使用xft,xshell等工具,方式操作,使用xft把整个项目都复制到linux下的/root/project目录

    在xshell中连接你的linux主机,输入下面的命令,生成一个新的镜像

    如果希望为source输入参数指定新的值,可以使用下面语句

    #docker build "/root/project/coreMvc/" --build-arg source="/root/project/coreMvc/bin/Release/PublishOutput"

    如果上面出现目录未找到的问题,请像发布目录设备为:objDockerpublish

    5 使用docker run -it -p 5000:5000 imageId 运行起一个容器来,同时向外监听了5000端口

    镜像生成后,我们使用docker run 去启动一个容器!

    启动后,它将监听5000这个端口,IP地址就是linux主机的,我们在外面可以通过linux ip:5000来访问它

    如果你希望对外暴露8000端口,可以这样写docker run -it -p 8000:5000 7c8d43fe67f9,这样,相同的网站被你在两个容器中共同执行了,或者说一个网站多了一个"负载"的支持,看到这里你是否想起什么了,对就是负载均衡,你的环境部署更简单了,一个项目可以在很短的时间被部署起来,再配上反射代理(nginx,lvs),一个网站负载就搭好了!

    这个命令可以为你的镜像重命名

    docker tag 7c8d43fe67f9 helloapi:1.0

    当然,如果你的阿里云有自己的镜像,也可以把这个镜像改名成阿里云的奖项,然后把这个本地的镜像push到云上,方便在其它服务器上使用它

    希望这篇文章可以帮助刚开始学docker的学生们,大家有问题可以直接与我联系!

    docker是一种新的技术,它在未来将会再火一把!

    一个镜像,到处执行!

     回到目录

  • 相关阅读:
    mysql命令行备份数据库
    js关闭当前页面的几种方式
    Linux添加FTP用户并设置权限
    在Activity的Title中加入进度条
    android例子程序(ApiDemo)的简单分类整理
    使用WindowManager窗口管理员,把View显示在屏幕中间
    android手动调用振动器(Vibrator)
    android 监听SDCard安装和卸载的代码片段(测试通过)
    android Paint和Color类介绍 使用示例
    GC_EXTERNAL_ALLOC freed 与 GC_EXPLICIT freed 是什么?
  • 原文地址:https://www.cnblogs.com/lori/p/7169816.html
Copyright © 2011-2022 走看看