分类:docker

Docker培训

Docker:

概述:

Docker通过Linux Container技术将任意类型的应用进行包装,由GO语言开发而成,变成一种轻量级的,标准化的,可移植的,自管理的组件。因为这种对应用的包装不仅包装了应用程序本身,更将应用的依赖和环境一并进行打包,所以她允许我们可以将这个包拿到任意环境去运行,提高效率的同时,不再有兼容性的问题。比如:需要将腾讯云上的服务迁移到阿里云,如若使用传统迁移的方法会非常麻烦,但是如果使用docker,则只需要将docker容易迁移到新的服务器上,启动容器即可(一次封装、到处运行);

优势:

1.体积小:减小系统的开销值,一台主机可以运行上千个容器;

2.启动迅捷:更快速的交付和部署,docker容器启动、停止可以实现秒级,比传统虚拟机要快很多,docker核心解决的问题就是利用容器实现VM类似的功能;

3.操作方便:通过配置dockerfile配置文件支持灵活的自动化创建和部署;

4.更轻松的扩展:可以实现更简单的、更可靠的迁移,避免了兼容性等问题;

5.更强的可扩展性和可移植性:

劣势:

1.隔离性:容器虚拟化的隔离性远不及主机级虚拟化,因为多个容器之间共用一个内核空间,是在同一个内核空间进行强行隔离的,而主机级虚拟化是通过多个内核进行统一的隔离;

2.调试工具:传统的服务运行架构是建立在一个内核空间、一个用户空间之上,所有的服务共用一套调试工具,在容器虚拟化中,每个服务运行在一个单独的容器,每个容器就是一个单独的用户空间,那么每个用户空间都需要一套独立的调试工具来管理;

Docker所解决的问题:

核心概念:

1.镜像(Image):创建容器的基础,类似于虚拟机的快照功能,可以理解为一个面向docker容器引擎的只读模板,每个镜像都有一个tag标签,作为其标识;最小的镜像是hello-world镜像,其次是base镜像,如centos系统、ubuntu系统,用户可以根据自己的需求进行对该镜像进行编写,比如:一个镜像可以是一个完整的centos系统,称之为centos镜像;也可以是一个安装了mysql的应用程序,称之为mysql镜像;

镜像的来源可以是一些公网的镜像仓库,如docker hub,下载镜像的过程中会发现,镜像文件是由若干层(Layer)组成,称之为AUFS(联合文件系统),是实现增量保存和更新的基础;

2.容器(Container):基于镜像所创建的实例,可以被启动、停止、删除,多个容器之间互相隔离,互不可见的,可以保证容器的进程隔离性与平台的安全性,也可以把容器看作成为一个简易的linux环境,可以利用容器来部署业务;

3.仓库(Repository):仓库作为docker集中存放镜像的位置,当创建了自己的镜像后,可以使用push命令将镜像上传到公共仓库(public)或者私有仓库(private),这样下次再次使用时,直接从仓库pull下来即可;

仓库注册服务器(registry)是存放仓库的地方,其中包含很多仓库,如果无私有仓库,则使用当前docker最大的公共仓库https://hub.docker.com/,其中存放了数量庞大的镜像供用户下载使用(注:公司harbor服务器就是docker的镜像仓库:https://harbor.raginghot.com.cn/);

基础命令

docker images 查看镜像信息列表 镜像是静态的

docker ps -a 查看运行中的所有容器

docker pull  [images]:[version]从dockerhub拉取指定镜像

docker run -p 8000:80 -tdi –privileged [imageID] [command]  后台启动docker,并指定宿主机端口和docker映射端口。

docker rm [containerID] 删除容器

docker rmi [imageID] 删除镜像

docker cp [YourHostFilePath] [containerID]:[DockerPath]  将宿主机内的指定文件传输至容器内部的指定地址。

镜像制作

创建dockerfile文件(官网编写说明https://docs.docker.com/engine/reference/builder/)

[root@ ~]# cat Dockerfile

FROM docker.io/tomcat

MAINTAINER rstyro

COPY admin.war /usr/local/tomcat/webapps

构建镜像:

# -t 参数 后面跟镜像名字和tag  注意别忘了后面的 . 点表示当前路径

docker build -t 镜像名:版本号 .