一、核心知识
1、 组件
docker客户端:docker command/RESTful API即docker客户端命令行及restful API;
docker daemon:docker服务引擎;
结论:docker是典型的C/S架构,包含客户端及服务端;
2、概念
1)docker容器:运行环境,软件界的集装箱;
2)docker镜像:没有运行起来的“运行环境”,轻量化、分层是它的特征;
3)docker容器和镜像之间的关系及转化:
从面向对象的角度来类比,镜像相当于是class,容器相当于对象实例;
镜像发生变化后,重启利用该镜像生成的容器或重新根据该镜像生成容器,镜像变化会在容器上体现;
在容器中进行一系列操作后,如需记录该容器状态,则需要停止容器,手动commit,将该容器打成镜像,从这个角度来讲,镜像相当于是容器操作的一个快照;
4)Registry:镜像仓库,存放镜像的仓库;docker的默认仓库为Docker Hub,也可搭建自己的镜像私库【需要注意的是docker search命令目前不支持搜索私库中的镜像】;
5)Registry mirror: 仓库镜像或称仓库加速器 类似maven中的mirror概念;
6)DockerFile:由DockerFile生成镜像是生成镜像的一种方式,也是推荐方式.Dockerfile包含一批指令,且内容必须以FROM指令开头;
7)Swarm:用于集群模式下docker节点管理。
附:镜像(Image)构成
有些场合将Namespcae和Repository合称为Repository,即Namespace是Repository的修饰,即namespace作为Repository的一部分。
二、基础实战
1、利用dockerfile制作镜像
https://www.cnblogs.com/jie-fang/p/7927643.html
2、docker常用操作
操作 | 命令 | 备注 |
查看docker版本 | docker --version | |
查看本地镜像 | docker images | 目前docker只支持列举本地镜像 |
通过dockerfile打镜像 | docker build -f Dockerfile.test -t imagename:tag . | 后边的.是必须的 |
运行带命令 | docker run -it imagename:tag /bin/bash | |
删除容器 | docker rm containerId | |
删除镜像 | docker rmi imagename:tag | 删除镜像前要删掉该镜像生成的容器 |
上传镜像到仓库 | docker push taggedImage | |
查看正在运行的容器 | docker ps | |
模糊匹配,正则匹配镜像 | docker images name_* | |
标记镜像(重命令镜像) | docker tag oldimage newImageName docker tag oldimageId newImageName | 一般在push前需要对镜像进行此操作 |
登录镜像仓库 | docker login | |
将镜像保存为tar | docker save -o xx.tar imagename | |
加载tar格式的镜像 | docker load -i imagename.tar | |
将容器某状态抽象成镜像 | docker commit | 保存历史 |
导出容器 | docker export -o nginx-test.tar nginx-test | 不带历史 |
导入容器 | docker import nginx-test.tar nginx:imp |
其他:https://www.cnblogs.com/edisonxiang/p/6068212.html
3、官方API
https://docs.docker.com/