Docker实战:基础镜像

1. OS Docker

目前常用的Linux发行版主要包括Debian/Ubuntu系列和CentOS/Fedora系列。前者以自带软件包版本较新而出名;后者则宣称运行更稳定一些。

本节将介绍如何使用BusyBox、Alpine、Ubuntu、CentOS等操作系统。

1.1 BusyBox

BusyBox的磁盘大小在1~5MB,空间非常节省。它是在GNU GPL许可下发布的开源软件,享有"嵌入式Linux的瑞士军刀"美誉。它将许多常见UNIX实用程序的微型版本组合成一个小型可执行文件。它可以替代GNU fileutils、shellutils等工具包中的大多数使用程序。虽然BusyBox中的实用程序通常比它们的全功能GNU"表亲"有更少的选择,但其所包含的选项提供了预期的功能,并且行为与GNU对应的程序非常相似。BusyBox为小型或嵌入式系统提供了相当完整的环境。

1.2 Alpine

Alpine Linux是一个围绕Musl LibC和BusyBox构建的Linux发行版。该镜像的大小仅为5MB,可以访问比其他基于BusyBox的镜像更完整的软件包存储。这使得Alpine Linux成为开发应用程序甚至生产应用程序的绝佳基础镜像。其运行命令如下:

bash 复制代码
$ docker run alpine echo alpine

Alpine Linux可以像使用任何其他基础镜像一样使用:

bash 复制代码
FROM alpine:3.14
RUN apk add --no-cache mysql-client
ENTRYPOINT ["mysql"]

此示例的虚拟镜像大小约为36.8MB,与最小的Ubuntu大约145MB的虚拟镜像大小相比,小很多。

bash 复制代码
FRON ubuntu:20.04
RUN apt-get update \
	&& apt-get install -y --no-install-recommands mysql-client \
	&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["mysql"]

1.3 Ubuntu

Ubuntu是一个基于Debian的Linux操作系统,使用场景广阔,从桌面应用到云应用,再到物联网场景的应用。它是世界上跨公有云OpenStack云最受欢迎的操作系统,也是容器的头号平台,从Docker到Kubernetes再到LXD,Ubuntu可以大规模运行用户的容器。

快速运行Ubuntu的命令如下:

bash 复制代码
$ docker run -it ubuntu:22.04 /bin/bash

1.4 CentOS

CentOS Linux是一个社区支持的发行版,源自红帽公司免费向公众提供的资源,适用于红帽企业Linux(RHEL)。因此,CentOS linux的目标是在功能上与RHEL兼容。

安装运行CentOS的命令如下:

bash 复制代码
$ docker run -it centos bash

2. Web服务应用

本节介绍如何使用Docker来运行常见的Web服务器(Apache、Nginx)

2.1 Apache

Apache HTTP服务器俗称Apache,是一个Web服务器应用程序,此镜像仅包含具有上游默认值的Apache httpd。没有安装php,但扩展不难。

运行一个简单的HTML服务器,在项目中创建一个Dockerfile:

bash 复制代码
FROM httpd:2.4

2.2 Nginx

Nginx(发音engine-x)适用于HTTP、HTTPS、SMTP、POP3和IMAP的开源反向代理服务器,也是负载平衡器、HTTP缓存和Web服务器。

Docker直接运行Nginx容器:

bash 复制代码
$ docker run -d -p 8081:80 --name webserver nginx

3. 数据库应用

3.1 MySQL

bash 复制代码
$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 mysql
$ docker exec -it mysql-test bash
bash-4.4# mysql -u root -p
...
mysql>

3.2 Redis

bash 复制代码
$ docker run -itd --name redis-test -p 6379:6379 redis
$ docker exec -it redis-test bash
root@f952a431366f:/data# redis-cli
127.0.0.1:6379> set test 1
OK
127.0.0.1:6379>

3.3 MongoDB

bash 复制代码
$ docker run -itd --name mongo -p 27017:27017 mongo --auth
$ docker exec -it mongo mongosh admin

4. 编程应用

4.1 Java

bash 复制代码
FORM java:7

4.2 Python

bash 复制代码
FROM python:3
相关推荐
SkyWalking中文站14 小时前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
程序员老赵16 小时前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵18 小时前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位18 小时前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
小猿姐1 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
SkyWalking中文站2 天前
认识 Horizon UI · 5/17:3D 基础设施地图
运维·监控·自动化运维
SkyWalking中文站3 天前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控
雪梨酱QAQ3 天前
Kubeneters HA Cluster部署
运维
lichenyang4533 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4533 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器