目录
一、docker概述
Docker,翻译过来就是码头工人
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。
小知识:沙盒也叫沙箱(sandbox)。在计算机领域指一种虚拟技术,而且多用于计算机安全技术。安全软件可以让它在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。
Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。
GitHub地址:https://github.com/moby/moby
小知识:LXC为Linux Container的简写。Linux Container 容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。
LXC主要通过Kernel的namespace实现每个用户实例之间的项目隔离,通过cgroup实现对资源的配额和调度。
docker官网:https://www.docker.com
docker中文库:https://www.docker.org.cn/
---------------------------------------------------------------------------------------------------------------------------------
二、容器的优点,区别,核心
●灵活:即使是最复杂的应用也可以集装箱化。
●轻量级:容器利用并共享主机内核。
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。
区别
docker | 虚拟机 |
共享宿主机内核 | 有独立的内核 |
通过namespace实现资源隔离 | 每个虚拟机完全隔离 |
通过cgroup实现资源最大使用率 | 有独立的资源硬件 |
启动速度快 秒级 | 启动速度慢 分级别 |
容器相当于宿主机的进程 性能几乎么有损耗 | 需要通过hypervisor虚拟 有损耗 |
一个宿主机可以启动成千上百容器 | 最多几十台虚拟机 |
六大namespace
mnt | 隔离文件系统 |
net | 隔离网络 |
pid | 隔离进程号 |
ipc | 隔离进程之间的通信 |
uts | 隔离主机名 |
user | 隔离用户名 |
docker三大核心
镜像:创建容器的基础,是一个只读模板
容器:用镜像运行的实例,可被创建,启动,停止,删除 每个容器之间相互隔离
仓库:用来集中存储镜像的地方,有共有仓和私有仓库
三、安装步骤
先安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 默认已经安装好了 保险起见再安装一下
然后设置下载镜像源 用阿里云的
阿里云镜像源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
然后下载docker
yum install -y docker-ce docker-ce-cli containerd.io
然后启动docker
systemctl start docker.service
systemctl enable docker.service
查看版本
四、镜像操作命令
#搜索镜像
docker search 镜像名
例子:docker search nginx
#获取镜像
docker pull 镜像名字
#查看镜像下载信息
docker images
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
此时我还没有下载镜像 所以里面没有
#为本地的镜像添加新的标签
docker tag 名称:[标签] 新名称:[新标签]
例子:docker tag nginx:latest nginx:web
#删除镜像
docker rmi 镜像ID 会彻底删除该镜像
#保存镜像到本地文件
docker save -0 存储文件名 存储的镜像
例子:docker save -o nginx nginx:latest #存出镜像命名为nginx存在当前目录下
#载入镜像:将镜像文件导入到镜像库中
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件
---------------------------------------------------------------------------------------------------------------------------------
五、容器的操作命令
#创建容器
docker create -it 镜像:版本号 /bash 或者 /sh
例子:docker create -it nginx:latest /bin/bash
#查看容器运行状态
docker ps -a #-a 选项可以显示所有的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b0a7be0ff58 nginx:latest "/docker-entrypoint.…" 57 seconds ago Created inspiring_swanson
容器的ID号 加载的镜像 运行的程序 创建时间 当前的状态 端口映射 名称
#启动容器
docker start 容器名/容器id
#终止容器
docker stop 容器名/容器id 优雅的停止 默认10秒后停止
docker kill 容器名/容器id 强制停止
#删除容器
docker rm 容器名 / 容器id
-f 代表强制删除