写在前面的话

之前谈了啥是 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. PHP - Swoole websocket理解

    php swoole实现websocket功能 1.确保安装了swoole扩展. 2.撰写服务程序 <?php //创建websocket服务器对象,监听0.0.0.0:9502端口 $ws = ...

  2. resharper activate

    K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZWVOYW1lIjoibnNzIDEwMDEiLCJhc3NpZ25lZU5hbWUiO ...

  3. 关系数据库SQL复习

    1.1 SQL的概述 SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言 SQL是一个通用的.功能极强的关系数据库语言 1.2 SQL的特点 1. 综合 ...

  4. Windows修改MySQL用户root密码

    MySQL是一个关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软 ...

  5. leetcode696

    本题先寻找字符串中0变1,或者1变0的位置作为分隔位置.然后从这个分隔位置同时向左.右两侧搜索. 找到的左连续串和右连续串,都进行累计. public class Solution { public ...

  6. ffmpeg设置avformat_open_input( )超时 -stimeout

    ffmpeg用avformat_open_input()解析网络流时,默认是阻塞的. 当遇到解析错误的网络流时,会导致该函数长时间不返回. 为此可以设置ffmpeg的-stimeout 的参数,要注意 ...

  7. 音频AAC编码浅析

    /* * unsigned long nSampleRate, // 采样率,单位是bps * unsigned long nChannels, // 声道,1为单声道,2为双声道 * unsigne ...

  8. phpmailer邮件类

    <?php/** * 邮件类 * Enter description here ... * @author df * Mail::getMail()->sendMail(); * */cl ...

  9. MySQL日期数据类型总结

    MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型        存储空间      日期格式           ...

  10. fail-fast 与 fail-save 机制的区别

    link:https://blog.csdn.net/bigtree_3721/article/details/67095084