zoukankan      html  css  js  c++  java
  • .Net Core(完) 创建Docker镜像

    使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置、软件等,各个容器之间的软件基本不会互相干扰。Docker上配置好的容器可以随意移动到其它计算机中运行。
    Docker可以很好得保证应用之间的互相隔离,同时Docker的进程跑在原生操作系统上,不会像虚拟机哪样性能差。
    Docker还能更好地满足网站对于可伸缩性的要求,可以按需自动扩容,同时docker还具有“即抛”的特性,访问高峰过去后也可以减少容器的数量。

    一、安装Docker
    a)先了解一些基本概念:
    镜像(Image):类似于软件安装包;
    容器(Container):镜像安装后运行的实例,同一个镜像可以用于在一台服务器上创建多个容器;
    镜像Layer:因为镜像可以被pull,修改后push,所以对于一个镜像的多次修改就会产生多个layer。
    b)Docker的安装包为docker.io,安装完成后使用sudo docker version/info查看相关信息。

    c)用Docker来类比VirtualBox等虚拟机,那么镜像就相当于安装盘,“虚拟机”安装好了,下面加载安装盘。docker的官网上有多种镜像,busybox这个镜像只有1m左右。执行sudo docker pull busybox可以获取镜像,sudo docker run -it busybox运行,也可以直接运行,docker会自动先获取。使用linux的whoami和uname-a指令可以验证docker是独立的环境。busybox的详细版本为Linux f3486b919f40 4.10.0-33-generic,也许跟Linus当年写的第一个版本差不多吧。
    c)将当前用户加入docker的用户组,可以免去在每个docker指令前加sudo的麻烦。

    sudo groupadd docker #确认存在docker用户组
    sudo gpasswd -a zhixin docker #将当前用户加入docker组
    sudo service docker restart #重启docker服务
    最后注销、重新登录系统。


    二、Docker常用命令
    docker --help
    docker run --help 使用类似的写法查看子命令的帮助
    exit 退出容器
    docker run -it busybox 启动busybox镜像的新容器实例
    docker run -it --name <name> busybox --name为容器指定名称
    docker ps 查看正在运行的容器,加-a显示全部,-q只显示容器ID,-f筛选,docker ps -a -f=ancestor=busybox 按照名称筛选
    docker rm <容器ID> 删除容器,使用docker rm $(docker ps -q -a) 这样的写法可以删除全部
    docker start <容器ID> 启动一个容器实例,后台运行
    docker stop <容器ID> 停止
    docker run -d busybox 创建实例并后台运行,但如果容器没什么操作,会自动停止,start不会停止
    docker attach <容器ID> start容器后默认后台运行,attach可以进入容器
    docker images 列出所有镜像
    sudo docker rmi <镜像ID> 删除镜像,删除前需要先删除该镜像的容器

    三、制作.Net Core镜像
    a)首先获取microsoft/dotnet:runtime镜像,这个镜像只带有core的运行时,比microsoft/dotnet小了一半。
    b)创建并发布一个asp.net core项目,program.cs中添加.UseUrls("http://*:5000"),要在.Build()方法之前。
    c)在发布目录下创建Dockerfile,内容为:

    FROM microsoft/dotnet:runtime
    COPY . /publish #注意.和/之间有空格,表示把主机当前目录内容拷贝到镜像的/publish目录
    WORKDIR /publish #设定工作目录
    EXPOSE 5000/tcp #暴露 5000 端口
    CMD ["dotnet","ForNginx.dll"]

    d) 执行docker build -t zhixin/web1 . 来构建新的镜像
    e) 执行docker run -d -p:81:5000 zhixin/web1来启动镜像,并映射docker的5000端口到主机的81端口


    学习资料:如鹏网.net提高班http://www.rupeng.com/News/10/4603.shtml

  • 相关阅读:
    C语言函数运行时间测试
    C++无需创建实例而访问类成员函数
    Why do I get "Value computed is not used" when working with pointers?
    指针数组以及指向字符串的理解
    彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
    结构体(struct) 的 sizeof 大小
    C语言深入学习系列 字节对齐&内存管理
    C语言字节对齐详解
    poj2945
    poj2110
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/7517887.html
Copyright © 2011-2022 走看看