前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker学习笔记(2)

Docker学习笔记(2)

作者头像
天钧
发布2019-09-03 18:51:33
4370
发布2019-09-03 18:51:33
举报
文章被收录于专栏:渗透云笔记渗透云笔记

文章共3780字18图

预计阅读时间11分钟

前言

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

镜像仓库相关命令

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

代码语言:javascript
复制
docker login [OPTIONS] [SERVER]

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

示例:

代码语言:javascript
复制
docker login -u username -p password

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

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

代码语言:javascript
复制
docker logout

logout

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

代码语言:javascript
复制
docker search [OPTIONS] images

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

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

代码语言:javascript
复制
docker search -s 10 nginx

search

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

代码语言:javascript
复制
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

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

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

代码语言:javascript
复制
docker pull nginx

pull

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

代码语言:javascript
复制
docker push [OPTIONS] NAME[:TAG]

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

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

代码语言:javascript
复制
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

一个完整的push示例:

代码语言:javascript
复制
[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文件如何定制化,后续会写一篇文专门讲。

代码语言:javascript
复制
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”,注意后面的”.”千万不能丢。

代码语言:javascript
复制
[root@localhost docker-for-web]# docker build -t ctf-sqli:1 .

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

代码语言:javascript
复制
docker images [OPTIONS] [REPOSITORY[:TAG]]

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

示例:

代码语言:javascript
复制
[root@localhost ~]# docker images -a

images

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

代码语言:javascript
复制
docker rmi [OPTIONS] IMAGE [IMAGE...]

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

示例 删除ubuntu:16.04镜像:

代码语言:javascript
复制
[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归档文件

代码语言:javascript
复制
docker save [OPTIONS] IMAGE [IMAGE...]

-o :输出到的文件

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

代码语言:javascript
复制
[root@localhost ~]# docker save -o nginx.tar nginx:latest
[root@localhost ~]# ls
nginx.tar

save

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

代码语言:javascript
复制
docker load [OPTIONS]

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

示例 导入nginx:latest镜像:

代码语言:javascript
复制
[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命令可以将这些修改保存起来,使其不会因为容器的停止而丢失

代码语言:javascript
复制
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

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

示例:

代码语言:javascript
复制
[root@localhost ~]# docker commit -a "Linuz" 66d682605023 ubuntu:linuz
sha256:5e0162d1e4e9d04a37c3c10b052d435555f3961e029735ed07c96d66c6a6e608

commit

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 镜像仓库相关命令
  • 镜像管理相关命令
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档