所谓的虚拟化技术其实是一种资源管理技术,它可以将我们的计算机中的实体资源进行虚拟化。
虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等。
为了提供我们计算机的使用率;
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用。
全虚化架构、os层虚拟化架构、硬件层虚拟化架构
注意:os层虚拟化架构:
1)os层虚拟化架构虚拟出来的操作系统需要和我们底层的操作系统共享系统内核
2)Docker是os层虚拟化架构的一个产品
3)硬件层虚拟化架构不依赖于系统内核,没有系统的操作系统Host os
docker是os层虚拟化架构的一种体系产品,os层虚拟机架构是虚拟出来的操作系统需要和宿主机中操作系统共享一个内核,docker容器的体积就相对比较小。
docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
1.交付物标准化
1)Docker是软件工程领域的“标准化”交付组件,最恰到好处的类比是“集装箱”。
2)集装箱将零散、不易搬运的大量物品封装成一个整体,集装箱更重要的意义在于它提供了一种通用的封装货物的标准,卡车、火车、货轮、桥吊等运输或搬运工具采用此标准,隧道、桥梁等也采用此标准。以集装箱为中心的标准化设计大大提高了物流体系的运行效率。
3)传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。Docker的标准化交付物称为“镜像”,它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。
2.一次构建,多次交付
类似于集装箱的“一次装箱,多次运输”,Docker镜像可以做到“一次构建,多次交付”。当涉及到应用程序多副本部署或者应用程序迁移时,更能体现Docker的价值。
3.应用隔离
集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。
容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本。
# (| grep:管道命令)
yum list installed | grep docker
yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64
rm -rf /var/lib/docker/
# (| grep:管道命令)
yum list installed | grep docker
yum install docker
提示信息:
安装1软件包(+2依赖软件包)
总下载量:20M
安装大小:69M
Is this ok [y/d/N]:
输入y进行安装:y
# 更新APT包所有资源
sudo apt-get update
sudo apt-get install -y docker.io
docker -v
docker images
# 例:(搜索tomcat: docker search tomcat)
docker search 镜像名称
vi /etc/docker/daemon.json
{
# 可以换成自己的阿里云镜像加速器
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
重启docker:systemctl restart docker
# 使用vi或者是gedit
vi /etc/docker/daemon.json
{
# 可以换成自己的阿里云镜像加速器
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
重启docker:systemctl restart docker
docker pull 镜像名称
docker rmi 镜像名称/镜像ID
docker rmi `docker images -q`
注意:
1)`` 中间做的字符可以被当做 linux 的 的命令
2)获取的所有镜像的 ID : `docker images -q`
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
容器的 ID | 创建容器时所使用的镜像 | 运行容器中的软件执行的命令 | 容器的创建时间 | 容器的状态: UP 表示运行状态 Exited 表示关闭状态 | 宿主机端口和容器中软件的端口的对应关系 | 容器的名称 |
docker ps
docker ps -a
docker ps -l
docker ps -f status=exited
docker create
# 创建并启动
docker run
参数名称 | 参数含义 |
-i | 运行容器。 |
-t | 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去,即分配一个伪终端。 |
-d | 在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行,这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器) |
--name | 为创建的容器命名 |
-v | 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上 |
-p | 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射 |
exit
docker exec -it container_name (container_id) /bin/bash
docker stop $CONTAINER_NAME/ID
docker start $CONTAINER_NAME/ID
docker rm 容器名称
docker rm `docker ps -a`
docker cp 1.txt 容器名:/home
docker cp 容器名:/home/2.txt /home
docker run -di -v /home/a:/home/ --name=容器名 --privileged=true centos:7
特点:当我们推出容器以后,容器就关闭了
docker run -it --name=容器名 镜像名 /bin/bash
{
docker run:创建命令
-it:运行容器,进入命令行
--name=mycentos1:给容器起名字
centos:镜像名称
/bin/bash:命令解析
}
特点:即使我们退出容器以后,容器还是处于运行状态,以后台的方式运行的
docker run -di --name=容器名称 镜像名
命令 | 说明 |
---|---|
systemctl start docker | docker启动 |
systemctl stop docker | docker关闭 |
systemctl status docker |
查看docker状态 |
systemctl restart docker | docker重启 |
docker -v | 查看docker版本 |
docker info | 查看docker的概要信息 |
docker -help | 查看docker的帮助文档 |
systemctl enable docker | 开机自启动docker |
命令 | 说明 |
---|---|
docker images | 列出镜像 |
docker search 镜像名称 | 搜索镜像 |
docker pull 镜像名称 | 拉取镜像 |
docker rmi 镜像名称/镜像ID | 删除指定的镜像 |
docker rmi `docker images -q` | 删除所有的镜像 |
命令 | 说明 |
---|---|
docker ps | 查看正在运行的容器 |
docker ps -a | 查看所有的容器(包含了正在运行的容器以及之前启动过的容器) |
docker ps -l | 查看最后一次运行的容器 |
docker ps -f status=exited | 查看停止的容器 |
docker create | 容器的创建 |
docker run | |
docker exec -it container_name (container_id) /bin/bash | 登录进入到容器 |
docker stop $CONTAINER_NAME/ID | 关闭容器 |
docker start $CONTAINER_NAME/ID | 启动已经关闭的容器 |
docker rm 容器名称 | 删除容器 |
docker rm `docker ps -a` | 删除所有容器 |
docker cp 1.txt 容器名:/home | 拷贝 |
docker cp 容器名:/home/2.txt /home | |
docker run -di -v /home/a:/home/ --name=容器名 --privileged=true centos:7 | 共享 |