• 【Docker 基础教程】Docker命令运行原理及一些简单的操作命令


    ✈前言

    前面介绍到了Docker的安装与基本配置,本篇就着重说一下Docker的基本操作指令,基本操作包括Docker服务的启动与关闭,容器的启动与关闭以及检测容器的状态、容器内数据的持久化。明白了这些基础操作才可以进行下一步的复杂操作。层层递进。本篇笔记跟随的是b站周阳老师,传送门放在了下方,感兴趣或有疑问的小伙伴可以留言,或者直接传送过去瞧一瞧。

    传送门


    在这里插入图片描述


    ✈指令运行原理

    Docker文件目录

    /var/lib/docker/
    ├── containers
    ├── image
    │   └── overlay2
    │       ├── distribution
    │       ├── imagedb
    │       │   ├── content
    │       │   │   └── sha256
    │       │   └── metadata
    │       │       └── sha256
    │       ├── layerdb
    │       └── repositories.json
    ├── network
    │   └── files
    │       └── local-kv.db
    ├── overlay2
    │   └── l
    ├── plugins
    │   ├── storage
    │   │   └── blobs
    │   │       └── tmp
    │   └── tmp
    ├── swarm
    ├── tmp
    ├── trust
    └── volumes
        └── metadata.db
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    运行原理

    请添加图片描述

    ✈启动、关闭Docker

    ✒启动关闭

    启动docker:

    systemctl start docker
    
    • 1

    停止docker:

    systemctl stop docker
    
    • 1

    重启docker:

    systemctl restart docker
    
    • 1

    如果没有启动docker的话使用docker命令得到的结果将是

    请添加图片描述

    启动成功之后使用docker命令的话得到的将是

    请添加图片描述

    ✒查看docker状态

    查看docker状态:

    systemctl status docker
    
    • 1

    开机启动:

    systemctl enable docker
    
    • 1

    查看docker概要信息:

    docker info
    
    • 1

    ✒获取帮助

    查看docker总体帮助文档:

    docker -help
    
    • 1

    查看docker命令帮助文档:

     docker 具体命令-help
    
    • 1

    ✈镜像命令

    ✒列举本地主机的镜像

    docker images

    后跟参数说明:

    -q 只显示镜像ID

    -a 列出本地所有镜像(含历史映像层)

    请添加图片描述
    REPOSITORY:表示镜像的仓库源 TAG:镜像的标签版本号 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小

    同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

    如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

    ✒寻找某个镜像

    docker search 镜像名字

    目标网址是https://hub.docker.com

    参数说明:

    limit:只列出N个镜像(默认25个)
    请添加图片描述

    请添加图片描述
    NAME 镜像名称
    DESCRIPTION 镜像说明
    STARS 点赞数量
    OFFICIAL 是否是官方的
    AUTOMATED 是否是自动构建的

    ✒下载镜像

    docker pull 镜像名[版本号]

    如果名字不带版本号的话,默认是最新版本(latest)。如果带上版本号才会去寻找对应的版本

    请添加图片描述

    请添加图片描述

    ✒查看镜像/容器/数据卷所占的空间

     docker system df
    
    • 1

    请添加图片描述

    ✒删除镜像

    docker rmi 镜像名或ID

    删除单个镜像 docker rmi -f 镜像ID

    删除多个镜像 docker rmi -f 镜像名1:版本号 镜像名2:版本号

    删除全部镜像 docker rmi -f $(docker images -qa)

    请添加图片描述

    ✒谈谈docker 虚悬镜像是什么?

    仓库名、标签名、都是的镜像,俗称虚悬镜像dangling image

    请添加图片描述

    ✈容器命令

    有了镜像才可以创建容器,镜像通过pull进行拉取

    ✒新建启动容器

    ❄常规方式启动容器

    命令原型:docker run [options] image [command][arg…]

    OPTIONS说明(常用):有些是一个减号,有些是两个减号

    –name=“容器新名字” 为容器指定一个名称;

    -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

    -i:以交互模式运行容器,通常与 -t 同时使用;

    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    也即启动交互式容器(前台有伪终端,等待交互);

    -P: 随机端口映射,大写P

    -p: 指定端口映射,小写p

    请添加图片描述

    ❄交互式启动容器

    命令原型:docker run -it 容器名 /bin/bash

    使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

    docker run -it centos /bin/bash

    参数说明:

    -i: 交互式操作。

    -t: 终端。

    centos : centos 镜像。

    /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。要退出终端,直接输入 exit:

    ✒查看容器运行状态

    docker ps [options]

    请添加图片描述
    OPTIONS说明(常用):

    -a :列出当前所有正在运行的容器+历史上运行过的

    -l :显示最近创建的容器。

    -n:显示最近n个创建的容器。

    -q :静默模式,只显示容器编号。
    请添加图片描述

    ✒退出容器

    交互式容器停止:

    容器不停止:ctrl+p+q(退出容器容器不停止)

    容器停止:exit(退出容器,容器停止)

    守护容器停止:docker stop 容器ID或者容器名

    强行停止容器:docker kill 容器ID或者容器名

    重启容器:docker restart 容器ID或者容器名

    ✒删除已停止的容器

    命令原型 :docker rm 容器ID

    一次性删除多个容器实例:

    docker rm -f $(docker ps -a -q)

    docker ps -a -q | xargs docker rm

    ✒启动守护容器

    一般情况下我们是希望docker 的服务是在后台进行的,我们可以通过-d指定容器的后台运行模式

    后台启动方式:docker run -d 容器名

    前台启动方式:docker run -it 容器名

    ✒进入正运行容器,并进行命令交互

    第一种:

    命令原型:docker exec -it 容器ID bashShell

    这个baseShell 指的是对应容器内的目录,比如centos的shell命令在/bin/bash

    redis 的命令在redis-cli内

    第二种:

    命令原型:

    docker attach 容器ID

    二者区别:

    attach直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。

    exec是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。

    ✒给镜像打标签

    按照公式: docker tag 镜像:Tag Host:Port/Repository:Tag

    自己host主机IP地址,填写自己的,不要粘贴错误,O(∩_∩)O

    使用命令 docker tag 将zzyyubuntu:1.2 这个镜像修改为192.168.111.162:5000/zzyyubuntu:1.2

    docker tag zzyyubuntu:1.2 192.168.111.162:5000/zzyyubuntu:1.2

    请添加图片描述

    ✒查看容器日志

    docker logs 容器ID

    请添加图片描述

    ✒查看容器内运行的进程

    docker top 容器ID

    请添加图片描述

    ✒查看容器内部细节

    docker inspect 容器ID

    ✒容器向主机拷贝

    命令原型:docker cp 容器ID:容器内路径 目的路径

    请添加图片描述

    ✒导入或导出容器

    export导出容器的内容留作为一-个tar归档文件[对应import命令]

    import从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

    docker export容器ID >文件名.tar

    请添加图片描述

    cat文件名.tar| docker import -镜像用户/镜像名:镜像版本号

    请添加图片描述

    ✈小总结

    请添加图片描述


    命令选项描述
    attachAttach to a running container当前 shell 下 attach 连接指定运行镜像
    buildBuild an image from a Dockerfile通过 Dockerfile 定制镜像
    commitCreate a new image from a container changes提交当前容器为新的镜像
    cpCopy files/folders from the containers filesystem to the host path从容器中拷贝指定文件或者目录到宿主机中
    createCreate a new container创建一个新的容器,同 run,但不启动容器
    diffInspect changes on a container’s filesystem查看 docker 容器变化
    eventsGet real time events from the server从 docker 服务获取容器实时事件
    execRun a command in an existing container在已存在的容器上运行命令
    exportStream the contents of a container as a tar archive导出容器的内容流作为一个 tar 归档文件[对应 import ]
    historyShow the history of an image展示一个镜像形成历史
    imagesList images列出系统当前镜像
    importCreate a new filesystem image from the contents of a tarball从tar包中的内容创建一个新的文件系统映像[对应export]
    infoDisplay system-wide information显示系统相关信息
    inspectReturn low-level information on a container查看容器详细信息
    killKill a running containerkill 指定 docker 容器
    loadLoad an image from a tar archive从一个 tar 包中加载一个镜像[对应 save]
    loginRegister or Login to the docker registry server注册或者登陆一个 docker 源服务器
    logoutLog out from a Docker registry server从当前 Docker registry 退出
    logsFetch the logs of a container输出当前容器日志信息
    portLookup the public-facing port which is NAT-ed to PRIVATE_PORT查看映射端口对应的容器内部源端口
    pausePause all processes within a container暂停容器
    psList containers列出容器列表
    pullPull an image or a repository from the docker registry server从docker镜像源服务器拉取指定镜像或者库镜像
    pushPush an image or a repository to the docker registry server推送指定镜像或者库镜像至docker源服务器
    restartRestart a running container重启运行的容器
    rmRemove one or more containers移除一个或者多个容器
    rmiRemove one or more images移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
    runRun a command in a new container创建一个新的容器并运行一个命令
    saveSave an image to a tar archive保存一个镜像为一个 tar 包[对应 load]
    searchSearch for an image on the Docker Hub在 docker hub 中搜索镜像
    startStart a stopped containers启动容器
    stopStop a running containers停止容器
    tagTag an image into a repository给源中镜像打标签
    topLookup the running processes of a container查看容器中运行的进程信息
    unpauseUnpause a paused container取消暂停容器
    versionShow the docker version information查看 docker 版本号
    waitBlock until a container stops, then print its exit code截取容器停止时的退出状态值

  • 相关阅读:
    mysql代码
    基于Java的国内外重大新闻展示平台的设计与实现
    如何解决fiddler抓包安卓,Ios失败问题?
    Web端即时通讯技术:WebSocket、socket.io、SSE
    【小月电子】FPGA开发板(Spirit_V4)系统学习教程-LESSON7串口通信
    三农数据(1996-2020)五:农产品产量、就业人数、农村养老等
    JAVA IO——获取文件信息
    chatgpt prompt提示词
    goLang小案例-获取从控制台输入的信息
    高级人工智能复习 中科大
  • 原文地址:https://blog.csdn.net/apple_51931783/article/details/126160707