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 如何使用已有的操作系统制作镜像(这是一个非常常用的方法)
- 进入根目录,将根目录下的所需文件夹进行打包
- 使用.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命令
- 在进行运行过程时执行的指令,不参与镜像的构建。