搜索镜像
Usage: docker search [OPTIONS] TERM //搜索Docker Hub官方注册服务器中的镜像
ds@ds:~$ sudo docker search --filter=is-official=true nginx //从Docker Hub中查找nginx官方镜像,一个条件
ds@ds:~$ docker search --filter=is-official=true --filter=stars=100 httpd //stars=100(收藏数),多个条件组合
ds@ds:~$ docker search lamp
获取镜像
Usage: docker image pull [OPTIONS] NAME[:TAG|@DIGEST]
ds@ds:~$ sudo docker image pull ubuntu:18.04
上面拉取的镜像,没有指定注册服务器,默认为docker官方注册服务器-->hub.docker.com。因为不同的注册服务器中仓库存在重名的问题,故,拉取镜像时标准写法如下:
ds@ds:~$ sudo docker search --filter=is-official=true hub.docker.com/unbuntu:18.04
查看镜像信息
ds@ds:~$ docker image ls -a //列出镜像基本信息
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 93fd78260bd1 2 days ago 86.2MB
ds@ds:~$ docker image inspect ubuntu:18.04 //查看镜像详细信息,输出包括镜像id,仓库标签,架构等等信息。
(上述命令)返回的是JSON格式,故如果只需要知道其中某项可用-f,--format来指定,如:
ds@ds:~$ docker image inspect --format {{".Id"}} ubuntu:18.04
sha256:93fd78260bd1495afb484371928661f63e64be306b7ac48e2d13ce9422dfee26
删除和清理镜像
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] //删除一个或多个镜像,其中image可以为“镜像:标签”或镜像ID;另,注意区分“docker rm-”->删除容器
ds@ds:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu 18.04 93fd78260bd1 2 days ago 86.2MB
ds@ds:~$ docker rmi myubuntu:18.04
Untagged: myubuntu:18.04
ds@ds:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 2018-11-22 604d3f15f7a3 5 hours ago 389MB
ds@ds:~$ docker image rmi 604d3f15f7a3
Error response from daemon: conflict: unable to delete 604d3f15f7a3 (must be forced) - image is being used by stopped container e65a71a97a2d
ds@ds:~$ docker image rmi -f 604d3f15f7a3
Untagged: centos:2018-11-22
Deleted: sha256:604d3f15f7a312a2d7ed294201cffea5178e1a4165d891fad7a1e6b9e71dfc98
Docker使用一段时间后,系统中可能会遗留一些临时的镜像文件,以及一些没有被使用的镜像,可通过docker image prune来进行清理
ds@ds:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 93fd78260bd1 2 days ago 86.2MB
nginx latest e81eb098537d 5 days ago 109MB
centos latest 75835a67d134 6 weeks ago 200MB
ds@ds:~$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
ds@ds:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 93fd78260bd1 2 days ago 86.2MB
nginx latest e81eb098537d 5 days ago 109MB
centos latest 75835a67d134 6 weeks ago 200MB
创建镜像
1)基于已有容器创建
ds@docker:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 75835a67d134 6 weeks ago 200MB
ds@docker:~$ sudo docker container run -it centos //运行容器
[root@4f9f29db9760 /]# yum install -y vim //给原容器带来点变化
ds@docker:~$ sudo docker commit -a "Dysun_Liu" -m "Added vim" 9c mycentos:0.1 //使用commit基于现有容器创建镜像
sha256:bafd2de3415d18fccac8eed2b543f3f291ff0407bcc8ff73c2b479b57736a9cd //新镜像ID
ds@docker:~$ docker image ls //查看一下,确认新镜像的确存在
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 bafd2de3415d 2 minutes ago 355MB
centos latest 75835a67d134 6 weeks ago 200MB
ds@docker:~$ sudo docker container run -it mycentos:0.1
[root@813173c372ad /]# which vim
/usr/bin/vim
2)基于本地模板导入
使用OpenVZ提供的模板或者使用已导出的镜像模板。
3)基于Dockerfile创建
基于Debian:stretch-slim镜像构建一个Python3的环境:
ds@docker:/docker_file$ docker image ls //需要用到Debian,请自行下载
REPOSITORY TAG IMAGE ID CREATED SIZE
debian stretch-slim e9e49a465deb 6 days ago 55.3MB
ds@docker:/docker_file$ pwd
/docker_file
ds@docker:/docker_file$ cat dockerfile //编写dockerfile
FROM debian:stretch-slim
LABEL version='1.0' maintainer="Dysun Liu <Dysun_liu@163.com>"
RUN apt-get update && apt-get install -y python3 && apt-get clean && rm -fr /var/lib/apt/lists/*
ds@docker:/docker_file$ sudo docker image build -t python:3 . //docker...build注意别落了最后的“.”
... //耐心等待
Successfully built 8ef2d5214def
Successfully tagged python:3 //成功
ds@docker:/docker_file$ docker image ls //查看确认新镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3 8ef2d5214def 4 minutes ago 95.1MB
debian stretch-slim e9e49a465deb 6 days ago 55.3MB
ds@docker:/docker_file$ sudo docker container run -it python:3 //运行一下,试试能不能输出“Hello,World”
root@0c2009fd4dcf:/# python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello,world!')
Hello,world!
导出和导入镜像
上传镜像