avatar

nk

学习 思考 坚持 平静

  • 首页
  • 关于
Home 拥抱云原生:Docker 指令小析
文章

拥抱云原生:Docker 指令小析

Posted 2024-04-12 Updated 2024-04- 13
By nk
105~135 min read

拥抱云原生:Docker 指令小析

Docker 指令一览

docker --help

Claude-3 提供翻译

Usage:  docker [OPTIONS] COMMAND
用法: docker [选项] 命令

A self-sufficient runtime for containers
一个自包含的容器运行时环境

Common Commands:
常用命令:
  run         Create and run a new container from an image
  run         从镜像创建并运行一个新的容器
  exec        Execute a command in a running container
  exec        在正在运行的容器中执行命令
  ps          List containers
  ps          列出容器
  build       Build an image from a Dockerfile
  build       从Dockerfile构建镜像
  pull        Download an image from a registry
  pull        从仓库下载镜像
  push        Upload an image to a registry
  push        将镜像推送到仓库
  images      List images
  images      列出镜像
  login       Log in to a registry
  login       登录到仓库
  logout      Log out from a registry
  logout      从仓库登出
  search      Search Docker Hub for images
  search      在Docker Hub上搜索镜像
  version     Show the Docker version information
  version     显示Docker版本信息
  info        Display system-wide information
  info        显示系统范围的信息

Management Commands:
管理命令:
  builder     Manage builds
  builder     管理构建
  buildx*     Docker Buildx
  buildx*     Docker Buildx
  compose*    Docker Compose
  compose*    Docker Compose
  container   Manage containers
  container   管理容器
  context     Manage contexts
  context     管理上下文
  image       Manage images
  image       管理镜像
  manifest    Manage Docker image manifests and manifest lists
  manifest    管理Docker镜像清单和清单列表
  network     Manage networks
  network     管理网络
  plugin      Manage plugins
  plugin      管理插件
  system      Manage Docker
  system      管理Docker
  trust       Manage trust on Docker images
  trust       管理Docker镜像的信任
  volume      Manage volumes
  volume      管理数据卷

Swarm Commands:
Swarm 命令:
  swarm       Manage Swarm
  swarm       管理Swarm

Commands:
命令:
  attach      Attach local standard input, output, and error streams to a running container
  attach      将本地标准输入、输出和错误流附加到正在运行的容器
  commit      Create a new image from a container's changes
  commit      从容器的更改创建一个新镜像
  cp          Copy files/folders between a container and the local filesystem
  cp          在容器和本地文件系统之间复制文件/文件夹
  create      Create a new container
  create      创建一个新的容器
  diff        Inspect changes to files or directories on a container's filesystem
  diff        检查容器文件系统上的文件或目录变更
  events      Get real time events from the server
  events      获取服务器上的实时事件
  export      Export a container's filesystem as a tar archive
  export      将容器的文件系统导出为tar档案
  history     Show the history of an image
  history     显示镜像的历史
  import      Import the contents from a tarball to create a filesystem image
  import      从tarball导入内容以创建文件系统镜像
  inspect     Return low-level information on Docker objects
  inspect     返回Docker对象的底层信息
  kill        Kill one or more running containers
  kill        终止一个或多个正在运行的容器
  load        Load an image from a tar archive or STDIN
  load        从tar归档文件或标准输入加载镜像
  logs        Fetch the logs of a container
  logs        获取容器的日志
  pause       Pause all processes within one or more containers
  pause       暂停一个或多个容器内的所有进程
  port        List port mappings or a specific mapping for the container
  port        列出容器的端口映射或特定映射
  rename      Rename a container
  rename      重命名容器
  restart     Restart one or more containers
  restart     重启一个或多个容器
  rm          Remove one or more containers
  rm          删除一个或多个容器
  rmi         Remove one or more images
  rmi         删除一个或多个镜像
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  save        将一个或多个镜像保存到tar归档文件(默认输出到标准输出)
  start       Start one or more stopped containers
  start       启动一个或多个已停止的容器
  stats       Display a live stream of container(s) resource usage statistics
  stats       显示容器资源使用情况的实时流
  stop        Stop one or more running containers
  stop        停止一个或多个正在运行的容器
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  tag         创建一个引用SOURCE_IMAGE的TARGET_IMAGE标签
  top         Display the running processes of a container
  top         显示容器内正在运行的进程
  unpause     Unpause all processes within one or more containers
  unpause     恢复一个或多个容器内所有进程
  update      Update configuration of one or more containers
  update      更新一个或多个容器的配置
  wait        Block until one or more containers stop, then print their exit codes
  wait        阻塞直到一个或多个容器停止,然后打印它们的退出码

Global Options:
全局选项:
      --config string      Location of client config files (default "/root/.docker")
      --config string      客户端配置文件的位置(默认为"/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  -c, --context string     用于连接守护进程的上下文名称(覆盖DOCKER_HOST环境变量和使用"docker context use"设置的默认上下文)
  -D, --debug              Enable debug mode
  -D, --debug              启用调试模式
  -H, --host list          Daemon socket to connect to
  -H, --host list          要连接的守护进程套接字
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
  -l, --log-level string   设置日志级别("debug", "info", "warn", "error", "fatal")(默认为"info")
      --tls                Use TLS; implied by --tlsverify
      --tls                使用TLS;由--tlsverify隐含
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscacert string   仅信任此CA签名的证书(默认为"/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlscert string     TLS证书文件的路径(默认为"/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlskey string      TLS密钥文件的路径(默认为"/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
      --tlsverify          使用TLS并验证远程
  -v, --version            Print version information and quit
  -v, --version            打印版本信息并退出

Run 'docker COMMAND --help' for more information on a command.
运行'docker 命令 --help'可获取该命令的更多信息。

For more help on how to use Docker, head to https://docs.docker.com/go/guides/
欲了解如何使用Docker的更多帮助,请访问 https://docs.docker.com/go/guides/

Docker 的架构图

尚硅谷

image-drdry.png

- Client: 客户端 操作 Docker的客户端 (命令行或者界面)。
- Docker_Host: Docker 主机 安装Docker 服务的主机。
- Docker daemon: 后台进程,运行Docker 服务的后台进程。
- Containers: 容器 在Docker 服务中的 容器,一个容器就是一个镜像实例,容器之间是相互隔离的。
- Images: 镜像,Image 可以看作是一个容器的启动模板,里面包含的启动镜像所需要环境以及基础配置。一个镜像可以启动多个容器。
- Registry  Docker 镜像仓库,存储Docker Images 的地方。

容器和虚拟机的区别

尚硅谷

image-xemil.png

image-nbbnp.png

Docker 安装小提示

安装 Docker Desktop

get-docker-desktop

Linux 安装 Docker Engine

get-docker-engine-on-linux

Docker 隔离原理

namespace 6项隔离

namespace 系统调用参数 隔离内容
UTS CLONE_NEWUTS 主机和域名
IPC CLONE_NEWIPC 信号量,消息队列和共享内存
PID CLONE_NEWPID 进程编号
Network CLONE_NETENT 网络设备,网络栈,端口
Mount CLONE_NEWNS 挂载点
User CLONE_NEWUSER 用户和用户组

cgroups 资源限制

cgroup 提供的功能

  • 资源限制: 限制任务使用的资源,并在超过 配额时,发出提示
  • 优先级分配: 分配CPU时间片数量以及磁盘IO带宽大小,控制任务运行的优先级
  • 资源统计: 统计系统资源使用量。如 CPU使用时长,内存用量
  • 任务控制: 对任务执行挂起,恢复等操作
子系统 功能
CPU 使用调度程序控制任务对CPU的使用
cpuacct (CPU Accounting) 自动生成cgroup中任务对CPU资源使用情况的报告
cpuset 为cgroup中的任务分配独立的CPU(多处理器系统时)和内存
devices 开启或关闭cgroup中任务对设备的访问
freezer 挂起或恢复cgroup中任务
memory 设定cgroup中任务对内存使用量的限定,并生成这些任务对资源使用情况报告
perf_event(Linux CPU 性能探测器) 使cgroup中任务可以进行统一的性能测试
net_cls (Docker 未使用) 通过等级识别标识符标记网络数据包,从而允许Linux流量监控程序(Traffic Controller) 识别从具体cgroup中生成数据包

Docker 指令手册

Docker-Cli 手册

image-krcfo.png

此图来源于网络

如何获取镜像

默认是从 Docker Hub

image-yyzrf.png

基于 Docker Client 操作镜像

image-qdszu.png

docker login

登录到 docker registry

docker login

docker 官方说明

image-zfapt.png

Claude-3 说明

image-mjnrm.png

docker logout

退出 docker registry的登录

docker logout

docker 官方说明

image-gglro.png

Claude-3 说明

image-tnukr.png

docker search

搜索镜像指令

docker  search   redis

image-spguv.png

docker 官方说明

image-qzcrl.png

ChatGPT 说明

image-irflw.png

docker pull

从远程镜像仓库获取镜像

docker pull

docker 官方说明

image-dfayr.png

Claude-3 说明

image-jmspz.png

docker push

推送镜像到远程仓库

docker push

docker 官方说明

image-wxflo.png

Claude-3 说明

image-mnhyn.png

docker images

查看你本地已经有的 images

# 完整指令
docker image ls
# 缩写指令
docker images

image-eolxo.png

docker 官方说明

image-jhtzn.png

ChatGPT的说明

image-abguq.png

docker rmi

image 的删除操作

# 完整指令
docker image rm 
# 缩写 指令
docker rmi

docker 官方说明

image-nwvte.png

ChatGPT 说明

image-oednm.png

批量删除 image
# 删除未被使用的镜像
docker rmi  $(docker images -aq)
# 删除全部镜像包括正在使用的镜像
docker rmi -f $(docker images -aq)

docker tag

给镜像重命名

docker tag 

docker 官方说明

image-icctc.png

ChatGPT的说明

image-nepls.png

docker image history

查看 image历史

docker image history

docker 官方说明

image-emejy.png

ChatGPT 说明

image-zhfgd.png

docker build

通过 Dockerfile 在本地构建一个 image

docker build

docker 官方说明

image-ifiax.png

Claude-3 说明

image-fsmmb.png

docker image inspect

查看 image的元数据

docker image inspect

docker 官方说明

image-gxjye.png

Claude-3 说明

image-zqjqx.png

docker import

从远程URL 或者本地 压缩包导入一个镜像

docker import

docker 官方说明

image-hcbck.png

Claude-3 说明

image-hswth.png

docker save

打包 image

docker save

docker 官方说明

image-ebowg.png

Claude-3 说明

image-xowlv.png

docker load

从 压缩包中加载 image

docker load

docker 官方说明

image-qkqnf.png

Claude-3 说明

image-vzrjr.png

docker image prune

删除本地游离的对象

docker image prune

docker 官方说明

image-rhuid.png

Claude-3 说明

image-euydj.png

什么是游离的对象

image-gztlz.png

image-vsmye.png

容器的创建

docker create

从 镜像中创建一个容器,但是这个容器并没有运行,需要 使用 docker start 将其启动

docker 官方说明

image-smteq.png

image-cumsq.png

image-xrvka.png

Claude-3 说明

image-eojgv.png

举个栗子

docker create -p 80:80 --name nginx-demo nginx:latest

image-cxkxi.png

docker ps -a --filter 'status=created'

image-xbekg.png

docker kill

kill 正在运行的容器

docker 官方说明

image-sqwjx.png

Claude-3 说明

image-hcnju.png

docker stop

优雅停止真正运行的容器

docker 官方说明

image-qmycg.png

Claude-3 说明

image-ahvyw.png

docker run

运行一个docker 容器

docker 官方说明

image-hscrj.png

image-kywbr.png

image-bibzc.png

Claude-3 说明

image-rnmry.png

docker exec

进入到一个后台启动的容器内部

docker 官方说明

image-tcvcx.png

Claude-3 说明

image-jghap.png

docker attach

连接到一台正在运行的docker 容器

docker 官方说明

image-uzdyn.png

Claude-3 说明

image-golvf.png

docker commit

基于正在运行的容器创建一个新的docker 镜像

docker 官方说明

image-vocpy.png

Claude-3 说明

image-gckpa.png

docker export

将正在运行的docker容器打包成一个压缩包

docker 官方说明

image-ghxvl.png

Claude-3 说明

image-hzuij.png

小提示

docker export 到处的镜像,需要使用 原镜像的启动命令来启动

如何查看原镜像的启动命令

image-oqlxz.png

在原镜像所在服务器查执行

docker ps --no-trunc  -f 'name=nginx-demo' #原镜像名称

image-xplit.png

docker inspect

查看容器的详情信息

docker 官方说明

image-uncbw.png

Claude-3 说明

image-zpzej.png

容器的状态

Claude-3

image-myhzp.png

docker 镜像重启策略

image-cexlk.png

Docker 部署案列小析

部署 Nginx

Claude-3

image-bbntn.png

部署 Redis

Claude-3

image-hrcqk.png

部署 MySQL

Claude-3

image-xucxx.png

云原生, Docker
云原生 Docker
License:  CC BY 4.0
Share

Further Reading

May 14, 2024

拥抱云原生:Dockerfile 的多阶段构建

什么是 Dockerfile的多阶段构建 多阶段构建的就是通过把一个构建过程拆分成多个临时构建的阶段,每个阶段完成一些任务,最后把这些分构建的结果来实现我们目标镜像的构建 ChatGPT 多

May 14, 2024

拥抱云原生:Dockerfile

拥抱云原生:Dockerfile 先来写个简单的 Dockerfile FROM alpine LABEL maintanier='study' RUN ["/bin/sh", "-c","ping -c 4 www.google.com"] CMD sleep 10000 构建镜像 C

Apr 28, 2024

拥抱云原生:Docker文件系统

拥抱云原生:Docker文件系统 通过 Nginxdocker镜像探索docker镜像是如何存储的 docker pull nginx

OLDER

拥抱云原生:起始

NEWER

拥抱云原生:Docker文件系统

Recently Updated

  • 拥抱云原生:Dockerfile 的多阶段构建
  • 拥抱云原生:Dockerfile
  • 拥抱云原生:Docker文件系统
  • 拥抱云原生:Docker 指令小析
  • 拥抱云原生:起始

Trending Tags

Nginx 工作报告 云计算 云原生 Alpine Linux Docker Spring Linux 面试智慧

Contents

©2025 nk. Some rights reserved.

Using the Halo theme Chirpy