当前位置: 首页 > news >正文

【Docker学习记录】

Docker学习记录

目录

  • 1. Windows上使用wsl
    • 1.1 安装docker后遇到的一些疑惑
    • 1.2 wsl的一些相关命令
    • 1.3 补一点,wsl的作用
    • 1.4 docker engine拉不到镜像的问题(Windows上)
  • 2. docker一些常用的命令
    • 2.1 构建docker镜像
    • 2.2 运行镜像
  • 3. Dockerfile的编写
    • 3.0 docker的一些概念
      • 3.0.1 容器的分层
      • 3.0.2 COPY-ON-WRITE
      • 3.0.3 如何使用已有的操作系统制作镜像(这是一个非常常用的方法)
    • 3.1 FROM命令
    • 3.2 ENV命令
    • 3.3 ADD命令
    • 3.4 COPY命令
    • 3.5 RUN命令
    • 3.6 CMD命令

1. Windows上使用wsl

1.1 安装docker后遇到的一些疑惑

  • 使用wsl -l命令出现了docker-desktop和docker-desktop-data,这两个发行版的关系是什么。在阅读了stackoverflow上一位大佬的回答后,了解到docker-desktop-data是docker-desktop的存储系统。

docker-desktop负责docker的启动(基本替代了Hyper-V)
docker-desktop-data负责数据的存储(替代了VHD)
(注:distro 指发行版)

链接:What is the docker-desktop-data distro used for when running docker desktop with the WSL 2 engine

1.2 wsl的一些相关命令

wsl -l -o # [wsl --list --online]列出所有可以在线安装的Linux发行版
wsl -l -v # [wsl --list --verbose]列出发行版本号
wsl --version # 查看版本号
wsl --help # 记住这个就不慌

1.3 补一点,wsl的作用

  • wsl是【windows for Linux】的缩写,中文翻译为适用于Linux的Windows子系统,可以安装Linux的发新版本,直接在Windows上使用Linux的一应用程序,不用进行任何修改,不需要传统的的虚拟机或者双系统的大量资源消耗(可能电脑太拉了,有时候电脑虚拟机开了直接卡死)。

1.4 docker engine拉不到镜像的问题(Windows上)

  • 这个问题是非常恼火的,全网普遍的答案的镜像源我几乎都试了,但没有成功的。后来在B站上看到一位up的视频,里面介绍了当前比较靠谱的两个镜像源,可以在配置文件中添加一下。
https://docker.m.daoclould.io
https://docker.lpanel.live

2. docker一些常用的命令

2.1 构建docker镜像

docker build -t name:version path # 在path下,使用Dockerfile创建一个名为name版本号为version的镜像

2.2 运行镜像

docker run --name=name imageName:version # 使用imageName镜像运行一个名为name的容器# 这个那么不指定的话,系统会自动分配一个奇奇怪怪的名字
docker run -it --name=name imageName:version /bin/bash # -it表示使用交互式终端运行,后面指定/bin/bash# 如果Dockerfile中指定了CMD命令的话,以这种方式进入不会执行CMD命令

3. Dockerfile的编写

3.0 docker的一些概念

3.0.1 容器的分层

  • 一个运行的容器可以分为两层,一个是最上层的容器层,另一个是底层的镜像层。容器层是可以进行读写的,镜像层是只读的。

3.0.2 COPY-ON-WRITE

  • 容器具有写时复制的特性,也就是说更改镜像中的文件时,会在容器层创建一个该文件的副本,并修改改副本。

3.0.3 如何使用已有的操作系统制作镜像(这是一个非常常用的方法)

  1. 进入根目录,将根目录下的所需文件夹进行打包
  2. 使用.tar文件制作镜像
tar -cvpf /out/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot --exclude=out .   # 最后的“.”是指当前目录,--exclude指定了不包含的目录,这里需要依据自己的需要进行排除。这个out是自己在根目录下建立的。docker import /out/system.tar linux:10.1 # 将tar文件制作成镜像linux:10.1(名称随意)

3.1 FROM命令

  • 也就是说以Dockerfile创建的容器必须依赖于一个已存在的镜像,但也可以使用FROM scratch,表示使用一个空白的虚拟镜像进行创建。这种方式创建的镜像,运行后使用的是host的内核。

3.2 ENV命令

  • 指定环境变量,k-v形式ENV key=value,在Dockerfile中的其他位置想要使用环境变量的时候使用该形式{key}

3.3 ADD命令

  • 添加文件,可以添加压缩文件到镜像中,添加后直接以解压形式在镜像中存在。

3.4 COPY命令

  • 将主机上的文件拷贝到镜像中。

3.5 RUN命令

  • 在镜像构建过程中执行的指令。

3.6 CMD命令

  • 在进行运行过程时执行的指令,不参与镜像的构建。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于ESP32的掌上网关智能家居控制设备:集成MQTT、后端Node.js、MongoDB、React(代码示例)
  • IntelliJ IDEA 打包教程
  • marker - PDF 转 markdown
  • 基于STM32的智能家居灯光控制系统
  • 伯克利Linux系统管理: 脚本编写学习 课堂与实验(系统简洁保姆级学习)
  • Python爬虫技术 第32节 最佳实践和常见问题
  • 函数指针数组
  • Spring快速学习
  • 基于Python的脑电图(EEG)信号分析(4)
  • 《程序猿入职必会(9) · 用代码生成器快速开发》
  • 【JavaScript】详解数组方法 fill()
  • 【已解决】VSCode连接Linux云服务器,代码写着写着服务器突然挂了是怎么回事?
  • 【爬虫实战】利用代理爬取电商数据
  • 【Python】Django Web 框架
  • STM32Cubemxide使用freertos的消息队列(QUEUE)
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【css3】浏览器内核及其兼容性
  • Android框架之Volley
  • CSS实用技巧干货
  • golang中接口赋值与方法集
  • HTML5新特性总结
  • input实现文字超出省略号功能
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • LeetCode29.两数相除 JavaScript
  • Python实现BT种子转化为磁力链接【实战】
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 创建一个Struts2项目maven 方式
  • 解析带emoji和链接的聊天系统消息
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 排序算法之--选择排序
  • 前端存储 - localStorage
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端学习笔记之观察者模式
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 使用Gradle第一次构建Java程序
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微信支付JSAPI,实测!终极方案
  • 译米田引理
  • 正则表达式小结
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (8)STL算法之替换
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (day18) leetcode 204.计数质数
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm码农论坛 毕业设计 231126
  • (生成器)yield与(迭代器)generator
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (轉貼) UML中文FAQ (OO) (UML)
  • .chm格式文件如何阅读
  • .cn根服务器被攻击之后