• Docker命令


    1. 基础命令

    # 启动docker
    systemctl start docker
    # 关闭docker
    systemctl stop docker
    # 开机自启动docker
    systemctl enable docker 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 镜像

    ● 拉取centos镜像
    docker pull 镜像名[:tag]

    示例:docker pull centos:centos7

    ● 查看本地主机所有镜像
    docker images

    ● 删除镜像
    docker rmi [REPOSITORY]:[TAG]

    #删除一个
    docker rmi -f 镜像名/镜像ID
    
    #删除多个 其镜像ID或镜像用空格隔开即可 
    docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
    
    #删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
    docker rmi -f $(docker images -aq)
    
    #强制删除镜像
    docker image rm 镜像名称/镜像ID
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    ● 搜索可用镜像
    docker search [镜像名称]
    示例:
    在这里插入图片描述
    ● 上传镜像

    用于将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。

    sudo docker push [镜像名称]:[TAG版本号]

    示例:docker push myapache:v1

    向指定远程仓库推送镜像

    docker login --username=[用户名] -p=[密码]  远程ip:端口
    
    docker tag [镜像id:标签] [远程ip:端口/自定义路径/*]:[版本号]
    
    docker push [远程ip:端口/自定义路径/*]:[版本号]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ● 提交镜像
    docker commit -m=“提交信息” -a=“作者信息” 容器名/容器ID 提交后的镜像名:Tag

    ● 拉取镜像
    docker pull [镜像名称]:[TAG版本号]

    ● 保存镜像(将我们的镜像保存为tar 压缩文件 这样方便镜像转移和保存)
    docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
    示例:docker save tomcat -o /myimg.tar

    ● 加载镜像(任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像)
    docker load -i 镜像保存文件位置
    示例:docker load -i /myimg.tar(然后用docker images命令即可看到已加载该镜像了)

    ● 查看镜像的构建过程
    docker history kibana:7.9.3
    docker history kibana:7.9.3 --no-trunc

    3. 容器

    ● 删除容器
    docker rm [容器ID]

    ● 启动容器
    docker start [容器ID]

    ● 停止容器
    docker stop [容器ID]

    ● kill 容器
    docker kill [容器ID/容器名]

    ● 重启容器

    #重启所有容器
    docker restart $(docker ps -a -q)
    #重启所有运行中的容器
    docker restart $(docker ps -q)
    
    • 1
    • 2
    • 3
    • 4

    ● 进入容器

    1. docker exec -it 容器名/容器ID /bin/bash 【推荐】
      示例: docker exec -it mysql /bin/bash

    Docker exec 适用于在容器中执行一次性命令、执行后台任务或运行容器内的辅助进程。这就是说,通过Docker exec,可以在容器中【启动一个新的进程】,并与它进行交互,而【不会打断之前运行的主进程】。通常用于在容器中执行一些命令或启动其他程序。这可以用于在容器中运行后台任务、调试容器中特定进程的问题等。

    1. docker attach 容器名/容器ID

    Docker attach 适用于需要与容器内主进程进行实时交互的场景,比如在终端运行的应用程序或交互式调试。通常用于与正在运行的容器中的主要应用程序进行交互。例如,如果容器中运行着一个正在读取标准输入的交互式应用程序(如终端),那么可以使用Docker attach来连接到容器并与该应用程序进行交互。

    ● 退出容器

    #exit 停止并退出容器(后台方式运行则仅退出)
    #Ctrl+P+Q 不停止容器退出

    ● 查看容器进程信息
    docker top id或名

    ● 查看容器元数据
    docker inspect id或名

    ● 更换容器名
    docker rename 容器ID/容器名 新容器名

    ● 开机自启动容器
    启动容器时,使用docker run命令时 添加参数–restart=always 便表示,该容器随docker服务启动而自动启动

    ● 运行容器

    docker run [可选参数] image

    示例:docker run -itd --name centos-test centos:centos7

    参数说明:
    -d 后台运行,退出容器时候容器继续运行
    -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -i 以交互模式运行容器,通常与 -t 同时使用;
    -p 指定容器的端口
    (
    -p ip:主机端口:容器端口  配置主机端口映射到容器端口
    -p 主机端口:容器端口
    -p 容器端口
    )
    -P 随机指定端口(大写的P)
    --name 容器命名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    docker run 命令

    4. 推送到远程仓库

    docker tag local-image:tagname new-repo:tagname
    docker push new-repo:tagname
    查看日志

    5. 容器文件拷贝

    #从容器内 拷出
    docker cp 容器ID/名称: 容器内路径  容器外路径
    #从外部 拷贝文件到容器内
    docker  cp 容器外路径 容器ID/名称: 容器内路径
    
    • 1
    • 2
    • 3
    • 4

    示例:

    1. 从容器复制到主机
    docker cp mycontainer:/path/to/file /host/path/to/file
    
    • 1
    1. 从主机复制到容器
    docker cp /host/path/to/file mycontainer:/path/to/file
    
    • 1
    1. 复制文件并保留元数据
    # -a 或 –archive:复制文件或文件夹的元数据,包括文件所有权、文件权限等信息
    docker cp -a mycontainer:/path/to/file /host/path/to/file
    
    • 1
    • 2
    1. 复制符号链接指向的真实文件
    # -L 或 –follow-link:如果源路径或者目标路径包含符号链接,那么复制的将是链接所指向的真实文件或者文件夹
    docker cp -L mycontainer:/path/to/symbolic/link /host/path/to/file
    
    • 1
    • 2

    6. 查看运行日志

    docker logs [–tail number] 容器id或容器名 #num为要显示的日志条数
    docker logs -f kibana

    7. 数据挂载

    简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
    格式:-v 宿主机文件存储位置:容器内文件位置
    示例

    
    # 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
    docker run -d -p 6379:6379 --name redis505 --restart=always  -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf redis:5.0.5 --requirepass "password"
    
    • 1
    • 2
    • 3

    ● --volumes-from

    –volumes-from是Docker提供的一个非常有用的命令行选项,它允许我们在创建新的容器时共享一个或多个已存在的容器的卷。通过使用–volumes-from,我们可以轻松地将卷【从一个容器“挂载”到另一个容器中】,从而【实现容器之间的数据共享】。这在构建复杂的应用程序架构时非常有用,因为它允许我们将数据存储与应用程序逻辑分开。

    示例:

    docker run -it/-d  -p 主机端口:容器端口 --name=容器名称 ----volumes-from 数据卷容器ID/数据卷容器名称 生成数据卷容器的镜像ID/镜像名称[:版本号]
    
    # 基于父容器,生成子容器,子容器生成数据可在父容器中查看
    # 删除父容器,子容器数据依然保留
    # 注:这个我还没实践过,先抄过来 - 20231118
    docker run -it --name=son-centos --volumes-from father-centos new-centos
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    PS

    文档将自己以前的笔记,通过网络搜索整合而来,内容是多篇博文的综合

  • 相关阅读:
    基于遗传优化算法的TSP问题求解matlab仿真
    LeetCode·641.设计循环双端队列·循环双链表
    了解JWT
    【每日一题】打卡 55
    建设数字经济引领型城市 CDEC2022中国数字智能生态大会广州举行
    leetcode刷题(python)——(七)
    【EI会议征稿】第三届大数据、信息与计算机网络国际学术会议(BDICN 2024)
    qt textedit图片缩放
    (附源码)springboot计算机专业大学生就业指南网 毕业设计 061355
    十二. 实战——项目部署(springboot 和 微服务)
  • 原文地址:https://blog.csdn.net/qq_33803102/article/details/134474489