Whoosy's Blog

藏巧于拙 用晦而明 寓清于浊 以屈为伸

0%

docker简介与常用命令

Docker简介

docker通过内核虚拟化技术(namespace及cgroups等)来提供容器的资源隔离与安全保障等,由于docker通过操作系统层的虚拟化实现隔离,所以docker容器在运行时,不需要类似虚拟机额外的操作系统开销,提供资源利用率。

docker与VM的对比

cas diagram

cas diagram

Docker的优点

  • 标准化应用发布
    docker容器包含了运行环境和可执行程序,可以跨平台和主机使用
  • 环境标准化
    方便持续集成,提供从运维测试再到开发的统一运行环境
  • 节约时间
    快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级
  • 节省开支
    更高的物理机使用效率;虚拟机至少需要几个GB的磁盘空间,docker容器可以减少到MB级

Docker三个概念

容器 Container
镜像 Image
仓库 Repository

Docker架构

cas diagram

Docker常用命令

安装

更新源, 直接用源安装
centos用yum,ubuntu用apt

以centos7为例

1
2
 yum install -y docker.io
systemctl enable docker.service

拉取镜像

Docker 镜像是用于创建 Docker 容器的模板

1
2
3
docker pull nginx:latest

docker pull myregistry.local:5000/testing/test-image:beta1

查看镜像

1
docker images

构建镜像

首先编写Dockerfile文件,然后用docker build来构建镜像
首先我们先写一个非常简单的Dockerfile

1
2
3
4
FROM ubuntu
MAINTAINER my6889@163.com
RUN apt-get update && apt-get install -y nginx
EXPOSE 80

Dockerfile命令详解(超全版本)

docker build来构建镜像

1
docker build -t my_own_nginx:v1 .

修改镜像标签

1
docker tag my_own_nginx:v1 nginx:socv1

运行容器

1
2
3
4
5
6
docker run -d \
--name nginx_container \
-p 80:80 \
-v /data:/data \
--restart=always \
nginx

docker run 命令详解

查看容器

1
2
docker ps             查看正在运行的容器
docker ps -a           查看所有容器

实时查看容器log

1
docker logs -f container_id

docker 容器和镜像的导入导出

cas diagram

保存镜像到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命令来导入一个容器快照到本地镜像库
这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(仅保留容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大,此外,从容器快照文件导入时可以重启指定标签等元数据信息。