写在前面的话

之前谈了啥是 docker 和怎么安装 docker,这里就谈谈 docker 命令的使用,当然,这里的使用可能只是局限于 docker 的增删查改。

另外需要注意的是,为了图片的美观,接下来的截图有些图片可能是经过我处理过的,只保留了重要的内容,所有如果你发现和我的结果不一致,也不需要担心,是那个意思就行。

镜像命令

【1】万物起源于 Hello world,运行第一个容器:

docker run hello-world

输出如图:

这是一个类似于 demo 容器,docker 先会在本地查找对应的镜像,如果镜像存在,则直接运行,如果镜像不存在,则去 docker hub 上面下载镜像,然后再运行~

【2】搜索镜像:这里以 nginx 镜像为例

docker search nginx

输出如图:

我们可以看到,名字为顶层,没有用户名区隔的项目一般都是官方的,从后面的 OFFICIAL 也可看出来,第一个是 Nginx 官方的镜像,用户自己制作上传的镜像都是以 用户或者组织名称/项目名称 这样命名的~

当然,我们也可以去 docker hub 上面查看搜索有哪些镜像:

https://hub.docker.com/

搜索结果如图:

点进去可以在 TAGS 选项中查看需要的版本:

【3】下载镜像:我们这里以下载 CentOS 的镜像为例

docker pull centos

自动从 docker hub 上面去下载最新版本的 CentOS 镜像,当然,既然可以在 dcoker hub 上面看到这么多版本,就意味着可以选中其他版本,比如下载 nginx 的 1.14-alpine 版本:

docker pull nginx:1.14-alpine

只需加个冒号,在后面加版本名称即可:

从下载过程可以看出 docker 镜像的明显特征:镜像分层,然后复用,最大可能节省资源占用~

同时,在这里可以谈谈另外一个概念:在老版本的 docker 中,命令是没做区分的,比如下载镜像就是直接 docker pull,但新版本中,慢慢的这些都被规范了起来~

也希望大家跟着规范起来,通过 docker --help 查看,可以看到命令为了几类,其中很重要一类就是管理命令:

我们一开始需要记住的主要包括:image,container,network,volume

新的命令方式为:

docker image pull busybox

【4】查看镜像:

# 旧方法
docker images

# 新方法
docker image ls

结果如图:

donker 镜像都很小,CentOS 的镜像也才 202M。

【5】删除镜像:

# 旧方法
docker rmi nginx:1.14-alpine

# 新方法
docker image rm nginx:1.14-alpine

结果如图:

【6】查看镜像详细信息:

docker image inspect busybox

返回一个 json 数据,具体内容都在里面,感兴趣的可以看下。

【7】查看镜像占用的磁盘:

docker system df

结果如图:

容器命令

【1】查看现在运行的容器:

# 查看正在运行的容器
docker container ps

# 查看所有容器
docker container ps -a

# 另外一种查看方式
docker container ls

# 另一种查看所有容器
docker container ls -a

结果如图:

【2】带参数创建容器:

docker container create -it --name b1 busybox

--name:指定容器名称,这里以 busybox 镜像创建一个名为 b1 的容器。

-i:指的是交互式操作,--interactive 的简写。

-t:--tty 的缩写,代表打开一个终端。

效果如图:

返回一串随机生成的 ID,这个 ID 是容器的唯一标识,可以通过上面的命令可以查看该容器:

可以看到此时 b1 容器的状态是 create 状态,其中 CONTAINER ID 就是刚返回的 ID 的前部分。

由此可知:创建容器有两种方式,一是 docker run 创建,另一个就是 docker container create 创建。

另外,还有一些常见的参数:

--rm,指该容器停止以后自动删除。

--restart,重启规则,配置参数:

on-failure:容器停止时报错了则重启,但是重启 docker 不会重启。

unless-stopped:容器停止,如果没有报错就重启,重启 docker 一般会跟着重启。

always:无论如何至于停止就重启。

【3】启动,关闭,暂停,继续运行容器:

# 启动容器
docker container start b1

# 停止容器
docker container stop b1

# 暂停容器
docker container pause b1

# 继续运行
docker container unpause b1

如图所示:

注意,因为给容器命名了,所以可以直接通过容器名进行操作,只要能唯一标识这个容器就行。

【4】进入容器内部:

进入容器一般有两种方法,第一种:

docker container attach b1

结果如图:

值得注意的是,这种方法在退出容器的时候需要使用:按住 Ctrl,再按 p,再按 q

如果直接 exit 则会导致在退出容器以后,容器也停止退出。

第二种方法:

docker container exec -it b1 /bin/sh

这种方法可以直接 exit 退出容器,且保持继续运行。

当然,在创建容器的时候,也跟了参数 -it,这意味着在最后加上 /bin/sh 是可以在容器创建完成以后直接进入容器的:

docker run -it --name b2 busybox /bin/sh

结果如图:

但是这种方式有个问题,那就是我们以 /bin/sh 替代原本容器种运行的进程,那么在我们 exit 以后,就相当于退出了 sh 进程,这样导致的结果就是容器也跟着停止了。

为了便于管理,在每个容器之中一般只允许一个进程也就是业务进程运行。所以容器落实到最后更像一个服务在运行。

【5】删除容器:

# 旧方法
docker rm b2

# 新方法
docker container rm b2

直接 rm 就删除了,当然,一般 docker 命令后面如果不接 container 命令也能直接对容器进行操作,但如之前所说,一切都是为了规范。

【6】查看容器详情:

docker container inspect b1

其中有几个参数很重要,包括 IP 地址,数据保留在宿主机中的位置等等。

【7】查看容器的日志:

docker container logs b1

【8】 批量操作容器:这里就不具体演示了,大家知道就行,格式就这样

# 删除所有容器
docker container rm $(docker container ls -aq)

# 删除所有 redis 镜像
docker image rm $(docker image ls -aq redis)

# 删除所有在 mongo:3.2 之前的镜像
docker image rm $(docker image ls -aq -f before=mongo:3.2)

小结

以上是目前得记住的基础命令,至于其他命令,会在后面的章节进行单独的讲解,那时候将会是更深层次的应用,如果你觉得还不错,可以先点 推荐 试试~

【03】循序渐进学 docker:基础命令的更多相关文章

  1. 1. Docker基础命令

    本文简要介绍Docker的基础命令,目的在于快速入门Dokcer,Docker的完整命令可以参考Docker官方手册. 0. 安装Docker Docker当前分为企业版(Docker Enterpr ...

  2. Docker - Docker基础命令及使用

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...

  3. docker基础命令和操作

    前言 之前在部署个人网站的时候,需要打包maven,在生产环境,需要使用到docker去做服务器和端口的守护. 于是在查阅了相关资料,学习了docker一些基本命令行操作,包括对镜像的查看,修改和添加 ...

  4. docker基础命令,常用操作

    docker基础命令 使用docker镜像 获取镜像 从docker registry获取镜像的命令是docker pull.命令格式是: docker pull [选项][docker regist ...

  5. 【09】循序渐进学 docker:docker swarm

    写在前面的话 至此,docker 的基础知识已经了解的差不多了,接下来就来谈谈对于 docker 容器,我们如何来管理它. docker swarm 在学习 docker swarm 之前,得先知道容 ...

  6. docker基础命令详解

    Commands: attach    Attach to a running container build     Build an image from a Dockerfile commit  ...

  7. Docker基础命令和时区问题

    Docker 命令 1. 安装Docker # ubuntu系统安装 $ sudo apt install docker-ce # 启动docker $ sudo systemctl start do ...

  8. 【01】循序渐进学 docker:到底是啥

    写在前面的话 首先说一下,我本身是做运维的,4 年工作,多家公司.所以可能接下来谈到的更多的是一些在工作过程中积累的个人看法.且有些并不具备普遍性,有不合适的地方,全当我在吹牛逼就行. 一开始我们得谈 ...

  9. 【04】循序渐进学 docker:Dockerfile

    写在前面的话 从前面我们简单的了解了镜像,也运行了容器,各种官方的镜像显然无法满足我们自己的需求,我们目的终究是运行自己的业务. 所以,本章节的 Dockerfile 就主要讲怎么在官方镜像的基础上制 ...

随机推荐

  1. 1074 Reversing Linked List

    题意: 每k个元素反转链表,不足k个就不反转.如原链表为1→2→3→4→5→6,k=3,则反转后的链表为3→2→1→6→5→4:若k=4,则反转后的链表为4→3→2→1→5→6. 思路: 这题会比较烦 ...

  2. AJAX流程 代码

    var xml =      window.XMLHttpRequest ?new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHT ...

  3. python's twenty-second day for me 封装,property方法

    面对对象的三大特性:继承,多态,封装. 函数和属性装到了一个非全局的命名空间----封装. 封装: 在类中,静态属性,方法,对象属性都可以变成私有的,只需要在这些名字前加上‘__’(双下划线). 在类 ...

  4. java成神之——数值操作BigDecimal,BigInteger,Random,SecureRandom

    数值操作 数值新特性 包装类 浮点 BigDecimal BigInteger 数值本地化 随机数 假随机数 真随机数 播种 结语 数值操作 数值新特性 123_456 等价于 123456,增加可读 ...

  5. Centos7下快速安装Mongo3.2

    Centos7下快速安装Mongo3.2 一般安装Mongo推荐源码安装,有时候为了快部署测试环境,或者仅仅是想装个mongo shell,这时候yum安装是最合适的方式, 下面介绍一下如何在Cent ...

  6. wordpress 基础文件

    需要用到的PHP基础文件有: 404.php 404模板  rtl.css  如果网站的阅读方向是自右向左的,会被自动包含进来 comments.php  评论模板 single.php 文章模板.显 ...

  7. deeplearning.ai 旁听如何做课后编程作业

    在上吴恩达老师的深度学习课程,在coursera上. 我觉得课程绝对值的49刀,但是确实没有额外的钱来上课.而且课程提供了旁听和助学金. 之前在coursera上算法和机器学习都是直接旁听的,这些课旁 ...

  8. Neo4j的集群架构

    Neo4j的集群架构 参考资料: 1.http://lib.csdn.net/article/mysql/5742,其中有集群的集中模式master-slave.sharding.多主模式.cassa ...

  9. 当一个SQL语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序

    当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序 1.执行where xx对全表数据做筛选,返回第1个结果集. 2.针对第1个结果集使用g ...

  10. 面试题:HTTP必知必会——常见面试题总结 背1

    1.常用的HTTP方法有哪些?GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST ...