Docker学习笔记
碎碎念
最近再学云原生技术与应用,之前没接触过,所以打算从Docker开始好好入个门。文本仅涉及Docker相关的基础概念,Docker如何理解、有什么用之类;最后通过虚拟机中的Ubuntu下载Docker,实际操作熟悉Docker常用的一些命令。
背景知识
对于我们计算机的学生来说,90%的难题大概都在安装软件、配置环境上;并且如果中途出差错、自己装好了想要帮同学装或者换电脑了,所有的一切都要重新来一遍。
要是各种环境配置也能存在软件的安装包中该多好啊,这样我们只要把安装包复制过来,安装完毕后所有的环境配置就像软件功能一样带好了。
虚拟机(Virtual Machine)就是一种解决方式,它可以带环境安装。但是由于虚拟机是操作系统级别的,VM有一些众所周知的毛病:比如需要独占部分内存和硬盘空间;并且由于虚拟机是让我们在一种系统中例如Windows运行其他的系统例如Linux,操作系统的启动过程还是需要较长时间的。
因此Linux容器这种虚拟化技术就成了新的更好的选择,它是一种特殊的被隔离的进程,通过操作系统层的虚拟化实现隔离,能接触到的资源都是虚拟的,由于是进程级别的,所以不存在类似虚拟机(OS级别)的问题(额外的操作系统开销),能够很好的提高资源利用率,并且提升诸如I/O等方面的性能。
Docker是什么
Docker是Linux容器的一种封装,Go语言开发、基于轻量级虚拟化技术的容器引擎项目,遵从Apache 2.0协议开源。
VM 和 Container的对比:
Docker有什么用
Docker可以在容器内部快速自动化部署应用,并可以通过内核虚拟化技术 (namespaces及cgroups等)来提供容器的资源隔离与安全保障等。
- 更低的资源损耗
- 更快的启动速度
- 更好的应用耦合
- 更强的弹性伸缩
Docker原理
取消了客户端操作系统层;
Docker有三个基本元素
- Docker Containers容器
- Docker Images容器镜像
- DockerFile文件指令集
Docker Container负责应用程序的运行,包括操作系统、用户添加的文件以及元数据;Docker根据image文件生成容器的实例;Docker根据Dockerfile生成二进制的image文件。
Docker核心组件
Docker实践
Install Docker Engine on Ubuntu
跟着官方文档安装,不管是Wins, Mac还是Linux,都有对应的文档,我的系统版本为:
(base) zou@zou-virtual-machine:/proc$ cat version
Linux version 4.15.0-142-generic (buildd@lgw01-amd64-036) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #146-Ubuntu SMP Tue Apr 13 01:11:19 UTC 2021
使用官方安装脚本一键安装:
(base) zou@zou-virtual-machine:~$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# Executing docker install script, commit: 93d2499759296ac1f9c510605fef85052a2c32be
+ sudo -E sh -c 'apt-get update -qq >/dev/null'
W: Target Sources (restricted/source/Sources) is configured multiple times in /etc/apt/sources.list:2 and /etc/apt/sources.list:7
W: Target Sources (restricted/source/Sources) is configured multiple times in /etc/apt/sources.list:2 and /etc/apt/sources.list:7
+ sudo -E sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null'
+ sudo -E sh -c 'curl -fsSL "https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg" | gpg --dearmor --yes -o /usr/share/keyrings/docker-archive-keyring.gpg'
gpg: WARNING: unsafe ownership on homedir '/home/zou/.gnupg'
+ sudo -E sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bion