Docker学习笔记(2)

文章共3780字18图

预计阅读时间11分钟

前言

如何安装Docker?请参考上一篇文章(传送门) Docker环境信息、容器生命周期管理部分命令参考上一篇文章(传送门) 总结到了一张脑图上,可以做个参考,查看高清版请点我

镜像仓库相关命令

1.docker login 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker login [OPTIONS] [SERVER]

-u :登陆的用户名
-p :登陆的密码

示例:

docker login -u username -p password

你也可以这样直接docker login,然后会让你输入用户名和密码,验证成功就登录了。

2.docker logout 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub 示例:

docker logout

logout

3.docker search 从Docker Hub上查找指定的镜像

docker search [OPTIONS] images

--automated :只列出 automated build类型的镜像
--no-trunc :显示完整的镜像描述
-s :列出收藏数不小于指定值的镜像

示例 从Docker Hub查找所有镜像名包含nginx的,并且收藏数大于10的镜像:

docker search -s 10 nginx

search

4.docker pull 从镜像仓库中拉取或者更新指定镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

-a:拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启

示例 从Docker Hub拉取nginx最新版镜像:

docker pull nginx

pull

5.docker push 将本地的镜像上传到镜像仓库,首先要登录到镜像仓库,还要登录到Docker Hub创建对应名称的仓库,然后用tag命令给镜像打标签,只有打上标签才可以上传成功。(详细介绍)

docker push [OPTIONS] NAME[:TAG]

--disable-content-trust :忽略镜像的校验,默认开启

6.docker tag 标记本地镜像,将其归入某一仓库

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

一个完整的push示例:

[root@localhost ~]# docker tag nginx:latest area39/nginx:v1
[root@localhost ~]# docker push area39/nginx:v1
The push refers to repository [docker.io/area39/nginx]
589561a3ffb4: Pushed
ef7dbb0cfc81: Pushed
d56055da3352: Pushed
v1: digest: sha256:f83b2ffd963ac911f9e638184c8d580cc1f3139d5c8c33c87c3fb90aebdebf76 size: 948

镜像管理相关命令

1.docker build 用于使用Dockerfile文件创建镜像,是一个比较常用和重要的命令,关于Dockerfile文件如何定制化,后续会写一篇文专门讲。

docker build [OPTIONS] PATH | URL | -

--build-arg=[] :设置镜像创建时的变量;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--tag, -t: 镜像的名字及标签,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式

使用当前目录的Dockerfile创建镜像,标签为”ctf-sqli:1”,注意后面的”.”千万不能丢。

[root@localhost docker-for-web]# docker build -t ctf-sqli:1 .

2.docker images 通过docker images命令可以列出主机上的镜像,默认只列出最顶层的镜像,可以使用-a选项显示出所有镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
--digests :显示镜像的摘要信息
-f :显示满足条件的镜像
--format :指定返回值的模板文件
--no-trunc :显示完整的镜像信息

示例:

[root@localhost ~]# docker images -a

images

3.docker rmi docker rmi命令用于删除镜像,删除镜像时,如果已有基于该镜像启动的容器存在,则无法直接删除,需要先用rm命令删除容器。这两个子命令都提供 -f 选项,可强制删除存在容器的镜像或启动中的容器。

docker rmi [OPTIONS] IMAGE [IMAGE...]

-f:强制删除
--no-prune:不移除该镜像的过程镜像,默认移除

示例 删除ubuntu:16.04镜像:

[root@localhost ~]# docker rmi ubuntu:16.04
Untagged: ubuntu:16.04
Untagged: ubuntu@sha256:58d0da8bc2f434983c6ca4713b08be00ff5586eb5cdff47bcde4b2e88fd40f88
Deleted: sha256:9361ce633ff193349d54bed380a5afe86043b09fd6ea8da7549dbbedfc2a7077
Deleted: sha256:59a6856f439d187f3ce3381d0a6b0816db99cc3d8468bcf8c9d1c39d2071dcff
Deleted: sha256:82997a16a0d57ac7d8b416c0d83f5841193b6a56a7844b486ab6324730867fe0
Deleted: sha256:5c6983f277f26021b5e38501fdf06fa29f7158a93641f3f10aedbdc9869121d0
Deleted: sha256:aa54c2bc12290df2851a94b8834cae75e4627219d2b423d4d3db8b0a497e79a2

rmi

4.docker save 将指定镜像保存成tar归档文件

docker save [OPTIONS] IMAGE [IMAGE...]

-o :输出到的文件

示例 将nginx:latest镜像归档为tar文件:

[root@localhost ~]# docker save -o nginx.tar nginx:latest
[root@localhost ~]# ls
nginx.tar

save

5.docker load 导入使用docker save命令导出的镜像

docker load [OPTIONS]

-i :指定导出的文件
-q :精简输出信息

示例 导入nginx:latest镜像:

[root@localhost ~]# docker load -i nginx.tar
Loaded image: nginx:latest
[root@localhost ~]# docker images nginx:latest
REPOSITORYTAG IMAGE IDCREATED SIZE
nginx latest98ebf73aba753 days ago109MB

load

6.docker commit docker commit命令可以将一个容器固化为一个新的镜像。当需要制定特定的镜像时,会进行修改容器的配置,比如在容器中安装一些特定的工具等,通过commit命令可以将这些修改保存起来,使其不会因为容器的停止而丢失

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停

示例:

[root@localhost ~]# docker commit -a "Linuz" 66d682605023 ubuntu:linuz
sha256:5e0162d1e4e9d04a37c3c10b052d435555f3961e029735ed07c96d66c6a6e608

commit

原文发布于微信公众号 - 渗透云笔记(shentouyun)

原文发表时间:2019-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券