Docker简介
docker通过内核虚拟化技术(namespace及cgroups等)来提供容器的资源隔离与安全保障等,由于docker通过操作系统层的虚拟化实现隔离,所以docker容器在运行时,不需要类似虚拟机额外的操作系统开销,提供资源利用率。
docker与VM的对比
Docker的优点
- 标准化应用发布
docker容器包含了运行环境和可执行程序,可以跨平台和主机使用 - 环境标准化
方便持续集成,提供从运维
到测试
再到开发
的统一运行环境 - 节约时间
快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级 - 节省开支
更高的物理机使用效率;虚拟机至少需要几个GB的磁盘空间,docker容器可以减少到MB级
Docker三个概念
容器 Container
镜像 Image
仓库 Repository
Docker架构
Docker常用命令
安装
更新源, 直接用源安装
centos用yum,ubuntu用apt
以centos7为例
1
2 yum install -y docker.io
systemctl enable docker.service
拉取镜像
Docker 镜像是用于创建 Docker 容器的模板
1 | docker pull nginx:latest |
查看镜像
1 | docker images |
构建镜像
首先编写Dockerfile文件,然后用docker build来构建镜像
首先我们先写一个非常简单的Dockerfile
1 | FROM ubuntu |
用docker build
来构建镜像
1 | docker build -t my_own_nginx:v1 . |
修改镜像标签
1 | docker tag my_own_nginx:v1 nginx:socv1 |
运行容器
1 | docker run -d \ |
查看容器
1 | docker ps 查看正在运行的容器 |
实时查看容器log
1 | docker logs -f container_id |
docker 容器和镜像的导入导出
保存镜像到tar
1 | docker save -o image.tar image_name |
从tar载入镜像
1
docker load < name.tar
从容器保存为镜像
1 | docker commit -a "wangshibo" -m "this is test" 651a8541a47d myubuntu:v1 |
从容器保存为tar
1 | docker export -o name.tar ce5ifh735hfk |
容器从tar到镜像
1 | docker import name.tar ubuntu:v5 |
实际上,既可以使用docker load 命令来导入镜像存储文件到本地镜像库,也可以用docker import命令来导入一个容器快照到本地镜像库
这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(仅保留容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大,此外,从容器快照文件导入时可以重启指定标签等元数据信息。