Docker
简单梳理:
1.基本组成:镜像(images),容器(container),仓库(repository)
2.镜像:只读,可以用来创建容器,每个镜像有不同的tag(标签)。
3.容器:可以看作是一个简易的linux运行系统,容器创建后在image上增加一个可写层。
3.仓库:集中放镜像的场所,分为private(私有)和public(公开),最大的public repository 是Docker Hub,国内的是Docker pool,可以通过push把镜像上传到repository,等到使用时pull下来(类似于Github)。
详细介绍:
一·镜像:
1.拉取镜像:
sudo docker pull +镜像
此时是从官方的registry下载的,如果要从其他的仓库下载,需要制动完整的仓库注册服务器的地址
2.列出镜像
sudo docker images
可以看到来自于哪个仓库(repository),镜像的ID(是唯一的),镜像的标记TAG(版本),创建时间,镜像大小
(上述的latest是没有指定具体的标签,默认的信息)
3.修改镜像
i.先使用下载的镜像启动容器(先从dockerhub自行下载镜像training/sinatra)
sudo docker run -t -i training/sinatra /bin/bash
此时需要把镜像的id记下来
ii.修改镜像(看个人对镜像如何修改)
在这里我们是向镜像中添加两个json和gem两个应用
gem install json
结束后用exit来退出
iii.提交镜像
使用docker commit指令来提交更新的副本
sudo docker commit -m +提交的说明信息(added json gem)-a +指定更新的用户信息 +创建镜像的容器的ID +目标镜像的repository名和tag信息
创建成功后会返回这个镜像的信息
iv.查看镜像
4.利用Dockerfile创建镜像
上述提到的docker commit适合扩展一个镜像,不适合团队分享,这个时候我们可以使用docker build来创建一个新的镜像
i.创建目录和一个Dockerfile
``
mkdir sinatracd sinatra
touch Dockerfile
``
ii.编写镜像
Docker中的每一条指令都创造镜像的一层
Dockerfile的基本语法是
- 使用#来注释
- FROM告诉Docker以哪个镜像作为基础
- MAINTAINER是维护者的信息
- RUN开头的指令在创建中运行,(就是linux下的那些指令)
然后使用docker build指令
sudo docker build -t="+tag内容" +Dockerfile所在的路径(当前目录)
5.修改标签
sudo dockr tag +id +"tag的内容"
6.上传镜像
sudo docker push +镜像
7.从本地文件系统导入
使用openvz模板创建
8.存出镜像
导出镜像到本地
sudo docker save -o +文件.tar +镜像
9.载入镜像(将导入y信息)
sudo docker load --input +文件.tar
或者
sudo docker load < +文件.tar
10.移除镜像
i.先移除容器
sudo docker rm +容器
ii.再移除镜像
sudo docker rmi +images