Docker 镜像的使用
常用命令:
1.镜像的获取:
docker pull [name]:tag ,不指定 tag 时默认为镜像的latest版本。
如果时从非官方的仓库获取,则需要指定完成的仓库地址:
docker pull hub.c.163.com/public/ubuntu:11.04
有时候需要使用镜像代理服务来加速docker 镜像的获取,可以在docker 服务启动配置中增加: --registry-mirror=proxy_URL 来指定镜像代理服务地址
镜像的运行:
docker run -it [name]:tag bash
2. 镜像信息的查看:
docker images / docker image ls
images 子命令参数:
-a, --all=true | false,列出所有镜像文件,默认为否
-digests=true | false: 列出镜像的数字摘要值,默认为 否
-f, --filter=[],过滤列出的镜像
--format="TEMPLATE",控制输出格式, 如 .ID代表ID信息,.Repository代表仓库信息等。
--no-trunc=true| false,对输出结果中太长的部分是否镜像截断,默认为时。
-q,--quiet=true | false,仅输出ID信息,默认为 否。
使用tag命令添加镜像标签:
可以使用docker tag 命令为本地镜像任意添加新的标签,列如,给ubuntu添加一个新的标签: myubuntu:latest
docker tag ubuntu:latest myubuntu:latest
查看镜像的详细信息:
docker inspect [name]:tag
上边的命令返回一个JSON格式的消息,如果我们只要其中一项内容时,可以使用 -f来指定,例如获取镜像的 Architecture
docker inspect -f {{“.Architecture”}} [name]:tag
3.镜像的搜索
docker search [option] keyword
option: -f , --filter 过滤
--limit 限制输出结果
--no-trunc: 不截断输出结果
4.镜像的删除和清理
删除: docker image rm xxx / docker rmi xx
[option]: -f, -force: 强制删除
-no-prune: 不要清理未带标签的镜像
通常并不推荐使用 -f 来删除一个存在容器依赖的镜像,正确的做法是删除依赖该镜像的所有容器,再删除该镜像
删除容器: docker rm xxxx
清理: docker image prune
[option] : -a, -all: 删除所有无用的镜像,不广是临时镜像
-filter: 只清理符合指定过滤器的镜像
-f, -force: 强制删除镜像,不再镜像确认提示
5.镜像的创建
三种创建方式: 基于已有容器的创建 / 基于本地模板导入 / 基于 Dockerfile 创建
基于已有容器的创建:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-
-a :提交的镜像作者;
-
-c :使用Dockerfile指令来创建镜像;
-
-m :提交时的说明文字;
-
-p :在commit时,将容器暂停。
ex:
将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
runoob@runoob:~$ docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
runoob@runoob:~$ docker images mymysql:v1
REPOSITORY TAG IMAGE ID CREATED SIZE
mymysql v1 37af1236adef 15 seconds ago 329 MB
基于本地模板的导入:
从归档文件中创建镜像:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
OPTIONS说明:
-
-c :应用docker 指令创建镜像;
-
-m :提交时的说明文字;
ex:
从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4
runoob@runoob:~$ docker import my_ubuntu_v3.tar runoob/ubuntu:v4
sha256:63ce4a6d6bc3fabb95dbd6c561404a309b7bdfc4e21c1d59fe9fe4299cbfea39
runoob@runoob:~$ docker images runoob/ubuntu:v4
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob/ubuntu v4 63ce4a6d6bc3 20 seconds ago 142.1 MB
基于Dockerfile 的创建:
基于dockerfile 是常见的方式。dockerfile 是一个文本文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
-
--build-arg=[] :设置镜像创建时的变量;
-
--cpu-shares :设置 cpu 使用权重;
-
--cpu-period :限制 CPU CFS周期;
-
--cpu-quota :限制 CPU CFS配额;
-
--cpuset-cpus :指定使用的CPU id;
-
--cpuset-mems :指定使用的内存 id;
-
--disable-content-trust :忽略校验,默认开启;
-
-f :指定要使用的Dockerfile路径;
-
--force-rm :设置镜像过程中删除中间容器;
-
--isolation :使用容器隔离技术;
-
--label=[] :设置镜像使用的元数据;
-
-m :设置内存最大值;
-
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
-
--no-cache :创建镜像的过程不使用缓存;
-
--pull :尝试去更新镜像的新版本;
-
--quiet, -q :安静模式,成功后只输出镜像 ID;
-
--rm :设置镜像成功后删除中间容器;
-
--shm-size :设置/dev/shm的大小,默认值是64M;
-
--ulimit :Ulimit配置。
-
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
-
--network: 默认 default。在构建期间设置RUN指令的网络模式
6. 镜像的导入和导出
Docker save : 将指定镜像保存成 tar 归档文件。
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
-
-o :输出到的文件。
ex:
将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
runoob@runoob:~$ docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3 runoob@runoob:~$ ll my_ubuntu_v3.tar -rw------- 1 runoob runoob 142102016 Jul 11 01:37 my_ubuntu_v3.ta
Docker load : 导入使用 docker save 命令导出的镜像。
docker load [OPTIONS]
OPTIONS 说明:
-
--input , -i : 指定导入的文件,代替 STDIN。
-
--quiet , -q : 精简输出信息
ex:
导入镜像:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE $ docker load < busybox.tar.gz Loaded image: busybox:latest $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB $ docker load --input fedora.tar Loaded image: fedora:rawhide Loaded image: fedora:20 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB fedora rawhide 0d20aec6529d 7 weeks ago 387 MB fedora 20 58394af37342 7 weeks ago 385.5 MB fedora heisenbug 58394af37342 7 weeks ago 385.5 MB fedora latest 58394af37342 7 weeks ago 385.5 MB
7.上传镜像
Docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker push [OPTIONS] NAME[:TAG]
OPTIONS说明:
-
--disable-content-trust :忽略镜像的校验,默认开启
上传本地镜像myapache:v1到镜像仓库中。
docker push myapache:v1