Docker基础命令
$ docker info # 守护进程的系统资源设置
$ docker search # Docker 仓库的查询
$ docker pull # Docker 仓库的下载
$ docker images # Docker 镜像的查询
$ docker rmi # Docker 镜像的删除
$ docker ps # 容器的查询
$ docker run # 容器的创建启动
$ docker start/stop # 容器启动停止
# Docker 指令除了单条使用外,还支持赋值、解析变量、嵌套使用
镜像相关命令
查询本地镜像
$ docker images # 列出本地镜像
REPOSITORY:# 表示镜像的仓库源
TAG:# 镜像的标签
IMAGE ID:# 镜像ID
CREATED:# 镜像创建时间
SIZE:# 镜像大小
-a:# 列出本地所有的镜像(含中间映像层)
-q:# 只显示镜像ID
--digests:# 显示镜像的摘要信息
--no-trunc:# 显示完整的镜像信息
同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,我们使用# REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker将默认使用 ubuntu:latest 镜像
镜像下载
# 浏览器图形化网络镜像下载
$ docker pull 下载地址
# 例:centos下载
# 国内163镜像仓库:https://www.163yun.com/
$ docker pull hub.c.163.com/public/centos:6.7-tools
# 命令行工具镜像下载
$ docker search 镜像名 # 去Hub查看某个镜像是否存在
$ docker search [选项] 镜像名字
--no-trunc:# 显示完整的镜像描述
-s:# 列出收藏数不小于指定值的镜像
--automated:automated # build类型的镜像
$ docker pull 镜像名 # 下载镜像
$ docker pull 镜像名:{TAG} #如果不写标签,默认下载最新版
镜像的删除
# 删除镜像之前要先删除其容器
docker rmi 镜像名字ID # 删除镜像
-f 镜像ID # 强制删除
docker rmi -f 镜像名1:TAG 镜像名2:TAG
# 删除多个
docker rmi -f $(docker images -qa)
# 删除全部
将镜像保存为文件
$ docker save -o 镜像名.tar(压缩名) 镜像名:TGA/镜像ID
容器相关命令
容器的查询命令
$ docker ps # 正在运行的容器
CONTAINER ID #容器ID号(使用前4为就行)
IMAGE #容器启动使用的镜像名
COMMAND # 镜像启动是运行的命令
CREATED # 创建时间
STATUS # 当前状态
PORTS # 需要的端口
NAMES # 容器名称
-a:# 列出当前所有正在运行的容器+历史上运行过的
-q:# 静默模式,只显示容器编号
-l:# 显示最近创建的容器
-n:# 显示最近n个创建的容器
--no-trunc:# 不截断输出显示完整的信息
注意:容器运行的最低标准为:拥有前台工作进程
![](%E5%9B%BE%E7%89%87%E6%96%87%E4%BB%B6/docker%E5%9F%BA%E7%A1%80.assets/81d5f79429d15.png)
查看容器日志
$ docker logs -f -t --tail 容器ID/容器名
-t:# 是加入时间戳
-f:# 跟随最新的日志打印
--tail:# 数字,显示最后多少条
查看容器内运行的进程
$ docker top 容器ID/容器名
查看容器内部的详细信息
$ docker inspect 容器ID/容器名
查看容器所占用的系统资源
$ docker stats 容器ID/容器名
CONTAINER # 容器ID
CPU # 使用率 1个U100%,2个U200%
MEM USAGE / LIMIT # 当前内存使用大小/内存总大小
NET I/O # 网络IO
BLOCK I/O # 磁盘IO
PIDS # PID号
新建并启动容器
# docker + 命令关键字 + 一系列的参数
$ docker run [选项] IMAGE [COMMAND] [ARG]
# docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress
--name=“容器新名字”:为容器指定一个名称
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
-P:随机端口映射
-p:指定端口映射
--restart=always : 容器的自启动
-h :设置容器的主机名
--dns : 设置容器使用的 DNS 服务器
--dns-search : DNS 搜索设置
--add-host hostname:IP 注入 hostname <> IP 解析
--rm:服务停止时自动删除
docker run -it 镜像名 或者 docker run -it --name 新的名字 镜像名 # 启动式交互
容器的删除
$ docker rm 容器ID/容器名 #删除容器
# 一次删除多个容器
$ docker rm -f $(docker ps -a -q)
$ docker ps -a -q | xargs docker rm
容器的启动、重启、停止
$ docker start/restart/stop 容器ID 或者 容器名
强制停止容器
$ docker kill 容器ID 或者 容器名
启动守护式容器(即后台运行)
$ docker run -d 镜像名
$ docker run -d centos
# 使用docker ps进行查看,发现容器已经退出
# Docker容器后台运行,必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如top、tail),就会自动退出。
![](%E5%9B%BE%E7%89%87%E6%96%87%E4%BB%B6/docker%E5%9F%BA%E7%A1%80.assets/iNQ8oznZIUhRrS5.png)
进入正在运行的容器并以命令行交互
# 普通方式
$ docker exec 容器ID/容器名 操作命令
# 交互方式
$ docker exec -it 容器ID/容器名 /bin/bash # 登入容器的bash
-i # 交互方式
-t # tty接口
$ docker attach 容器ID # 重新进入
区别:
$ attach # 直接进入容器启动命令的终端,不会启动新的进程
$ exec # 是在容器中打开新的终端,并且可以启动新的进程
退出容器
$ exit #容器停止退出
$ ctrl+P+Q #容器不停止退出
从容器内拷贝文件到主机上
$ docker cp 容器ID:容器内路径 目的知己路径