Docker常用命令
查看docker配置信息
docker info
镜像管理指令
新旧命令暂时兼容(2021-04-19)
搜索镜像
docker search 镜像名 # 全网搜索ubuntu镜像
命令格式:docker image [COMMAND]
列出镜像
新版命令:docker image ls
旧版命令:docker images
构建镜像
docker image build
查看镜像构建历史
就是Dockerfile的信息
docker image history [IMAGE]
查看镜像详细信息
docker image inspect [IMAGE]
拉取镜像
新版命令:docker image pull [IMAGE]
旧版命令:docker pull [IMAGE]
推送镜像
新版命令:docker image push [IMAGE]
旧版命令:docker push [IMAGE]
删除镜像
新版命令:docker image rm [IMAGE]旧版命令:docker rmi [IMAGE]
删除未使用镜像
默认只删除状态为dangling
的镜像,也就是标签或者镜像名为none
的镜像
docker image prune
-a # 删除所有未使用的镜像(包括dangling状态的镜像)
-f/--force # 忽略提示
设置镜像标签
新版命令:docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
旧版命令:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
导出镜像
# [PATH/SAVE_NAME]为保存路径以及保存镜像名
# 保存镜像名一般以tar结尾,因为docker save采用了tar的标准打包镜像
新版命令:docker image save image:tag -o [PATH/SAVE_NAME]
旧版命令:docker save image:tag -o [PATH/SAVE_NAME]
导入镜像
# [PATH]为镜像所在路径及镜像文件名
新版命令:docker image load -i [PATH]
旧版命令:docker load -i [PATH]
创建容器指令
格式:docker run [options] IMAGE [COMMAND] ...
选项 | 描述 |
---|---|
-i, –interactive | 交互式 |
-t, –tty | 分配一个伪终端 |
-d, –detach | 运行容器到后台 |
-e, –env | 设置容器内环境变量 |
-p, –publish list | 发布容器端口到主机 |
-P, –publish-all | 发布容器所有EXPOSE端口到主机随机端口 |
–name string | 指定容器名称 |
-h, –hostname | 指定容器内部的hostname,默认是一串码 |
–ip string | 指定容器ip,只能用于自定义网络 |
–network | 连接容器到一个网络 |
-v, –volume list –mount mount(新方式) |
将文件系统附加到容器 |
–restart string | 容器退出时重启策略,默认no,可选值[always|on-failure] |
–rm | 退出容器时,删除容器 |
常用操作
运行容器
大多数情况使用-d
即可,如果不加-d
会直接将镜像启动时运行的脚本输出在前台。
docker run -d [IMAGE]
# 当使用的[IMAGE]中有默认启动的1号进程,就可以只使用-d选项
docker run -itd [IMAGE]
# 当使用的[IMAGE]中没有1号进程,如centos是一个纯净镜像,没有任何进程,就必须加-it选项
加入变量
docker run -d -e 123=456 [IMAGE]
# 容器内变量123的值为456
映射端口
docker run -d -e 123=456 -p [宿主机端口号]:[容器内服务端口号] [IMAGE]
# 比如nginx,将80端口映射到宿主机的8080,前提是没被占用,-p 8080:80
# 就可以使用{宿主机ip:8080}来访问服务
指定容器名和hostname
docker run -d -e 123=456 -p [-p 8080:80 --name web --hostname feiyi [IMAGE]
# 容器名为web,容器内主机名为feiyi
指定容器重启策略
docker run -d -e 123=456 -p [-p 8080:80 --name web --hostname feiyi --restart=Always [IMAGE]
# 无论遇到什么错误都会自动重启容器
退出时删除容器
docker run --rm ...
# 经常用于测试其他容器连通性使用,用完即销毁
资源限制操作
选项 | 描述 |
---|---|
-m, –memory | 容器可以使用的最大内存量 |
–memory-swap | 允许交换到磁盘的内存量 |
–memory-swappiness=<0 | 容器使用SWAP分区交换的百分比(0-100,默认为1) |
–oom-kill-disable | 警用OMM Killer |
–cpus | 可以使用的CPU核心数 |
–cpuset-cpus | 限制容器使用特定的CPU核心,如(0-3,0,1) |
–cpu-shares | CPU共享(相对权重) |
例:
docker run -m="500m" --cpus="1" -d --name xxx [IMAGE]
# -m="500m":使用物理内存500m
# --cpus="1": 使用1核cpu,小数点也可以,如1.5
容器管理命令
新格式:docker container COMMAND
旧格式:docker COMMAND
选项 | 描述 |
---|---|
ls | 列出容器 |
inspect | 查看一个或多个容器详细信息 |
exec | 在运行容器中执行命令(上面有例子) |
commit | 创建一个新镜像来自一个容器 |
cp | 拷贝文件/目录到一个容器 |
logs | 获取容器日志 |
port | 列出或指定容器端口映射 |
top | 显示一个容器运行的进程 |
stats | 显示容器资源使用统计 |
stop/start/restart | 停止/启动/重启一个或多个容器 |
rm | 删除一个或多个容器 |
prune | 移除已停止的容器 |
pause | 挂起容器 |
ls
新版命令:docker container ls
旧版命令:docker ps
# 以下参数新版旧版都适用
# -a:输出所有容器,包括已经失败/退出的容器
# -l:显示最新创建的容器
# -q:列出所有容器ID,默认是正在运行的容器id
# docker ps -qa -f "STATUS=exited"
exec
# 进入容器(交互)
# -it一般搭配/bin/sh、/bin/bash等shell命令进入容器
docker exec [-it] [容器名 | 容器ID] /bin/sh
# 只运行命令,不进入容器(非交互)
docker exec [容器名 | 容器ID] COMMAND
commit
现在几乎不用commit,这是docker刚兴起时,对于新手来说不会制作镜像,就可以使用这个命令,说白了,就是将一个容器制作成镜像。可参考 Docker 操作逻辑及搭建web。随着docker的越来越普及,接触docker的都会接触 Dockerfile ,慢慢地这个命令也淡化出了视线。
cp
大多数用来宿主机与容器间互传文件
docker pc [宿主机目录] 容器名:[容器内目录]
logs
可直接查看到容器中主进程的日志
docker logs 容器名
# -f:类似tail -f
port
查看容器暴露(映射)到宿主机的端口
docker port 容器名
# 显示结果为 "容器端口 -> 宿主机端口"
top
查看容器内进程
docker top 容器名
stats
查看容器资源利用率(内存/cpu/网络IO…)
# 阻塞形式
docker stats 容器名
# 非阻塞,直接获取执行命令时的资源利用率
docker stats 容器名 --no-stream
rm
删除容器
# 删除正在运行的容器,会有警告,且不会被删除
docker rm 容器名
# -f: 强制删除
# 删除所有容器
docker rm -f $(docker ps -qa)
prune
已经退出的无用容器
# 移除所有已停止容器
docker container prune
pause
容器挂起
挂起后,状态变为Up 40 minutes (Paused)
docker pause test
docker unpause test # 退出挂起状态,重新运行起来,参考虚拟机挂起