Docker学习笔记
docker概述
基于go语言开发的开源项目 解决环境问题——“在我的电脑上能跑”
传统开发一款产品 两套环境 开发和上线 环境配置麻烦 无法跨平台
传统:打jar包 交给运维
现在:开发打包部署上线(打包jar包+环境)
集装箱思想:环境镜像,打包装箱,每个箱子之间相互隔离
虚拟机:在windows中安装一个vmware,通过软件去虚拟化出一台或多台电脑 笨重 几分钟启动
容器:核心环境镜像(最核心环境+jdk+mysql…)同样是虚拟化技术 轻巧 秒级启动
官方文档:https://docs.docker.com
仓库地址:https://hub.docker.com 发布镜像
Docker能干什么?
虚拟机技术缺点:资源占用多;冗余步骤多;启动慢
容器化技术:并非模拟一个完整的操作系统
比较docker和传统虚拟机技术:
-
传统虚拟机会虚拟出一套硬件,模拟一个完整的操作系统,然后在此操作系统安装运行软件
-
容器内的应用程序直接运行在宿主机的内核,容器没有自己的内核,也没有虚拟硬件,所以更为轻便
-
每个容器相互隔离,有自己的一套文件系统,互不影响
DevOps(开发,运维)
应用更快速的交互和部署
传统:大量帮助文档,安装程序
Docker:打包镜像发布测试,一键运行
更便捷的升级和扩容
项目打包为一个镜像,可以以服务器为单位整体扩展
更简单的系统运维
容器化之后,开发测试环境变得高度一致
更高效的计算机资源利用率
Docker是内核级别的虚拟化,可以在一台物理机上运行很多容器实例
Docker安装
Docker的基本组成
客户端-服务器-远程仓库
镜像image :
docker镜像好比是一个模版,可以通过这个模版来创建容器服务,tomcat镜像->run->tomcat01容器(提供服务器),
通过这个镜像可以创建多个容器(最终服务或项目运行在容器当中)
容器cotainer :
Docker利用容器技术,独立运行一个或一组应用,通过镜像来创建。
启动 停止 删除 基本命令
简单看作一个简易版Linux系统
仓库repository:
仓库是用来存放镜像的地方,分为共有仓库和私有仓库
Docker Hub默认国外
阿里云等等(镜像加速)
安装Docker
环境准备CentOS7;Xshell远程连接
参考帮助文档
卸载旧版本-安装相关依赖包-设置镜像仓库-安装docker相关内容-启动docker——systemctl start docker
Run的流程和Docker原理
Docker run - 在本机寻找镜像-有则运行 没有就在仓库上下载-仓库有则下载到本地并运行 没有则返回报错
底层原理
Docker是怎么工作的?
Docker是一个client-server结构系统,Docker守护进程运行在主机上,客户端通过socket访问
docker-server接收到docker-client的指令后执行
Docker为什么比VM快?
- Docker有着比虚拟机更少的抽象层
- Docker使用的是宿主机的内核,VM需要Guest OS
所以docker启动时不需要重新加载一个操作系统的内核
Docker常用命令
帮助命令
docker version 显示当前docker版本信息
docker info 显示docker的系统信息 包括镜像和容器的数量
docker 命令 --help
镜像命令
docker images 查看所有本地主机上的镜像
可选项:-a 显示所有镜像 -q 仅显示镜像id
docker search mysql 搜素镜像
可选项:–filter stars=3000 #过滤查找收藏数大于3000的镜像结果
docker pull 镜像名 下载镜像
可指定版本下载 否则默认下载最新版本
docker rmi 删除镜像
docker rmi -f 镜像id #删除指定镜像
docker rmi -f $(docker images -aq) #删除全部镜像
容器命令
说明:有了镜像才可以创建容器
docker pull centos
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名