创建仓库:
docker run -d -p 5000:5000 -v /root/registry:/data/docker registry:2
将仓库存放于容器内的/data/docker目录下,如果容器被删除,镜像也会丢失,指定本地一个目录/root/registry挂载到容器内的/tmp/registry下.
registry:2 起一个镜像名
-d 后台执行
-p -P 指定容器暴露的端口。
-v 给容器挂载存储卷,挂载到容器的某个目录
制作镜像:
docker commit 449d0022bafa 172.17.0.3:5000/linuxws
docker run -i -d -p 1880:80 -p 13306:3306 -p 122:22 -p 123:23 -p 69:69/udp -p 514:514/tcp -v /Users/apple/znms/03_code/trunk/z-nms:/var/www/html/z-nms -e "REMOTE_HOST=调试ip地址" --restart=always znms:v1
docker images : 列出本地镜像。
格式:docker images [OPTIONS] [REPOSITORY[:TAG]]
-a : 列出本地所有镜像
--digests: 显示镜像的摘要。显示DIGEST
-f : 显示满足条件的镜像
--no-trunc: 显示IMAGE ID
-q: 只显示镜像ID
docker rmi : 删除本地一个或多个镜像。 #格式:docker rmi [OPTIONS] IMAGE [IMAGE...]
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
docker tag : 标记本地镜像,将其归入某一仓库。
格式:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
commit --通过容器创建本地镜像 生成镜像的命名:docker commit centos_v1 centos:v1
#docker push victor/centos:v1,其中ivictor是用户名;v1是tag,可不写,默认是latest
因为它push到docker hub中时,推送到相应用户下,必须指定用户名。
将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。
docker tag ubuntu:15.10 runoob/ubuntu:v3
root@runoob:~# docker images runoob/ubuntu:v3
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob/ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB
虚悬镜像:
镜像列表中,有一个特殊的镜像,这个镜像没有仓库名,没有标签,均为 <none> :
<none> <none> 00285df0df87 5 days ago 342 MB
官方发布了新版本后,新旧镜像同名,从而出现仓库名、标签均为 <none> 的镜像。docker build 也会导致这种现象。
显示这类镜像:
docker images -f dangling=true
虚悬镜像没有用处,可以删除:$ docker rmi $(docker images -q -f dangling=true)
中间层镜像
$ docker images -a #显示包括中间层镜像和顶级镜像。
这样会看到很多无标签的镜像,与虚悬镜像不同,这些镜像都是其它镜像所依赖的镜像。这些无标签镜像不应该删除,否则会导致上层镜像因为依赖丢失而出错。实际上,这些镜像也没必要删除,因为相同的层只会存一遍,而这些镜像是别的镜像的依赖,因此并不会因为它们被列出来而多存了一份。只要删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除。
制作镜像:
sudo docker commit -m='A new image' --author='Aomine' 614122c0aabb aoct/apache2
用-m
指定行创建的镜像的提交信息。--author
指定镜像作者,接着是容器ID、目标镜像仓库、镜像名。
2、保存镜像
我们的镜像做好之后,我们要保存起来,以供备份使用,该怎么做?使用docker save命令,保存镜像到本地。
[root@rocketmq-nameserver4 dev]# docker save -o rocketmq.tar rocketmq ##-o:指定保存的镜像的名字;rocketmq.tar:保存到本地的镜像名称;rocketmq:镜像名字,通过"docker images"查看 [root@rocketmq-nameserver4 dev]# ll
rocketmq.tar为刚保存的镜像
3、载入镜像
我们有了本地的镜像文件,在需要的时候可以使用docker load将本地保存的镜像再次导入docker中。
docker load --input rocketmq.tar 或 docker load < rocketmq.tar
4、删除镜像
有些镜像过时了,我们需要删除。使用如下的命令:docker rmi -f image_id ##-f:表示强制删除镜像;image_id:镜像id