一、Docker
2024年,很多程序员还不知道Docker是个什么东东。因为Docker这个东东,大多数程序员用不到,尤其是前端程序员,与它打交道的更多是运维人员。但现在有一些小公司,要求后端程序员也要了解Docker的一些知识。各大招聘网站,也有专门负责Docker开发的职位。因此,有必要向大家普及一下Docker。
Docker,是开源的应用容器引擎,由Go语言开发Github地址:(https://github.com/docker/docker-ce)
它的英文翻译过来就是“码头工人”的意思。这个词来源于Docker的核心功能,也即是容器化技术。它类似于传统的码头工人的工作,即将货物(应用和其依赖)装入集装箱(容器)中,然后运送到不同的地方(不同的计算环境)。Docker 这个名字反映了其将应用程序及其环境和依赖打包成可移植容器的能力。
我们稍微会用电脑的人都会知道虚拟机,比如VMware、VirtualBox等。它可以在我们电脑中,模拟运行任意多个操作系统及其需要的硬件,比如在windows下模拟linux或mac等操作系统。运行一整套系统,需要消耗的资源也是非常多的,占用几百M,上G的硬盘容量都是正常的。
而Docker不同于虚拟机。它支持虚拟化,却不需要安装必备软件之外的任何环境。这么说比较抽象,举个例子就明白了。我是做游戏的,就拿游戏服务器来说吧。游戏服务器一般部署在linux上,但开发是在windows上。linux和windows很多环境不兼容,在windows上安装的软件环境,在linux上还要用另一种方式去安装,增加了很多不必要的工作。假如使用Docker,只要编写一个yaml文本文件,非常简单的一条命令就能在windows和linux上使用同一套环境(后面会进行实战,一键打造个人博客)。以下表格对比了虚拟机和Docker的不同。但其实两者没有可比性。两者都有一定的适应场景。
特性 | 虚拟机 | Docker |
---|---|---|
跨平台 | 通常只可在桌面系统中运行,如windows/mac | 几乎可以在任何系统运行 |
性能 | 内存占用多,性能损耗大,安装一整套系统 | 内存占用小,只安装必备环境 |
自动化 | 需要手动安装所有东西 | 一个命令就可以部署所需环境 |
适用场景 | 模拟系统环境、学习。比如windows上安装和学习linux | 实际应用部署 |
二、Docker重要的三个功能:打包、分发、部署
1.打包
Docker通过Dockerfile文件可以一键打包。相当于把软件依赖的环境、第三方库、软件整合到一个安装包中。
对应于命令:docker build
2.分发
Docker可以将整合好的安装包上传到镜像仓库,供其他人从镜像仓库下载。
对应于命令:docker push/pull
3.部署
Docker可以将安装包快速运行于Docker的管理中,可以在windows、linux、mac上运行,而不需要重新配置环境。
对应于命令:docker run
三、Docker三项基本概念
1.镜像(image)
通过docker build
相关命令打好的安装包就是一个镜像(image),可以上传镜像仓库,可以从镜像仓库下载。
2.容器(container)
容器(container)可以认为是镜像的实例。通过docker run
命令,会根据一个镜像生成一个容器。docker的管理环境中运行着的是容器,而不是镜像。
3.卷(volume)
卷(volume)相当于容器和宿主机之间的桥梁,会把硬盘上一块区域映射到容器中,使得容器和宿主机可以共享数据。涉及到数据库、配置文件、代码等需要改动的数据都可以使用卷来与容器进行关联。
四、Docker部署wordpress博客网站
以下的文件是一个部署wordpress博客网站的Docker-Compose的yaml文件:
#docker-compose.yaml
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
在这个文件的文件夹下只需要使用一条命令:
docker compose up -d
就可以直接安装一个wordpress个人网站。
使用命令
docker ps
即可看到我们的wordpress以及它依赖的mysql容器已经启动了。
阿里云里设置好组策略,开放端口,即可通过浏览器访问wordpress站点。
http://47.94.87.11:8080/ 是我的测试站点。主页如图所示:
是不是非常简单?
1 thought on “【Docker学习】Docker是个什么东东?”