• 【Docker】基础学习及在.Net Core应用


    一、Docker基础

    • Docker 是一个开源的应用容器引擎,基于 Go 语言
    • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
    • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    二、Docker优点

    1. 简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux【目前windows也支持docker】 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
    2. 避免选择恐惧症: 如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
    3. 节省开支: 一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

    三、安装

    1.按照官方教程安装docker

    https://docs.docker.com/engine/installation/linux/docker-ce/centos/

    下面举例centos的安装,最好centos7.0以上版本

    安装依赖的组件

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

    添加源

    sudo yum-config-manager --add-repo

    https://download.docker.com/linux/centos/docker-ce.repo

    安装docker

    sudo yum install docker-ce

    2.启动Docker

    sudo systemctl start docker #启动Docker

    sudo systemctl enable docker.service #设置Docker服务开机启动

    3.运行hello-world镜像的容器

    sudo docker run hello-world   #基于hello-world镜像创建一个容器

    4.查看当前docker安装的镜像

    docker images

    查看当前正在运行的docker容器

    docker ps

    四、配置

    1.运行docker镜像

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    -d: 后台运行容器,并返回容器ID;

    --name="nginx-lb": 为容器指定一个名称

    -m :设置容器使用内存最大值

    2.网络连接

    docker run -d -p 5000:5000 training/webapp python app.py

    通过-p可以将容器端口映射到宿主端口

    3.Dockerfile详解

    DockerFile分为四部分组成:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令

    #第一行必须指令基于的基础镜像

    From ubutu

    #维护者信息

    MAINTAINER docker_user docker_user@mail.com

    #镜像的操作指令

    apt/sourcelist.list

    RUN apt-get update && apt-get install -y ngnix

    RUN echo " daemon off;">>/etc/ngnix/nignix.conf

    #容器启动时执行指令

    CMD /usr/sbin/ngnix

    1、From指令

    From 或者From :

    DockerFile第一条必须为From指令。如果同一个DockerFile创建多个镜像时,可使用多个From指令(每个镜像一次)

    2、MAINTAINER

    格式为maintainer ,指定维护者的信息

    3、RUN

    格式为Run 或者Run [“executable” ,”Param1”, “param2”]

    前者在shell终端上运行,即/bin/sh -C,后者使用exec运行。例如:RUN [“/bin/bash”, “-c”,”echo hello”]

    每条run指令在当前基础镜像执行,并且提交新镜像。当命令比较长时,可以使用“/”换行。

    4、CMD指令

    支持三种格式:

    CMD [“executable” ,”Param1”, “param2”]使用exec执行,推荐

    CMD command param1 param2,在/bin/sh上执行

    CMD [“Param1”, “param2”] 提供给ENTRYPOINT做默认参数。

    每个容器只能执行一条CMD命令,多个CMD命令时,只最后一条被执行。

    5、EXPOSE

    格式为 EXPOSE […] 。

    告诉Docker服务端容器暴露的端口号,供互联系统使用。在启动Docker时,可以通过-P,主机会自动分配一个端口号转发到指定的端口。使用-P,则可以具体指定哪个本地端口映射过来

    例如: EXPOSE 22 80 8443

    6、ENV

    格式为 ENV 。

    指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。

    7、ADD

    格式为 ADD 。

    该命令将复制指定的 到容器中的 。 其中 可以是Dockerfile所在目录的一个相对路径;也可以是一个URL;还可以是一个tar文件(自动解压为目录)。则。

    8、COPY

    格式为 COPY 。

    复制本地主机的 (为Dockerfile所在目录的相对路径)到容器中的 。

    当使用本地目录为源目录时,推荐使用 COPY 。

    9、ENTRYPOINT

    配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。

    每个Dockerfile中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效

    五、创建镜像 

    通过Docker Build 创建镜像。

      命令读取指定路径下(包括子目录)所有的Dockefile,并且把目录下所有内容发送到服务端,由服务端创建镜像。

    另外可以通过创建.dockerignore文件(每一行添加一个匹配模式)让docker忽略指定目录或者文件

    格式为Docker Build [选项] 路径 

    需要制定标签信息,可以使用-t选项 

    例如:Dockerfile路径为 /tmp/docker_build/,生成镜像的标签为

    build_repo/my_images 

    $dudo docker build -t build_repo/my_images /tmp/docker_build/

    六、.net core docker部署

    1. 在服务上安装 微软提供的.netcore docker镜像

    docker run -it microsoft/dotnet:latest

    -i :交互模式 (so we can interact with it)

    -t : 分配一个(伪)tty (link is external

    microsoft/dotnet:这是微软提供的Docker Core的官方Image名称,

    latest :表示我们使用这个版本的Image

    2.docker build -t [imagename] ./

    -t : 给镜像打个tag(标签),类似于起个名字

    docker run -it -p 8810:80 --name [containername] [imagename]

    3.-p :映射docker容器的端口,docker里面的9100端口映射到Linux的9100端口上

    4.--name: 给我的container起个别名,这个可以不加

    七、总结

    八、其他docker管理工具--Kubernetes

    Kubernetes是Google开源的容器集群管理系统,使用Golang开发,其提供应用部署、维护、扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下:

    使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。

    以集群的方式运行、管理跨机器的容器。 解决Docker跨机器容器之间的通讯问题。

    Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。

    PPT资料下载

  • 相关阅读:
    Ant属性文件
    使用numpy处理数组
    机器学习实战之决策树(一)
    列表去掉重复元素
    cv2.putText,cv2.rectangle方法
    sklearn 中文文档
    numpy delete方法
    MATLAB ~的用法
    MATLAB 基础
    Python 遍历目录下的子目录和文件
  • 原文地址:https://www.cnblogs.com/xuwendong/p/8676849.html
Copyright © 2020-2023  润新知