docker基本用法

news2024/12/27 11:48:20

docker

基础常用命令

  • 导入镜像

    • 方式1

      docker import kylin_sp2.tar.xz kylin-build:build-hs-220824
      
    • 方式2

      [root@ccc64 caojingjing]# cat kylin_sp2.tar.xz | docker import - kylin-build:build-hs-220824
      sha256:c02cba7686b88e633eff58cddba3189712cbe7f449f2fd37b2033158a9405e7b
      
  • 查看docker镜像

    • [root@ccc64 caojingjing]# docker images
      REPOSITORY       TAG                      IMAGE ID       CREATED              SIZE
      <none>           <none>                   5fdee3cda69c   About a minute ago   2.02GB
      kylin-build      build-hs-220824          c02cba7686b8   5 minutes ago        2.19GB
      centos-build     build-hs-iso_767         fcda81fcbb37   4 hours ago          643MB
      
  • 运行容器

    • # -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)  --name 给要运行的容器 起的名字  /bin/bash  交互路径
      docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash 
      
    • [root@ccc64 caojingjing]# docker run -it -d --name hs-libvirt-build kylin-build:build-hs-220824 /bin/bash
      5af66064d291fbc40df53045ee04a9de827fd8c8e1ea6290a96f1b36c19fd397
      
  • 查看后台容器

    • [root@ccc64 caojingjing]# docker ps -a
      CONTAINER ID   IMAGE                                 COMMAND            CREATED          STATUS          PORTS     NAMES
      5af66064d291   kylin-build:build-hs-220824           "/bin/bash"        43 seconds ago   Up 42 seconds             hs-libvirt-build
      ff524790a6a3   centos-build:build-hs-iso_767         "/usr/sbin/init"   4 hours ago      Up 4 hours                build-hs-iso_767
      45ce5328d690   centos-build:build-hs-iso_762         "/usr/sbin/init"   6 hours ago      Up 6 hours                build-hs-iso_76
      
  • 进入容器

    • 方式一 (推荐)

      docker exec -it 容器名/容器ID /bin/bash
      
      [root@ccc64 caojingjing]# docker exec -it hs-libvirt-build /bin/bash
      [root@5af66064d291 /]# 
      
    • 方式二

      docker attach 容器名/容器ID
      
  • 将宿主机文件COPY到容器中

    • docker cp 文件路径 容器id:容器中存在文件路径
      
  • 添加历史记录,基于容器创建镜像,保存历史合并新层,基于容器创建(创建新镜像)

    OPTIONS说明:

    • **-a 😗*提交的镜像作者;
    • **-c 😗*使用Dockerfile指令来创建镜像;
    • **-m 😗*提交时的说明文字;
    • **-p 😗*在commit时,将容器暂停
    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    docker commit -a "cjj" -m "add qemu and libvirt compile evironment" 718401b42ec4 ctyun-build:build-hs-230314
    
  • 查看docker的历史提交记录

    • docker history 镜像ID
      
  • 导出/导入镜像

    • 导出镜像到一个文件,不带历史,基于容器创建(迁移容器)

      docker export 容器ID > xxximg.tar
      docker import ...
      
    • 导出镜像到指定文件(分享镜像)

      docker save [options] images [images...]

      docker save
      docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
      注:不要docker save <IMAGE ID> -o <repository>.tar(会导致载入镜像后名字标签都为<none>)
      如果出现none,可通过增加名字标签,docker tag <IMAGE ID> <repository>:<tag>
      

      就是说如果用export指令导出,镜像历史提交记录就没了;但是用save,历史提交记录还在

    • 导入指定文件为镜像

      docker load
      docker load < busybox.tar.gz
      

    可以依据具体使用场景来选择命令

    若是只想备份images,使用save、load即可

    若是在启动容器后,容器内容有变化,需要备份,则使用export、import

  • 修改tag名称

    • docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
      
      [root@ccc64 ~]# docker tag hs-libvirt-build kylin-build:v1
      Error response from daemon: No such image: hs-libvirt-build:latest
      [root@ccc64 ~]# docker tag hs-libvirt-build:v1 kylin-build:v1
      [root@ccc64 ~]# docker images
      REPOSITORY         TAG                      IMAGE ID       CREATED          SIZE
      centos-build       build-qemu_44            164f6fcf5047   2 minutes ago    1.86GB
      hs-libvirt-build   v1                       7ae693d9eeee   8 minutes ago    3.35GB
      kylin-build        v1                       7ae693d9eeee   8 minutes ago    3.35GB
      
  • 删除镜像

    • docker rmi:用于删除一个或者多个镜像

    • 如上出现两个ID一样的,这要怎么搞呢

      docker rmi hs-libvirt-build:v1
      
      [root@ccc64 ~]# docker images
      REPOSITORY       TAG                      IMAGE ID       CREATED             SIZE
      kylin-build      v1                       7ae693d9eeee   19 minutes ago      3.35GB
      centos-build     build-qemu_42            16b7a844e49a   24 minutes ago      1.87GB
      centos-build     build-hserver-rpms_327   3135e3411d4e   About an hour ago   1.87GB
      kylin-build      build-hs-220824          c02cba7686b8   2 hours ago         2.19GB
      
  • 停止容器

    • docker stop NAMES
  • 删除容器

    • docker rm:用于删除一个或者多个容器

docker file

创建第一个 Dockerfile,需要理解 file 的组成

以下是需要指定的命令

  • FROM - 定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

  • RUN - 用于执行后面跟着的命令行命令。有以下俩种格式:

    • shell 格式:

      RUN <命令行命令>
      # <命令行命令> 等同于,在终端操作的 shell 命令。
      

      exec 格式:

      RUN ["可执行文件", "参数1", "参数2"]
      # 例如:
      # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
      
    • 注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:

      FROM centos
      RUN yum -y install wget
      RUN wget -O redis.tar.gz “http://download.redis.io/releases/redis-5.0.3.tar.gz”
      RUN tar -xvf redis.tar.gz

      以上执行会创建 3 层镜像。可简化为以下格式:

      FROM centos
      RUN yum -y install wget
      && wget -O redis.tar.gz “http://download.redis.io/releases/redis-5.0.3.tar.gz”
      && tar -xvf redis.tar.gz

      如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像。

制作 docker 镜像

  • DockerHub 上有很多的镜像,可以满足大部分的需求。这种情况我们就可以直接通过docker pull ** 从DockerHub上获取对应的镜像 (但如果没有找到想要的 docker image,我们可以自己制作)
  • tar 完成系统压缩包 1、可以选择/跟目录,然后--exclude排除不需要的目录
    • tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .

常见问题

  • 使用docker images时,可能会出现REPOSITORY和TAG均为none的镜像

​ 解决方式:docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

  • docker 空间不足

    解决方式:修改 docker 存储的默认路径,docker info 查看,修改配置文件/etc/docker/daemon.json

    {
        ...
        "data-root": "/data/docker/",
        ...
        
    }
    
    systemctl restart docker
    
  • 修改配置文件,只对新创建的 docker 有效
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JUC系列-10】深入理解ArrayBlockingQueue的底层原理

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

什么是研发效能DevOps?研发效能方程式又是什么?

研发效能DevOps是一种理念一个方法&#xff0c;旨在通过优化软件开发、运营和维护的流程&#xff0c;实现高效、高质量、快速的价值交付。 研发效能需要解决的是&#xff1a;如何平衡价值、效率、成本这三者的关系&#xff0c;同时寻求可持续发展。研发效能的目标是持续低成本…

多因素共同作用,行业格局或将发生变化

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 1、政经环境改善&#xff0c;数控机床有望走出寒冬 近年来&#xff0c;国家不断提高对于高端数控机床的扶持力度与关注。长…

高效解决 TypeError : ‘ numpy._DTypeMeta‘ object is not subscriptable 问题

文章目录 问题描述解决问题 问题描述 解决问题 参考博文 打开报错位置 AppData\Roaming\Python\Python39\site-packages\cv2\typing\ 添加single-quotes&#xff0c;即单引号 博主说The trick is to use single-quotes to avoid the infamous TypeError: ‘numpy._DTypeMeta’…

ChatGPT可以用于写留学文书嘛?对留学生有什么影响?

自从4月份ChatGPT4.0发布以后&#xff0c;越来越多的AI工具被应用于我们的日常生活当中&#xff0c;而对于学生来说&#xff0c;尤其是在读的留学生朋友&#xff0c;或多或少都使用过&#xff0c;无论是写文章综述还是项目总结&#xff0c;都有十分出色的效果。 01.ChatGPT 可…

算法题:买卖股票的最佳时机含手续费(动态规划解法贪心解法-详解)

这道题有两种解法&#xff1a;动态规划 or 贪心算法。 贪心算法的提交结果要比动态规划好一些&#xff0c;总体上动态规划的解法更容易想到。&#xff08;完整题目附在了最后&#xff09; 1、动态规划解法 设置两个数&#xff0c;dp[0]表示遍历到股票prices[i]时手里没有股…

SSM整合RabbitMQ,Spring4.x整合RabbitMQ

SSM整合RabbitMQ目录 前言版本实现目录参考pom.xml依赖rabbitmq.properties配置文件spring-rabbitmq.xmlspring-mvc.xml或applicationContext.xmlrabbitmq目录下MessageConsumer.javaMessageConsumer2.javaMessageProducer.javaMessageConstant.java 测试调用 扩展消息重发 前言…

飞桨大模型套件:一站式体验,性能极致,生态兼容

在Wave Summit 2023深度学习开发者大会上&#xff0c;来自百度的资深研发工程师贺思俊和王冠中带来的分享主题是&#xff1a;飞桨大模型套件&#xff0c;一站式体验&#xff0c;性能极致&#xff0c;生态兼容。 大语言模型套件PaddleNLP 众所周知PaddleNLP并不是一个全新的模型…

Google-CTF-2016-Stego.pcap数据包解析

Google-CTF-2016&#xff08;a-cute-stegosaurus-100&#xff09; 前言&#xff1a;别人发的题目 随便看看 记录一下解题过程&#xff01; 知识点: 在报文段中有 6Bit 的状态控制码&#xff0c; 分别如下tcp URG&#xff1a;紧急比特&#xff08;urgent&#xff09;&#x…

机械臂抓取的产业落地进展与思考

工业机械臂是一种能够模拟人类手臂动作的机械装置&#xff0c;具有高精度、高速度和高灵活性的特点。近年来&#xff0c;随着人工智能和机器人技术的快速发展&#xff0c;机械臂在工业生产、物流仓储、医疗护理等领域得到了广泛应用。机械臂抓取技术作为机械臂的核心功能之一&a…

C语言进阶---程序环境和预处理

C语言进阶---程序环境和预处理 前言一、程序的翻译环境、执行环境二、详解&#xff1a;C语言程序的编译链接三、预定义符号介绍四、预处理指令 #define五、宏和函数的对比&#xff08;思维导图&#xff09;六、命令定义、预处理指令 #include #undef1.命名约定2.命令行定义 七、…

撤销git本地修改(万能)

使用 git reflog 和 git reset 命令。 git reflog 命令可以查看 Git 中所有的提交历史和分支移动情况&#xff0c;包括已经删除的提交。 您可以通过这个命令找到git操作时间线上的某一个节点&#xff0c;也就是git提交快照的Hash值。 假设您要回滚的提交的哈希值是 e9769f5…

轻松实现时间录入自由!如何在Microsoft Word中轻松插入格式化的日期和时间

在文档中插入当前日期和时间有几个原因。你可能希望将其插入信函或页眉或页脚中。无论是什么原因&#xff0c;Word都可以轻松地将日期和时间插入文档。 如果希望在打开或打印文档时自动更新日期和时间&#xff0c;可以将其作为自动更新的字段插入。该字段也可以随时手动更新。…

【虚拟机】桥接模式下访问外网

目录 一、桥接模式的作用原理 二、配置桥接模式实现外网访问 1、设置 VMnet0 要桥接的网卡 2、虚拟机选择 VMnet0 网卡 3、手动配置虚拟机IP 一、桥接模式的作用原理 桥接模式相当于在当前局域网里创立了一个单独的主机&#xff0c;该主机桥接到宿主主机的网卡&#xff0…

TPU编程竞赛|Stable Diffusion大模型巅峰对决,第五届全球校园人工智能算法精英赛正式启动!

目录 赛题介绍 赛题背景 赛题任务 赛程安排 评分机制 奖项设置 近日&#xff0c;2023第五届全球校园人工智能算法精英赛正式开启报名。作为赛题合作方&#xff0c;算丰承办了“算法专项赛”赛道&#xff0c;提供赛题「面向Stable Diffusion的图像提示语优化」&#xff0c…

ORB-SLAM2运行自己的数据集进行定位教程

ORB-SLAM2只做定位的话&#xff0c;精度还是挺准确的&#xff0c;所以用单目摄像头录制视频&#xff0c;制作自己的数据集跑一下&#xff0c;看看定位精度&#xff0c;将过程加以记录。 文章目录 一、系统配置二、制作数据集1、脚本编写2、配置文件编写3、录制视频素材&#x…

亚马逊、速卖通卖家旺季攻略:抢占旺季销售先机!

随着11月的到来&#xff0c;海外跨境电商又将迎来一年中最重要的营销季节。 11月营销节点 1. 黑色星期五&#xff08;Black Friday&#xff09;&#xff1a;11月的第四个星期五 作为西方传统节日&#xff0c;黑色星期五通常位于11月第四个星期五&#xff0c;是购物狂欢的黄金…

LeetCode刷题笔记【35】:动态规划专题-7(爬楼梯、零钱兑换、完全平方数)

文章目录 前置知识70. 爬楼梯 &#xff08;进阶&#xff09;题目描述解题思路代码 322. 零钱兑换题目描述解题思路代码 279.完全平方数题目描述解题思路代码 总结 前置知识 今天的三道题都聚焦完全背包问题, 关于完全背包, 基础性的思路可以参考上一篇文章 本文的很多操作就是…

4.Docker 搭建 redis6

1.下载redis docker pull redis:6.2.62.创建需要挂载的宿主机文件夹 mkdir -p /data/redis/conf mkdir -p /data/redis/data3.配置redis 切换到/data/redis/conf文件夹下&#xff0c;创建redis.conf,复制redis.conf配置文件内容到redis.conf文件中&#xff0c;然后按下键盘 …

多层包的java程序使用命令行编译、运行、打包

对于没有包层级的java程序&#xff0c;用命令行进行编译、运行、打包很简单。对于多层级包的java程序会有所不同。以如下程序为例 package HeadFirstJava.chapter01.guessGame;public class GameLanucher {public static void main(String[] args) {GuessGame game new Guess…