什么是docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。司内部项目
优势
1 更高效的利用系统资源
2 更快速的启动时间
3 一致的运行环境
4 持续交付和部署
5 更轻松的迁移
Docker引擎是一种包含以下主要组件的客户端服务器应用程序 cs架构
一种服务器,他是一种称为守护进程并且长时间运行的程序
Rest API 用于绑定程序可以用来与守护进程通讯的接口,并表示它做什么
一个有命令行界面工具的客户端
分层存属
Docker架构
Docker使用客户端-服务端(C/S)架构模式,使用远程API来管理和创建Docker容器,Docker容器通过Docker镜像来创建,容器与镜像的关系类似与面向对象中间的对象和类
Docker镜像 用于创建Docker容器的模板
Docker容器 独立运行的一个或一组应用
Docker客户端 Dcoker客户端通过命令行工具使用DockerApi与他的守护进程
Dokder主机 一个物理或者虚拟的机器用于执行Docker守护进程
Docker仓库 用来保存镜像,代码仓库
Docker Machine 简化Docker安装的命令行仓库
使用脚本安装
Ubuntu安装docker大概要区分为Ubuntu14.04之前和Ubuntu14.04之后两种方法,如果是14.04版本之后的Ubuntu,其内核版本以及一些依赖包都已经准备充分,直接运行下载最新版docker即可:
apt-get install curl //有就不需要下载
curl -fsSL get.docker.com -o get-docker. sh
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh - //阿里云的安装脚本
curl -sSL https://get.daocloud.io/docker | sh //DaoCloud 的安装脚本 我用的这个
ok!可以使用docker version 查看是否安装成功
配置镜像加速器
地址 vi /etc/docker/daemon.json 没有就创建一个
配置内容
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
重新启动docker
systemctl restart docker
docker pull tomact下载镜像tomcat
docker images 查看下载的镜像
docker run -p 8080:8080 tomcat 运行tomcat
使用docker镜像
镜像是docker的三大组件之一,docker运行容器之前需要本地存在对应的镜像,如果不存在,docker会从镜像仓库下载该镜像
获取镜像
docker ps 看正在运行的容器 docker -a 查看所有的容器
docker rm 容器id名 删除容器
从Docker镜像仓库中间获取镜像的命令是docker pull 其命令格式是
docker pull 镜像名
运行 docker run -it --rm (多行命令换行)
ubuntu:16.04 \
bash (sell脚本运行器)
-i 交互式操作 -t终端
–rm容器退出时主动删除
列出镜像
docker image ls 或者docker images
镜像体积
虚悬镜像
没有仓库名,也没有标签 ,全部都是none
查看 docker images -f dangling=true
删除 docker rmi $(docker images -q -f dangling=true)
删除本地镜像
docker image rm 镜像id
使用dockerfile定制镜像
dockerfile是一个文本文件,其中包含了一条一条的指令,每一条指令构建一层
以tomcat为列
第一步先改一个tomcat再说哈哈啊哈哈,由易入难
以交互的方式启动tomcat
docker run -it tomcat bash
进入webapps/root/目录,修改index.jsp 在这个环境下面是不可以执行vi命令的,利用echo>> 追加“HELLO MY NAME IS TAN ”到index.jsp 中间,exit退出
启动tomcat docker run -p 8080:8080 tomcat
这里修改并不会看到效果,因为触发了docker的隔离机制 ,必须以交互的形式进入容器
docker exec -it 容器id bash
(docker exec -it 65507389e500 bash)重复前面操作----
结果图如下
继续,,,,
先把上一个容器删除 自定义镜像
1 cd /usr/local/ 进入local文件
2 mkdir docker 创建docker目录
3 在docker里面创建tomcat目录 并且创建文件Dockerfile开始写脚本
FROM tomcat
RUN
有一个地方写错了EXHO 改为echo
脚本内容FROM 指定基础镜像
定制镜像以一个镜像为基础,在其上面进行定制,必须是第一条指令
RUN 执行命令
执行命令行命令 格式有两种 sell RUN<命令> (尖括号是必填,中括号是选填)
写完脚本之后开始构建镜像
利用build构建 docker build -t 名字和标签 .(指定构建的目录)
以交互的方式进入tan docker run -it tan bash
WORKDIR 工作目录类似于cd 启动时候会直接 进入