类似于数据库,有增删改查,docker镜像也有这些操作。
镜像获取
1 | docker pull ubuntu |
这个命令可以把镜像从仓库中下载下来,那仓库的地址又是哪个呢?
默认地址是Docker Hub仓库,如果有需要修改仓库地址的需求,可以在/etc/docker/下面新建daemon.json文件,其内容变更如下:
1 | { |
Note:网址仅是示例。
上述pull命令拉下来的镜像默认是latest标签的镜像,如果想下载其他标签,例如14.04的镜像,可以使用以下命令:
1 | docker pull ubuntu:14.04 |
镜像查看
docker images可以查看本地所有的镜像。
以下是输出:
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
IMAGE ID唯一标识了镜像,TAG是标签,其他字段含义均符合字段名含义。这里有2个镜像的IMAGE ID是一样的,这是因为我刚刚通过命令为其中一个镜像打上了标签。打上标签,看着是2个镜像,其实底层是一个镜像。删除的时候,也仅仅是删除tag而已。直到该镜像的最后一个tag删除时,该镜像才会被删除。
镜像删除
2种删除方式。
根据tag删除。
1 | docker rmi xxxxxx |
其中xxxxx可以为标签或者ID。
根据ID删除
使用docker rmi删除镜像时,会先尝试删除该镜像的所有标签,然后删除该镜像。NOTE:当有基于该镜像创建的容器存在时,该镜像是无法被删除的,无论该容器是什么状态。
删除容器的命令:
1 | docker rm xxxxx |
其中xxxx是容器的id。
创建容器
基于已有镜像的容器创建
1 | docker run -it ubuntu:latest /bin/bash |
查看容器id
1 | docker ps -a |
找到id,这里为9xx937d9adf,然后根据这个容器创建一个新的镜像。
1 | docker commit -m "create a new image " -a "volcanno" 9xx937d9adf test |
现在就已经创建出来一个新的镜像,docker images查看:
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
可以看到test仓库有了一个新镜像。
根据模板创建镜像
根据模板创建镜像,指的是根据操作系统模板文件在本地仓库导入一个镜像:
1 | cat ubuntu-14.04-x86_64-minimal.tar.gz|docker import - ubuntu:14.04 |
镜像存入存出
存入存出指的是可以将镜像从本地文件的形式导入本地镜像库,或者从本地镜像库导出为本地文件,这样可以文件的形式进行迁移。
镜像导出
1 | docker save -o ubuntu_14.04.tar ubuntu:latest |
上面命令的含义是将本地镜像库中ubuntu:latest导出到本地,本地名字为ubuntu_14.04.tar。
镜像导入
1 | docker load < ubuntu_14.04.tar |
镜像上传
从本地仓库上传到DockerHub官方仓库。
1 | docker push ubuntu:latest |