个人常用 Docker 命令 持续更新
镜像相关
查看本地镜像列表
docker images
docker images
从记录中心查询镜像
docker search 镜像关键词
docker search 镜像关键词
从记录中心拉取镜像到本地
笔者说
如果镜像名称后不指定 标签/版本 ,则会默认使用最新版本(latest)。
例如:docker pull tomcat:8.5.0 拉取的就是 8.5.0 版本的 tomcat 镜像,而 docker pull tomcat -> 拉取的实际是 docker pull tomcat:latest,这个 latest 是跟随记录中心中的最新版本变化的,无法确定当前拉取的是哪一个版本。
docker pull 镜像名称[:标签/版本]
docker pull 镜像名称[:标签/版本]
删除本地镜像
# 删除指定镜像
docker rmi 镜像ID/镜像名称 [镜像ID/镜像名称...]
# 删除所有镜像
docker rmi `docker images -q`
docker rmi $(docker images -q)
# 删除指定镜像
docker rmi 镜像ID/镜像名称 [镜像ID/镜像名称...]
# 删除所有镜像
docker rmi `docker images -q`
docker rmi $(docker images -q)
笔者说
q
是 quiet 的意思,加上这个参数后,docker images 输出的就不是镜像详细列表了,而是镜像 ID 列表,通常用于编写脚本时使用。
所以,上方删除所有镜像的命令实际是 docker rmi 镜像 ID1 镜像 ID2...
从 Dockerfile 创建镜像
笔者说
如果镜像名称后不指定 标签/版本 ,则会默认使用最新版本(latest)。
docker build -t 镜像名称[:标签/版本] Dockerfile文件路径
docker build -t 镜像名称[:标签/版本] Dockerfile文件路径
将本地镜像导出为 tar 文件
笔者说
如果镜像名称后不指定 标签/版本 ,则会默认使用最新版本(latest)。
docker save -o/-output 文件路径.tar 镜像名称[:标签/版本]
docker save -o/-output 文件路径.tar 镜像名称[:标签/版本]
从 tar 文件导入为本地镜像
docker load -i/-input 文件路径.tar
docker load -i/-input 文件路径.tar
容器相关
查看容器列表
# 查看正在运行的容器
docker ps
# 查看全部容器(包含已经停止的)
docker ps -a
# 模糊查询容器
docker ps [-a] | grep 容器关键词
# 查看正在运行的容器
docker ps
# 查看全部容器(包含已经停止的)
docker ps -a
# 模糊查询容器
docker ps [-a] | grep 容器关键词
创建容器并运行
笔者说
如果镜像名称后不指定 标签/版本 ,则会默认使用最新版本(latest)。
如果本地不存在该版本的镜像,则会先从记录中心拉取到本地。
# -d 指定容器在后台运行
# --name 指定容器名称
# -m 限定容器内存大小
# --restart 指定重新启动方式,always 表示始终重启
# -e 指定环境变量配置
# -p 指定容器和宿主机的网络端口映射
# -v 指定容器和宿主机的目录挂载
# --network 指定容器使用的网络
# --network-alias 指定容器在网络中的别名
docker run -d \
--name 容器名称 镜像名称[:标签/版本] \
[-m xxxm] \
--restart=always \
[-e 环境变量名=环境变量值] \
[-p 宿主机端口:容器内部端口] \
[-v 宿主机目录:容器内部目录] \
[--network 网络名称 --network-alias 网络别名]
# -d 指定容器在后台运行
# --name 指定容器名称
# -m 限定容器内存大小
# --restart 指定重新启动方式,always 表示始终重启
# -e 指定环境变量配置
# -p 指定容器和宿主机的网络端口映射
# -v 指定容器和宿主机的目录挂载
# --network 指定容器使用的网络
# --network-alias 指定容器在网络中的别名
docker run -d \
--name 容器名称 镜像名称[:标签/版本] \
[-m xxxm] \
--restart=always \
[-e 环境变量名=环境变量值] \
[-p 宿主机端口:容器内部端口] \
[-v 宿主机目录:容器内部目录] \
[--network 网络名称 --network-alias 网络别名]
停止容器
# 停止指定容器
docker stop 容器ID/容器名称 [容器ID/容器名称...]
# 停止所有容器
docker stop `docker ps -aq`
docker stop $(docker ps -aq)
# 停止指定容器
docker stop 容器ID/容器名称 [容器ID/容器名称...]
# 停止所有容器
docker stop `docker ps -aq`
docker stop $(docker ps -aq)
笔者说
q
是 quiet 的意思,加上这个参数后,docker ps 输出的就不是容器详细列表了,而是容器 ID 列表,通常用于编写脚本时使用。
所以,上方停止所有容器的命令实际是 docker stop 容器 1ID 容器 2ID...
启动容器
docker start 容器ID/容器名称
docker start 容器ID/容器名称
重启容器
docker restart 容器ID/容器名称
docker restart 容器ID/容器名称
删除容器
# 删除指定容器
docker rm 容器ID/容器名称 [容器ID/容器名称...]
# 删除所有容器
docker rm `docker ps -aq`
docker rm $(docker ps -aq)
# 删除指定容器
docker rm 容器ID/容器名称 [容器ID/容器名称...]
# 删除所有容器
docker rm `docker ps -aq`
docker rm $(docker ps -aq)
笔者说
q
是 quiet 的意思,加上这个参数后,docker ps 输出的就不是容器详细列表了,而是容器 ID 列表,通常用于编写脚本时使用。
所以,上方删除所有容器的命令实际是 docker rm 容器 1ID 容器 2ID...
进入容器内部
docker exec -it 容器ID/容器名称 bash
docker exec -it 容器ID/容器名称 sh
docker exec -it 容器ID/容器名称 bash
docker exec -it 容器ID/容器名称 sh
从容器内部退出
exit
exit
向容器内拷贝文件
docker cp 宿主机内文件路径 容器名称:容器内文件路径
docker cp 宿主机内文件路径 容器名称:容器内文件路径
查看容器日志
# -f/--flow 跟踪日志输出
# -t/--timestamps 显示时间戳
# -n/--tail 从日志末尾显示的行数,默认为 all
# --since 自某个时间之后的日志
# 例如:--since "2022-09-30" 表示显示2022年9月30日后的日志
# 例如:--since 30m 表示显示最近 30 分钟内的日志
# --until 某个时间之前的日志
docker logs -f [-t] [-n 行数] [--since 开始时间] [--until 结束时间] 容器ID/容器名称
# -f/--flow 跟踪日志输出
# -t/--timestamps 显示时间戳
# -n/--tail 从日志末尾显示的行数,默认为 all
# --since 自某个时间之后的日志
# 例如:--since "2022-09-30" 表示显示2022年9月30日后的日志
# 例如:--since 30m 表示显示最近 30 分钟内的日志
# --until 某个时间之前的日志
docker logs -f [-t] [-n 行数] [--since 开始时间] [--until 结束时间] 容器ID/容器名称
备份容器为本地镜像
笔者说
如果镜像名称后不指定 标签/版本 ,则会默认使用最新版本(latest)。
docker commit [-a "作者"] [-m "信息"] 容器ID/容器名称 镜像名称[:标签/版本]
docker commit [-a "作者"] [-m "信息"] 容器ID/容器名称 镜像名称[:标签/版本]
将容器导出为 tar.gz 文件
docker export 容器ID/容器名称 > 文件路径.tar.gz
docker export 容器ID/容器名称 > 文件路径.tar.gz
将 tar.gz 文件导入为镜像
笔者说
如果镜像名称后不指定 标签/版本 ,则会默认使用最新版本(latest)。
docker import 文件路径.tar.gz 镜像名称[:标签/版本]
docker import 文件路径.tar.gz 镜像名称[:标签/版本]
网络相关
查看网络列表
docker network ls
docker network ls
创建 bridge 网络
docker network create 网络名称
docker network create 网络名称
删除网络
docker network rm 网络ID/网络名称
docker network rm 网络ID/网络名称
其他
查看 docker 版本
docker -v
docker version
docker -v
docker version
查看 docker 信息
docker info
docker info
docker-compose 命令
启动并后台运行所有的服务
docker-compose up -d
docker-compose up -d
停止并删除容器、网络、卷、镜像
docker-compose down
docker-compose down
列出项目中目前的所有容器
docker-compose ps
docker-compose ps
停止容器
docker-compose stop 容器名
docker-compose stop 容器名
启动容器
docker-compose start 容器名
docker-compose start 容器名
修改 yml 文件后,重新启动并后台运行
docker-compose up --force-recreate -d
docker-compose up --force-recreate -d