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
相关推荐
我是谁??1 分钟前
Ubuntu22.04更换清华源
linux·运维·服务器
Shell运维手记1 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
朴马丁1 小时前
国际与国产PLM在精细化工赛道的布局:2026年主要厂商技术特色
大数据·运维·人工智能·流程行业plm·化工新材料
Elastic 中国社区官方博客2 小时前
Elasticsearch:使用 AI Agent 来创建 workflow
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·全文检索
测试运维日常笔记2 小时前
Linux系统安装配置TigerVNC服务器完整指南
linux·运维·服务器
喜欢的名字被抢了3 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
雾时之林3 小时前
Linux----cron定时服务
linux·运维·服务器
壹玖玖肆4 小时前
医院后勤智能运维系统实用性评测
运维
apgk14 小时前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq
fatcoder4 小时前
玩转Docker 06 — 容器网络
前端·后端·docker