Docker系列-Docker 命令详解(一)

315 阅读6分钟

Docker 命令详解

Docker系列回顾

上一节我们只是看了下 Docker的简单入门和一些简单的命令, 接下来我们具体看看 Docker的命令

镜像

获取镜像

之前提过一个仓库的概念, 是对镜像存储和管理的服务, 那么 Docker为我们提供了一个高质量的镜像仓库: Docker Hub

docker pull 镜像名称:标签

该命令会从默认的镜像仓库(Docker Hub)中下载镜像, 那么如果从我们自己的私有库该如何下载镜像呢?

docker pull 仓库地址/镜像名称:tag

如此就可以从自己的私有库中下载镜像, 当然也可以直接将镜像上传到默认仓库(Docker Hub)中

比如我从阿里云上下载我之前做的镜像

docker pull registry.cn-hangzhou.aliyuncs.com/sanq_cab/tomcat8:1.0

下载私有库镜像

关于如何做自己的镜像并上传到仓库中, 后面我们详细讲解

小技巧

如果我们想具体指导某个命令的具体格式, 我们可以通过 --help 来查看

docker pull --help

查看镜像列表

通过上面的命令下载下来的镜像, 我们怎么查看? 看下面的命令

docker images

该命令会列出所有下载下来的镜像, 包括我们自己定制的镜像

镜像列表

删除镜像

能下载就能删除, 删除我们通过

docker image rm -f 镜像名称/镜像ID
  • -f 强制删除, 不管有没有基于该镜像启动的容器

查找镜像

上一个命令是 获取镜像

但是如果我们想知道我们当前要获取的这个镜像是不是存在, 那么我们就需要先提前查找一下,所以:

docker search 镜像名称

该命令会查找出匹配的镜像, 比如我们要查找 tomcat 镜像

docker search tomcat

查找镜像

列表会按照star从高到底的排序, 我们一般选择官方镜像或者star高

容器

准备一点来说, 这里的启动会基于我们下载下来的镜像新建一个容器来启动, 所以这里是 启动容器;而且我们可以基于镜像来创建多个容器启动, 容器之间互不影响

启动的主要命令是: docker run, 我们通过tomcat的镜像来看下如何操作

简单启动
docker run -d -p 8080:8080 --name=tomcat8080 tomcat

我们来看下上面的命令:

  • -d 这个参数是启动容器在后台运行, 这样即使我们关闭客户端, 容器依旧在启动状态

  • -p 该参数是要将容器暴露出来的端口映射到宿主机上, 这样我们可以通过宿主ip:映射端口的形式来访问容器 前一个8080代表的是宿主机端口, 后一个8080代表的是启动暴露出来的端口

  • --name 该参数是给启动的容器起一个名字, 如果没有这个参数的话, docker会随机为容器创建名称

  • tomcat 最后的tomcat是指定的镜像, 因为我们是基于tomcat的镜像来启动该容器, 我们获取到的tomcat的tag是latest的, 这里可以省略

挂载目录

我一直觉得这个是 Docker 的精华部分, 这部分在我们工作使用中非常重要

比如上面的命令, 我们启动了一个tomcat容器并且可以正常访问, 但是我们在tomcat中是需要存放我们的开发项目的, 所以这里就涉及到我们如何将我们的项目部署到tomcat的容器中。

  • 采用挂载目录, 宿主和容器共享目录的方式

如果我们采用这种方式的话, 我们需要在启动的时候做一些手脚:

docker run -d -p 8080:8080 --name=tomcat8080 -v /www/server/tomcat/webapps:/usr/local/tomcat/webapps tomcat

我们来看看做的手脚

-v: 在 -v 的目录部分, 冒号前面的是宿主机指定的目录, 在冒号后面是容器中的目录, 该段表示宿主机指定的目录和容器指定的目录是共享状态, 我们只需要将内容放到/www/server/tomcat/webapps下就可以完成tomcat容器内容的修改

我们来看看具体展示

挂载目录-第一次内容
挂载目录-第一次内容浏览
挂载目录-修改内容
挂载目录-修改内容浏览

进入容器内部

看了上面的 挂载目录 部分, 可能有人有产生疑惑, 就是我怎么知道容器内部的目录结构呢, 别急, 听我慢慢道来

我们看看如何进入容器内部

  1. 这是第一种方式:
docker run -it --rm 镜像名称(tomcat) bash

我们来看看上面运行的参数:

  • -it

    这是两个参数, i: 表示交互式操作 , t: 表示终端

  • --rm

    容器退出后就将该容器删除

  • bash

    这个是 命令

  1. 我们来看下一种方式
docker exec -it 容器名称(tomcat8080) bash

和上面不同的是, 已这种方式进入容器内部, 退出后不会删除容器

进入容器后各种操作和linux是一样的

查看容器

上面我们只是启动了容器, 如果我们想查看容器启动的情况的话, 我们可以这样做

> docker container ls -a

如果我们想查看所有的容器, 不管在运行中或者是启动失败的, 我们可以通过上面的命令来查看, 去掉 -a 的话, 只是查看正在运行中的容器

同时,查看正在运行中的容器, 还有一种方式

docker ps
停止,重新启动, 删除

在上面我们启动了容器并且已经运行了一个demo项目, 我们现在想对demo项目进行调整并且重新发布我们需要先停止容器:

docker container stop 容器名称/容器ID [tomcat]

我们也可以通过 restart 命令来操作, 该命令会自动停止容器并启动

删除很简单, 和删除镜像很像:

docker container rm -f 容器名称/容器ID [tomcat]

如果我们想删除所有未运行的容器, 可以通过一下命令来操作:

docker container prune
查看日志

上面我们启动了容器,-d 在后台运行的话,如果我们想看看容器启动日志,我们需要这样操作

docker logs -f 容器名称

特别说明:

  • -f 该参数会展示实时日志

写在最后面

上面只是介绍了一部分常用的命令, 还不全。先好好熟悉下上面的这些命令, 然后明天再继续

时间不充足了, 就留到下一部分写吧。

明天来聊一聊容器互联实战演练:nginx负载tomcat集群