meta.docs.docker.keys

meta.docs.docker.desc

Docker常用命令

镜像仓库操作

search搜索镜像

从镜像仓库中搜索镜像docker search options key options   --limit n    返回结果的数量   --no-trunc    显示完整的镜像描述   -f(--filter) <过滤条件>   返回符合过滤条件的镜像 key 搜索的关键字

# 搜索镜像
docker search nginx
# 只返回10条符合条件的镜像
docker search --limit 10 nginx
# 不截断输出
docker search --no-trunc nginx
# 过滤搜索结果
docker search -f starts=20 nginx
pull拉取镜像

从镜像仓库中拉取镜像docker pull options image:tag options   -a(--all-tags)  下载镜像的所有标签   -q(--quiet)    静默下载只输出镜像ID   --platform    下载指定平台镜像(linux/amd64,linux/arm64) image 镜像名称 tag 镜像版本,默认为 latest

# 拉取最新版本镜像
docker pull nginx
# 拉取指定版本镜像
docker pull nginx:alpine
# 静默拉取最新版本镜像
docker pull -q nginx
# 拉取指定平台最新版本镜像
docker pull --platform=linux/amd64 nginx
push推送镜像

将本地镜像推送到镜像仓库docker push options name:tag options   --disable-content-trust    忽略镜像的校验,默认开启 name 镜像名称,例如 docker.io/myrepo/nginx tag 镜像版本,默认为 latest

# 将latest镜像推送到默认镜像仓库
docker push myrepo/nginx
# 将v1镜像推送到默认镜像仓库
docker push myrepo/nginx:v1
# 将latest镜像推送到指定镜像仓库
docker push docker.io/myrepo/nginx

本地镜像管理

images列出镜像

列出镜像docker images options options   -a(--all)    显示所有镜像   -q(--quiet)    只显示镜像ID   -f(--filter)    根据条件过滤显示输出   --no-trunc 不截断输出   --format 格式化输出

# 显示所有本地镜像
docker images
# 显示所有镜像(包括中间层镜像)
docker images -a
# 使用过滤条件列出镜像
docker images -f "dangling=true"
# 只显示镜像ID
docker images --quiet
# 自定义格式输出
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Size}}"
rmi删除镜像

删除一个或多个镜像docker rmi options image image... image 镜像的ID或名称 options   -a(--all-tags)   删除该仓库下的所有镜像   -f(--force)    强制删除镜像   -q(--quiet)   安静模式减少输出   --no-prune   不删除悬空的父镜像

# 删除单个镜像
docker rmi nginx
# 删除多个镜像
docker rmi nginx mysql
# 删除所有标签的镜像
docker rmi -a nginx
# 强制删除镜像
docker rmi -f nginx
# 删除悬空镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')
docker images | awk '{if($2=="<none>") print $3}' |xargs docker rmi
build构建镜像

构建镜像docker build options path|url|- path Dockerfile的目录路径 url 包含Dockerfile的远程地址 - 从标准输入读取Dockerfile options   -t(--tag)    为构建的镜像指定名称和标签   -f(--file)    指定 Dockerfile 的路径   --build-arg 设置构建参数   --no-cache 不使用缓存层构建镜像   --rm 构建成功后删除中间容器   --force-rm 无论构建成功与否,一律删除中间容器   --pull 始终尝试从注册表拉取最新的基础镜像

# 构建镜像
docker build -t mynginx:latest .
# 指定Dockerfile目录构建镜像
docker build -f /path/Dockerfile -t mynginx:latest .
# 设置构建参数
docker build --build-arg HTTP_PROXY=http://proxy.x.com -t mynginx:latest .
# 不使用缓存层构建镜像
docker build --no-cache -t myimage:latest .
export导出容器

将容器文件系统导出为tar归档文件(只包含容器的文件系统)docker export options container options   -o(--output)    将输出保存到指定文件

# 将容器的文件系统导出到标准输出
docker export nginx
# 导出容器文件系统到指定文件
docker export nginx > nginx.tar
# 导出容器文件系统到指定文件
docker export -o nginx.tar nginx
import导出容器

将容器文件系统导出为tar归档文件docker import options file|URL|- repository:tag file|URL|- 输入文件的路径、本地文件或 URL,或者使用 - 从标准输入读取 options   -c(--change)    在导入过程中应用 Dockerfile 指令   -m(--message)    为导入的镜像添加注释

# 从本地tar文件导入镜像
docker import nginx.tar mynginx:latest
# 从URL导入镜像
docker import https://xx.com/nginx.tar > nginx.tar
# 从标准输入导入镜像
cat nginx.tar | docker import - mynginx:latest
# 在导入过程中应用变更
docker import -c "ENV LANG=en_US.UTF-8" -c "CMD /bin/bash" nginx.tar mynginx:latest
save保存镜像

保存一个或多个镜像为tar归档文件(包含镜像的所有层)docker save options image image... options   -o(--output)    指定输出文件的路径

# 保存单个镜像
docker save -o nginx.tar nginx:latest
# 保存多个镜像
docker save -o mult_images.tar nginx:latest mysql:latest
load加载镜像

load从 save命令生成的tar文件 中加载镜像docker load options options   -i(--input)    指定输入文件的路径   -q(--quiet)    安静模式减少输出

# 从文件加载镜像
docker load -i nginx.tar
# 从标准输入加载镜像
cat nginx.tar | docker load

容器生命周期管理

run运行容器

根据镜像创建并启动容器docker run options image [command]arg... options   --name    指定名称   -it    交互式运行容器,分配一个伪终端   -p(--publish)    端口映射(host_port:container_port)   -v(--volume)    挂载卷(host_dir:container_dir)   -e(--env)    设置环境变量   -u(--user)    指定用户   -m(--memory)   内存限制   --memory-swap   限制内存加交换内存   --rm    容器退出时自动移除   --restart    设置容器的重启策略(no/no-failure/always/unless-stopped)   --network    指定容器的网络模式   --detach    在后台创建容器   --privileged    授予此容器扩展权限

# 拉取镜像并启动一个容器
docker run nginx
# 后台运行容器
docker run -d nginx
# 交互式运行并分配终端
docker run -it nginx
# 指定容器名称
docker run --name my_name nginx
# 启动容器并进行多项配置
docker run --name my_name \
  -p 8080:80 \
  -e env_var=val \
  -v /data:/app \
  -u user1 \
  -m 1G \
  --network host \
  --restart always \
  nginx
create创建容器

同 run运行容器

start/stop/restart启动/停止/重启容器

启动/停止/重启容器docker start/stop/restart container container 可以为容器的ID或名称

# 启动容器
docker start nginx
# 启动多个容器
docker start nginx mysql
# 停止容器
docker stop nginx
# 等等20秒后停止容器
docker stop -t 20 nginx
# 停止多个容器
docker stop nginx mysql
# 重启容器
docker restart nginx
# 等等20秒后重启容器
docker restart -t 20 nginx
# 重启多个容器
docker restart nginx mysql
kill终止容器

立即终止一个或多个容器docker kill container

# 立即终止容器
docker kill nginx
# 立即终止多个容器
docker kill nginx mysql
# 通过信号终止容器
docker kill -s SIGTERM nginx
rm删除容器

删除一个或多个已停止的容器docker rm container container 可以为容器的ID或名称

# 删除单个已停止的容器
docker rm nginx
# 删除多个已停止的容器
docker rm nginx mysql
# 强制删除运行的容器
docker rm -f nginx
# 删除所有已停止的容器
docker rm $(docker ps -qf status=exited)
docker ps -qf status=exited | xargs docker rm
pause/unpause暂停/恢复容器

暂停/恢复容器docker pause/unpause container container 可以为容器的ID或名称

# 暂停容器,容器将被挂起不会被终止
docker pause nginx
# 恢复暂停的容器
docker unpause nginx

容器操作

ps列出容器

列出容器docker ps options options   -a(--all)    显示所有容器   -q(--quiet)    只显示容器ID   -l(--latest)    显示最近创建的一个容器   -f(--filter)    根据条件过滤显示的容器   -s(--size)    显示容器的大小   -n 显示最近创建的n个容器   --no-trunc 不截断输出   --format 格式化输出 容器的状态:created/restarting/running/removing/paused/exited/dead

# 显示所有运行中的容器
docker ps
# 显示容器的大小
docker ps -s
# 显示最近创建所有状态的一个容器
docker ps -l
# 显示最近创建所有状态的5个容器
docker ps -n 5
# 显示所有状态的容器
docker ps -a
# 显示状态为exited的容器
docker ps -f "status=exited"
# 显示名称包含title的容器
docker ps -f "name=title"
# 以表格的形式格式化输出
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
inspect获取详细信息

获取容器/镜像/卷/网络的详细信息docker inspect image/container/volume/network 操作对象为ID或名称

# 获取镜像的详细信息
docker inspect image
# 获取容器的详细信息
docker inspect container
# 格式化输出容器详细信息
docker inspect --format '{{ .State.Running }}' container
top显示容器中运行的进程

显示指定容器中运行的进程docker top container

# 显示nginx中运行的进程
docker top nginx
logs查看容器中的日志

查看容器中的日志docker logs options container options   -n(--tail)    从日志末尾开始显示的行数   -t(--timestamps)    显示时间戳   -f(--follow)    跟随日志输出   --details    显示提供给日志的额外详细信息   --since    显示某个时间之后的日志

# 显示容器中的所有
docker logs nginx
# 显示容器中最后20行日志
docker logs -n 20 nginx
# 显示容器中所有日志并跟随日志输出
docker logs -f nginx
# 显示容器中最后20行日志并跟随日志输出
docker logs -f -n 20 nginx
# 显示容器中自设置的时间后的日志
docker logs --since="2024-09-22T15:00:00" nginx
stats查看容器资源使用

查看容器资源使用情况docker stats options container options   -a(--all)    显示所有的容器   --no-stream    只展示当前状态,不实时更新   --no-trunc    不截断输出   --format    指定返回值的模板文件

# 显示所有运行的容器的资源使用情况
docker stats
# 显示所有的容器的资源使用情况
docker stats -a
# 显示所有运行的容器当前资源使用情况,不实时更新
docker stats --no-stream
# 使用自定义格式输出
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
info详细信息

显示docker系统的详细信息

docker info
cp文件复制

用于容器和宿主机之间复制文件或目录docker cp options src container:targetdocker cp options container:src target container 容器的ID或名称

# 从宿主机复制文件 到 容器
docker cp /root/file.txt nginx:/path/file.txt
# 从宿主机复制目录 到 容器
docker cp /root/dir nginx:/path/dir
# 从容器复制文件 到 宿主机
docker cp nginx:/path/file.txt /root/file.txt
# 从容器复制目录 到 宿主机
docker cp nginx:/dir /root/dir
exec执行命令

用于在运行的容器中执行命令docker exec options container command arg... options   -d(--detach)    在后台运行命令   -e(--env)    设置环境变量   -u(--user)    以指定用户的身份运行命令   -it    交互模式,分配一个伪终端   -w(--workdir)    指定命令的工作目录   --privileged    给这个命令额外的权限

# 在容器中运行命令
docker exec nginx ls /app
# 进入交互模式
docker exec -it nginx /bin/bash
# 在容器后台运行命令
docker exec -d nginx touch /file.txt
# 在容器中执行命令,并设置环境变量
docker exec -e env_var=val nginx env
# 在容器中以 user1 用户执行命令
docker exec -u user1 nginx whoami
# 在容器中进入到/app下执行命令
docker exec -w /app nginx pwd