【Docker】基础学习及在.Net Core应用
一、Docker基础
- Docker 是一个开源的应用容器引擎,基于 Go 语言
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
- 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
二、Docker优点
- 简化程序:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux【目前windows也支持docker】 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
- 避免选择恐惧症:如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
- 节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,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 "\ndaemon 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的自我修复机制使得容器集群总是运行在用户期望的状态。
【Docker】基础学习及在.Net Core应用的更多相关文章
- 【补充】docker基础学习
docker 基础知识 之前写了一篇docker未授权访问的文章,现在来补充一下docker基础知识,以便更好的学习docker上的漏洞. docker是一款轻量级的虚拟化的产品,它属于层级化的架构. ...
- Docker 基础学习(一)
Docker官网:https://docker.com/ 中文翻译非常好的学习地址:http://dockerpool.com/static/books/docker_practice/index.h ...
- [Docker] docker 基础学习笔记3(共6篇)
首先我们安装好了ssh server之后, 我们需要将这个容器commit,然后启动这个被commit的image. 启动方式: docker run -d -p 2222:22 /usr/sbin/ ...
- [Docker] docker 基础学习笔记2(共6篇)
febootstrap 是一个自制image的一个第三方的工具,好像他们现在都要用这个. 安装还是挺方便的. yum -y install febootstrap febootstrap -i ...
- Docker基础学习相关网址
中文学习地址:https://yeasy.gitbooks.io/docker_practice/content/ 官网介绍地址:https://www.docker.com 官网学习地址:https ...
- [Docker] docker 基础学习笔记6(共6篇)
这个迁移指的是docker整个系统的迁移,而不是说images存储位置迁移 docker info 查看docker的各项配置 首先做文件的迁移 使用rsync软件将docker的文件夹整体迁移到 ...
- [Docker] docker 基础学习笔记5(共6篇)
docker 配置文件的位置: centos : /etc/sysconfig/docker ubuntu: /etc/default/docker 现在比如我自己电脑上已经装好了docker,但 ...
- [Docker] docker 基础学习笔记1(共6篇)
巩固一下yum: yum本身是centos自带的软件,可以删掉然后再重新安装. yum本身可以配置yum源,网络的,本地的都可以.之后安装docker需要配置一个扩展源. 从163的网址里边下载好 ...
- docker基础学习(一)
操作演示: 1.查看一个容器的版本 [root@ELK-chaofeng08 ~]# docker version Client: Version: API version: 1.39 Go vers ...
随机推荐
- centos7zabbix-agen安装
安装包下载地址:http://www.zabbix.com/download.php 下载对应rpm包 http://repo.zabbix.com/zabbix/ wget http://r ...
- H5混合开发问题总结
1.This application is modifying the autolayout engine from a background thread, which can lead to en ...
- 干货分享:Neutron的PPT,帮助你理解Neutron的各种细节
深入解析Neutron http://files.cnblogs.com/popsuper1982/Neutron.pptx 经典的三节点部署 架构 怎么理解? 更加深入:Tap Interface ...
- Azure Web连接到Azure MySql Db
这个问题折腾了好一会,简单记录一下. 两种方式: 输入"规则名称"."起始 IP"和"结束 IP",然后单击"保存". ...
- Spring IOC容器基本原理
2.2.1 IOC容器的概念IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IOC容器 ...
- 一个月薪两万的Web安全工程师要掌握哪些技能?
作为一个薪水两万起步的工作,我想知道这些牛人们都会哪些技能呢? Web安全相关概念.熟悉渗透相关工具.渗透实战操作.关注安全圈动态.熟悉Windows/Kali Linux.服务器安全配置.脚本编程学 ...
- 51Nod-1006 最长公共子序列Lcs
题目链接 Description 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca ...
- Python内置函数(63)——super
英文文档: super([type[, object-or-type]]) Return a proxy object that delegates method calls to a parent ...
- Vim 复制粘帖格式错乱问题的解决办法
有时候,复制文本(尤其是代码)到 Vim,会出现格式错乱的问题.看样子,应该是自动缩进惹得祸.本文不去深究原因,直接给出解决方法. 1. paste 模式 运行如下命令,进入 paste 模式: :s ...
- Bootstrap之底层媒体查询
<style> @media only screen and (min-width:1024px ) { #box{ display: flex; flex-direction: row; ...