一、Docker基础(镜像是类,容器是对象)
快速搭建Docker
a、在阿里云中体验快速搭建(链接如下)
https://developer.aliyun.com/adc/scenario/exp/9fd79b8711984e309f20d82bc65a26fa
1、优点
a、Docker相较于VMware可以有效利用宿主机的CPU,不会造成内存浪费
b、无需启动完整的操作系统,启动应用服务时间极快(秒级)
c、确保了应用环境一致性,避免了环境不同出现的BUG
d、可使用Dockerfile(能使镜像构建透明化)来进行镜像构建,并结合持续集成系统进行测试和自动部署
e、确保应用环境一致性后,使得应用迁移轻松,确保多平台运行结果一致
2、Docker引擎
a、一种服务器,是称为守护进程并且长时间运行的程序
b、REST API用于指定程序可以用来与守护进程通信的接口,并指示其功能
c、一个有命令界面(CLI)工具的客户端
3、Docker架构
标题 | 说明 |
---|---|
镜像(Images) | 用于创建Docker容器的模板 |
容器(Container) | 容器是独立运行的一个或一组应用 |
客户端(Client) | 通过命令行或者其他工具使用Docker API与Docker的守护进程通信 |
主机(Host) | 一个物理或者虚拟的机械用于执行Docker守护进程和容器 |
仓库(Regisry) | 用于保存镜像(代码控制中心的代码仓库),Docker Hub提供了庞大的镜像集合供使用 |
Docker Machine | 简化Docker安装的命令行工器具,通过简单的命令行即可在相应的平台上安装Docker(如:VirtualBox) |
a、分层存储
1,镜像构建时,前一层是后一层的基础;每一层构建完就不会再发生改变,后一层上的改变只发生在自己这一层
4、仓库(一般使用阿里云加速器或者直接使用阿里云镜像库)
a、一个Docker Registry中可以包含多个仓库;每个仓库可以包含多个标签;每个标签对应一个镜像
5、docker语法
a、获取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名 [:标签]
docker pull tomcat:jre-9
b、地址[:端口号]一般有默认值或者配置阿里云镜像库
c、运行
1,docker run 就是运行容器的命令
docker run -it --rm
centos:版本号
bash ——运行centos容器并启动里面的bash进行交互式操作
1- -it,-i:交互式操作,-t:终端
2- --rm:排障和保留结果,使用该命令可以避免空间浪费
3- bash:放在镜像名后的是命令,这里我们希望有个交互式Shell,因此用的是bash
d、删除、查询容器和镜像
1,镜像删除 docker rmi 镜像ID
在删除前使用
docker images 查看镜像
2,容器删除 docker rm 容器ID
在删除前使用
docker ps 查看容器
docker ps -a 查看所有容器(包括隐藏的容器)
二、Dockerfile 定制镜像
1、步骤
a、创建指定的文件夹(一般放在usr/local目录下)、
b、创建Dockerfile文件
c、编辑Dockerfile
/*
终端指定文件夹中编辑以下命令行
*/
vim Dockerfile
//打开Dockerfile后
RUN 【定制镜像类型】
RUN 【定制内容】 > 【镜像指定目录】
d、 构建新的镜像
docker build -t 【定制的名称】 . ——此处为【定制名称】+空格+点,点表示当前目录
三、数据卷
1、概念
a、数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性
b、数据卷可以在容器之间共享和重用
c、对数据卷的修改会立马生效
d、对数据卷的更新,不会影响镜像
e、数据卷 默认会一直存在,即使容器被删除
2、相关命令
a、docker volume create my-volumn(创建数据卷)
b、docker volume ls(查看所有数据卷)
c、docker volume rm my-volumn(删除数据卷)
/*
在用 docker run 命令的时候,使用 -v 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个 数据卷。
*/
//下面创建一个名为 web 的容器,并加载一个 数据卷 到容器的 /webapp 目录。
docker run -d -P \
--name web \
-v my-vol:/wepapp \
training/webapp \
python app.py