【Docker学习记录】

Docker学习记录

目录

  • [1. Windows上使用wsl](#1. Windows上使用wsl)
    • [1.1 安装docker后遇到的一些疑惑](#1.1 安装docker后遇到的一些疑惑)
    • [1.2. wsl的一些相关命令](#1.2. wsl的一些相关命令)
    • [1.3. 补一点,wsl的作用](#1.3. 补一点,wsl的作用)
  • [2. docker一些常用的命令](#2. docker一些常用的命令)
    • [2.1 构建docker镜像](#2.1 构建docker镜像)
    • [2.2 运行镜像](#2.2 运行镜像)
  • [3. Dockerfile的编写](#3. Dockerfile的编写)
    • [3.0 docker的一些概念](#3.0 docker的一些概念)
      • [3.0.1 容器的分层](#3.0.1 容器的分层)
      • [3.0.2 COPY-ON-WRITE](#3.0.2 COPY-ON-WRITE)
    • [3.1 FROM命令](#3.1 FROM命令)
    • [3.2 ENV命令](#3.2 ENV命令)
    • [3.3 ADD命令](#3.3 ADD命令)
    • [3.4 COPY命令](#3.4 COPY命令)
    • [3.5 RUN命令](#3.5 RUN命令)
    • [3.6 CMD命令](#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的一些相关命令

shell 复制代码
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的一应用程序,不用进行任何修改,不需要传统的的虚拟机或者双系统的大量资源消耗(可能电脑太拉了,有时候电脑虚拟机开了直接卡死)。

2. docker一些常用的命令

2.1 构建docker镜像

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

2.2 运行镜像

shell 复制代码
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.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命令

  • 在进行运行过程时执行的指令,不参与镜像的构建。
相关推荐
皮蛋sol周12 分钟前
嵌入式学习C语言(八)二维数组及排序算法
c语言·学习·算法·排序算法
Jiangnan_Cai13 分钟前
Linux 系统 docker 部署 Dify
linux·docker·大模型·dify
LuckyLay15 分钟前
使用 Docker 搭建 Rust Web 应用开发环境——AI教你学Docker
前端·docker·rust
人生游戏牛马NPC1号1 小时前
学习 Flutter (一)
android·学习·flutter
Aczone282 小时前
嵌入式 数据结构学习 (六) 树、哈希表与内核链表
数据结构·学习·算法
想成为大佬的每一天2 小时前
Linux驱动学习day22(interrupt子系统)
学习
Chef_Chen2 小时前
从0开始学习R语言--Day43--Wald检验
学习
真的想上岸啊2 小时前
学习C++、QT---21(QT中QFile库的QFile读取文件、写入文件的讲解)
c++·qt·学习
之歆2 小时前
Python-正则表达式-信息提取-滑动窗口-数据分发-文件加载及分析器-浏览器分析-学习笔记
python·学习·正则表达式
rui锐rui2 小时前
大数据学习7:Azkaban调度器
学习