虚拟化技术
虚拟化的划分
- 应用虚拟化
平台虚拟化
- 完全虚拟化
- 硬件辅助虚拟化
- 部分虚拟化
- 准虚拟化
- 操作系统虚拟化 Docker的位置
帮助文档
docker [OPTIONS] --help
Docker核心
早期: Linux Containers
简称 LXC技术
0.9版本以后: libcontainer
libcontainer
安装流程
Ubuntu
卸载旧版本
旧版本的Docker称为docker
或者docker-engine
sudo apt-get remove docker \
docker-engine \
docker.io
Ubuntu 14.04 可选内核模块
sudo apt-get update
sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual
添加国内源
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
安装 Docker CE
sudo apt-get update
sudo apt-get install docker-ce
使用脚本安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
启动 Docker CE
sudo systemctl enable docker
sudo systemctl start docker
ubuntu 14.04
sudo service docekr start
建立docker用户组
sudo groupadd docker
# 将当前用户加入docker用户组
sudo usermod -aG docker $USER
测试安装
docker run hello-world
镜像篇
# 查看镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
# -a -all bool 列出所有镜像文件,包括临时 默认false
# --digests bool 列出所有镜像文件的数字标识 默认为false
# -f --filter list 过滤规则
# --format string 输出格式,类似Golang的template
# --no-trunc bool 不对输出结果太长的进行截断 默认为false
# -q --quiet bool 仅输出id 默认为false
# 拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 添加镜像标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 查看该镜像的详细信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
# 查看镜像的每个层
docker history [OPTIONS] IMAGE
# 搜索镜像
docker search [OPTIONS] TERM
# --no-trunc bool 不对输出结果太长的进行截断 默认为false
# --limit int 最大搜索结果长度
# 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 如果镜像有容器,可以使用-f强势删除,但不推荐
# 创建镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# -a --author string 作者
# -c --change list 提交时执行的指令
# -m --message string 提交信息
# -p --pause bool 提交时暂停容器运行
# 将容器导出到归档文件
docker export [OPTIONS] CONTAINER
# -o --output string 写入到文件
# 将归档容器导入为镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
# -c --change list 提交时执行的指令
# -m --message string 提交信息
# 存储镜像
docker save [OPTIONS] IMAGE [IMAGE...]
# -o --output string 写入到文件
# 加载镜像
docker load [OPTIONS]
# -i --input string 文件加载
镜像总结
最后,上一张思维导图来总结镜像篇的知识点
容器篇
启动容器的过程
- 检查本地是否有镜像
- 利用镜像创建容器,并启动该容器
- 分配一个文件系统给容器,并在只读的镜像层挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器
- 从网桥的地址池配置一个ip给容器
- 执行用户指定的应用程序
- 执行完毕后自动终止
# 创建容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 处于运行状态
# -d --detach 守护态运行
# 创建容器
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
# 处于暂停状态
# 查看容器
docker ps [OPTIONS]
# 停止容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
# -t --time int 等待数秒后停止 默认为10秒
# 启动容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
# 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# -v --volumes 删除volumes
# 在运行中的容器执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# -e --env list 配置环境
# -i --interactive 打开标准输入流
# -t --tty 分配伪终端
# -u --user string 用户名或者UID
# 绑定输入,输出和错误流
docker attach [OPTIONS] CONTAINER
# --detach-key string 退出attach模式快捷键
# --no-stdin 不绑定输入流
扩展: 使用nsenter进入容器
四种进入容器的方法
容器总结
最后,上一张思维导图来总结镜像篇的知识点