帮助启动类命令
- 启动docker: systemctl start docker
- 停止docker: systemctl stop docker
- 重启docker: systemctl restart docker
- 查看docker状态: systemctl status docker
- 开机启动: systemctl enable docker
- 查看docker概要信息: docker info
- 查看docker总体帮助文档: docker --help
- 查看docker命令帮助文档: docker 具体命令 --help
镜像命令
docker images
列出本地主机上的镜像。
各字段说明:
- repository:镜像的仓库源
- tag:镜像的标签版本号
- image id:镜像id
- created:镜像创建时间
- size:镜像大小
同一仓库源可以有多个 TAG,代表不同版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
options说明
- -a:列出本地所有镜像(含历史映像层)
- -q:只显示镜像id
docker search [options] 镜像名
搜索镜像
各字段说明:
- name:镜像名
- description:镜像说明
- stars:点赞数量
- official:是否是官方的
- automated:是否是自动构建的
options说明
- --limited n:只列出n个镜像,默认25
docker pull 镜像名[:tag]
下载镜像
不带tag就获取最新版本
docker system df
查看镜像/容器/数据卷所占的空间
docker rmi 镜像名/ID:[tag]
- -f:强制删除
可删除多个
删除全部:
docker rmi ${docker image -qa}
还记得 -q是显示镜像id,-a是显示所有镜像吧
docker悬浮镜像
仓库名和标签都是<none>的镜像,俗称悬浮镜像 dangling image
容器命令
有镜像才能创建容器, 这是根本前提(下载一个CentOS镜像演示)
新建+启动容器
docker run [options] image [command] [arg...]
options说明(有些是一个减号,有些是两个,注意区分。注意大小写)
- --name=”容器新名字“:为容器指定名称
- -d:后台运行容器并返回容器ID
- -i:交互模式运行容器,通常与-t同时使用(-i 即 stdin,-t 即 tty)
- -t:为容器重新分配一个伪输入终端
- -P:随机端口映射
- -p:指定端口映射
启动交互式容器(前台命令行),在容器内执行 /bin/bash 命令
列出当前正在运行的容器
docker ps [options]
options说明:
- -a:列出当前所有正在运行的容器+历史上运行过的
- -l:显示最近创建的容器
- -n:显示最近n个创建的容器
- -q:静默模式,只显示容器编号
退出容器
- exit:退出容器,容器停止
- ctrl+p+q:退出容器,容器不停止
其他命令
- 启动已经停止运行的容器:docker start 容器名/id
- 重启容器:docker restart 容器名/id
- 停止容器:docker stop 容器名/id
- 强制停止容器:docker kill 容器名/id
- 删除已经停止的容器:docker rm 容器id(可一次性删除多个)
启动守护式容器
docker -d 容器名/id
问题:docker ps -a 进行查看, 发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),会自动退出。
这个是docker的机制问题,比如你的web容器,以nginx为例,正常情况下,配置启动服务只需要启动响应的service即可。例如service nginx start。但是这样做nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断
- 前台交互式启动: docker run -it centos
- 后台守护式启动:docker run -d centos
查看容器日志
docker logs 容器id
把在容器的操作展示了一遍
查看容器内进行的进程
docker top 容器id
查看容器内部细节
docker inspect 容器id
进入正在运行的容器并以命令行交互
docker exec -it 容器id /bin/bash
重新进入docker容器
docker attach 容器id
exec和attach的区别
- attach 直接进入容器启动命令的终端,不会启动新的进程。用exit退出,会导致容器的停止。
- exec 是在容器中打开新的终端,并且可以启动新的进程 用exit退出,不会导致容器的停止。
- 推荐使用exec,因为退出容器终端不会导致容器的停止
容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
导入/导出容器
- export 导出容器的内容留作为一个tar归档文件
docker export 容器id > 文件名.tar
- import 从tar包中的内容创建一个新的文件系统再导入为镜像
cat 文件名.tar | docker import - 镜像用户/镜像名:版本号
常用命令总结
| 命令 | 描述 |
|---|---|
| attach | 当前 shell 下连接指定运行镜像 |
| build | 通过 Dockerfile 定制镜像 |
| commit | 提交当前容器为新的镜像 |
| cp | 从容器中拷贝指定文件或者目录到宿主机中 |
| create | 创建一个新的容器,但不启动 |
| diff | 查看 docker 容器变化 |
| events | 从 docker 服务获取容器实时事件 |
| exec | 在已存在的容器上运行命令 |
| export | 导出容器的内容流作为一个 tar 归档文件 |
| history | 展示一个镜像形成历史 |
| images | 列出系统当前镜像 |
| import | 从tar包中的内容创建一个新的文件系统映像 |
| info | 显示系统相关信息 |
| inspect | 查看容器详细信息 |
| kill | kill 指定 docker 容器 |
| load | 从一个 tar 包中加载一个镜像 |
| login | 注册或者登陆一个 docker 源服务器 |
| logout | 从当前 Docker registry 退出 |
| logs | 输出当前容器日志信息 |
| port | 查看映射端口对应的容器内部源端口 |
| pause | 暂停容器 |
| ps | 列出容器列表 |
| pull | 从docker镜像源服务器拉取指定镜像或者库镜像 |
| push | 推送指定镜像或者库镜像至docker源服务器 |
| restart | 重启运行的容器 |
| rm | 移除一个或者多个容器 |
| rmi | 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除] |
| run | 创建一个新的容器并运行一个命令 |
| save | 保存一个镜像为一个 tar 包 |
| search | 在 docker hub 中搜索镜像 |
| start | 启动容器 |
| stop | 停止容器 |
| tag | 给源中镜像打标签 |
| top | 查看容器中运行的进程信息 |
| unpause | 取消暂停容器 |
| version | 查看 docker 版本号 |
| wait | 截取容器停止时的退出状态值 |