Docker学习
**1、Docker为什么会出现?**
一款产品: 开发-->上线 两套环境 (应用环境+应用配置)
开发-------运维 ,问题: 我在我的电脑上可以运行,版本更高,导致服务不可能!对于运维来说,考验就十分大?
环境配置是十分的麻烦,每一个机器都 要部署环境(集群Redis、ES、Hadoop......),费时费力。
Windows环境,最后发布到Linux !
传统:开发jar,运维来做!
现在:开发打包部署上经,在套流程做完!
java ---- apk — 发布(应用商店)— 张三使用apk — 安装即可用
java — jar(环境) — 打包项目带上环境(镜像) ---- (Docker仓库:商店) ---- 下载我们发布的镜像 ---- 直接运行即可!
Docker给以上的问题,提出了解决方案!
Docker的思想就是来自于集装箱!!!!
JRE— 多个应用(端口冲突)—原来都是交叉的!
隔离:Docker核心思想!打包装箱!每个箱子是互相隔离的!
Docker通赤隔离机制,可以将服务器利用到极致!
本质:所有的技术都是因为出现了一些问题,我们需要去解决,才去学习!!!!
—Docker的历史
2010年的时候,几个摘IT的年轻人,就在美国成立了一家公司dotCloud 做一些pass的云计算服务,LXC有关的容器技术,他们将自己的技术(容器化技术)命名为Docker。
开源
开发源代码!!!
2013年,Docker开源!
Docker越来越多的人发现了docker优点,火了,Docker 每个月都 会更新一个版本!
2014年4月9日,Docker1.0发布
Docker为什么这么火呢,十分的轻巧!
在容器技术出来之前,我们都 是使用了虚拟机技术!
虚拟机:在windows中将一个Vmware,通过这个软件我们可以虚拟出来一台或者多台电脑,笨重!
虚拟机也是属于虚拟化技术,Docker容器技术,也是一种虚拟化技术
聊聊Docker
Docker是基于Go语言开发的!开源项目!
官网:https://www.docker.com/
官网文档地址:https://docs.docker.com/ Docker的文档是超级详细的。
仓库地址:https://hub.docker.com
Docker能做什么?
之前的虚拟机技术!
虚拟机技术缺点
1、资源占用十分多
2、冗余步骤多
3、启动很慢
比较Docker 和虚拟机技术的不同:
1、传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统 上安装和运行软件
2、容器内的应用直接运行在宿主机的内核,容器是没有自己的,也没有虚拟我们的硬件,所以就轻便了
3、每个容器间互相隔离,每个容器内部都有一个属于自己的文件系统,互不影响
DevOps(开发,运维)
应用更快速的交付和部署
传统:一帮助文档,安装程序
Docker:打包镜像发布测试,一键运行
更便捷的升级和扩缩容
使用了Docker之后,我们部署应该和拱积木一样,项目打包为一个镜像,扩展 服务器A 服务器B
更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的,
更高效的计算资源利用:
Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例!服务器的性能可以压榨到极致~~~
1、Docker的基本组成
镜像(image):
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像====>run==>tomcat01容器(提供服务器)通过这个可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container):
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的,启动,停止,删除,基本命令!
目前就可以把这个容器理解成为就是一个简易的Linux系统
仓库(repository)
仓库就是存放镜像的地方
仓库分为公有仓库和私有仓库
Docker Hub(默认是国外的)
阿里云。。。。都有容器服务器(配置镜像加速)
2、安装Docker
环境准备:
1、会一点点的Linux基础
2、CentOS 7
3、我们使用Xshell连接远程服务器进行操作!
环境查看:
#系统内核是3.10以上
root@joboy ~]# uname -r
3.10.0-693.2.2.el7.x86_64
系统版本:
安装
帮助文档:
-----#1、卸载旧的版本
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
----- #2、需要的安装包
yum install -y yum-utils
----- #3、设置镜像仓库
sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo
(这是官网文档提供的,默认是国外的,一般网速比较慢)
一般国内改为阿里云的
sudo yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
----- #4 更新yum软件包索引
yum makecache fast
----- 5# 安装docker docker-ce 社区版 ee 企业版
yum install docker-ce docker-ce-cli containerd.io
----- #6 启动Docker
syscemctl start docker
----- #7 使用docker version 测试是否安装启动成功
----- #8 hello-world
docker run hello-world
# 了解:卸载docker
@1 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
@2 删除资源
rm -rf /var/lib/docker
注: /var/lib/docker docker默认的工作路径
阿里云镜像加速
1、找到容器镜像服务
2、找到镜像加速地址
3、配置使用,这样配置好之好下载就会很快了
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://az6mtmly.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docke
注:每个人的阿里云配置是不一样的
-@@docker run 运行的流程@@-
底层原理
1、Docker是怎么工作的?
Docker 是一个Client - Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问,DockerServer接收到Docker-Client的指令后,就会执行这个命令
2、Docker为什么比虚拟机VM 快?
a、Docker有着比虚拟机更少的抽象层
b、Docker利用的是宿主机的内核,VM需要用Guest OS
所以说,新建一个容器的时候,Docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机是加载GuestOS,分钟级别的,而Docker是利用宿主机的操作系统,省略了复杂的过程秒级的
之后学习完毕所有的命令,再回过头来看这段理论,就会很清晰
.
.
.
Docker常用命令
1、帮助命令
。。。。。。docker version #显示docker的版本信息
。。。。。。docker info #显示docker的信息
。。。。。。docker 命令 --help #万能帮助命令
.
.
.
官网帮助文档地址:https://docs.docker.com/engine/reference/commandline/build/