【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命令

  • 在进行运行过程时执行的指令,不参与镜像的构建。
相关推荐
zhenshanrenhao42 分钟前
#买硬盘欲安装k8s记
云原生·容器·kubernetes
楼田莉子44 分钟前
C++算法题目分享:二叉搜索树相关的习题
数据结构·c++·学习·算法·leetcode·面试
奶黄小甜包2 小时前
C语言零基础第18讲:自定义类型—结构体
c语言·数据结构·笔记·学习
tb_first3 小时前
k8sday09
linux·云原生·容器·kubernetes
rannn_1114 小时前
【MySQL学习|黑马笔记|Day7】触发器和锁(全局锁、表级锁、行级锁、)
笔记·后端·学习·mysql
天上掉下来个程小白5 小时前
Docker-14.项目部署-DockerCompose
运维·docker·微服务·容器
喜欢吃燃面5 小时前
C++算法竞赛:位运算
开发语言·c++·学习·算法
传奇开心果编程5 小时前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化
星霜笔记9 小时前
Docker 部署 MariaDB+phpMyAdmin+Nextcloud 完整教程
运维·数据库·docker·容器·mariadb
数据知道11 小时前
容器化部署:用Docker封装机器翻译模型与服务详解
docker·容器·机器翻译