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容器内容的修改
我们来看看具体展示
进入容器内部
看了上面的 挂载目录 部分, 可能有人有产生疑惑, 就是我怎么知道容器内部的目录结构呢, 别急, 听我慢慢道来
我们看看如何进入容器内部
- 这是第一种方式:
docker run -it --rm 镜像名称(tomcat) bash
我们来看看上面运行的参数:
-
-it
这是两个参数, i: 表示交互式操作 , t: 表示终端
-
--rm
容器退出后就将该容器删除
-
bash
这个是 命令
- 我们来看下一种方式
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集群