Docker 学习记录(基础命令)

1. 获取镜像

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]  ===>   docker pull ubuntu:16:04

2.运行

docker run -it --rm ubuntu:16.04 bash   

  一个是 -i :交互式操作,一个是 -t 终端

  --rm :这个参数是说容器退出后随之将其删除。

  ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。

  bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash

3.列出镜像:

  docker image ls

4.镜像体积

  docker system df

5.删除虚悬镜像

  docker image prune

6.列出部分镜像

  docker image ls ubuntu

  docker image ls ubuntu:16.04

  还支持强大的过滤器参数 --filter ,或者简写 -f 。 docker image ls -f since=mongo:3.2 (since 是在之后建立的镜像,before是在之前建立的镜像)

  docker image ls -q 把所有镜像的ID列出来

  docker image ls --format "{{.ID}}: {{.Repository}}"  ==>定义输出模板

  ==> 5f515359c7f8: redis

  ==> 05a60462f8ba: nginx

  ==> fe9198c04d62: mongo

  docker image ls --digests 镜像摘要

7.删除本地镜像

  docker image rm 

8.删除容器

  docker rm

9.CentOS/RHEL 的用户需要注意的事项

  在 Ubuntu/Debian 上有 UnionFS 可以使用,如 aufs 或者 overlay2 ,而 CentOS 和 RHEL 的内核中没有相关驱动。因此对于这类系统,一般使用 devicemapper 驱动利用 LVM 的一些 机制来模拟分层存储。这样的做法除了性能比较差外,稳定性一般也不好,而且配置相对复 杂。Docker 安装在 CentOS/RHEL 上后,会默认选择 devicemapper ,但是为了简化配置, 其 devicemapper 是跑在一个稀疏文件模拟的块设备上,也被称为 loop-lvm 。这样的选择是 因为不需要额外配置就可以运行 Docker,这是自动配置唯一能做到的事情。但是 loop-lvm 的做法非常不好,其稳定性、性能更差,无论是日志还是 docker info 中都会看到警告信 息。官方文档有明确的文章讲解了如何配置块设备给 devicemapper 驱动做存储层的做法,这 类做法也被称为配置 direct-lvm 。 除了前面说到的问题外, devicemapper + loop-lvm 还有一个缺陷,因为它是稀疏文件,所 以它会不断增长。用户在使用过程中会注意到 /var/lib/docker/devicemapper/devicemapper/data 不断增长,而且无法控制。很多人会希望删 除镜像或者可以解决这个问题,结果发现效果并不明显。原因就是这个稀疏文件的空间释放 后基本不进行垃圾回收的问题。因此往往会出现即使删除了文件内容,空间却无法回收,随 着使用这个稀疏文件一直在不断增长。

  所以对于 CentOS/RHEL 的用户来说,在没有办法使用 UnionFS 的情况下,一定要配置 direct-lvm 给 devicemapper ,无论是为了性能、稳定性还是空间利用率。
  或许有人注意到了 CentOS 7 中存在被 backports 回来的 overlay 驱动,不过 CentOS 里的 这个驱动达不到生产环境使用的稳定程度,所以不推荐使用

10.commit 理解镜像构成 但不要使用docker commit 定制镜像 

  docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

$ docker commit --author "Tao Wang <[email protected]>" --message "修改了默认网页" webserver nginx:v2 
 sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa1795214

11.docker history 查看某个镜像的历史记录

12.docker diff 查看容器存储层的具体改动(存储层中的数据随容器删除而删除,不会被保存下来)

13 docker exec 进入容器,修改内容

14.Dockerfile定制镜像

猜你喜欢

转载自blog.csdn.net/Dolphinsz/article/details/81437469