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
相关推荐
PH = 725 分钟前
K8S集群部署Dashboard
云原生·容器·kubernetes
Yang961135 分钟前
12 小时续航 + 1.5kg 便携!鼎讯信通 OTDR 适配复杂野外运维
运维·网络
身如柳絮随风扬36 分钟前
Nginx 核心配置与实战解析:从入门到进阶
运维·nginx
xiaoduo AI1 小时前
智能客服机器人能精准预判用户疑问提前主动应答吗?能大幅缩短客户咨询沟通时长吗?
运维·服务器·机器人
勤劳的进取家1 小时前
服务器文件交互方式
运维·服务器·microsoft
yyuuuzz1 小时前
aws亚马逊云上部署常见问题梳理
运维·服务器·网络·数据库·云计算·aws
优化Henry1 小时前
5G站点光链路降级告警排查与处理——AAS光端口隐性故障定位
运维·网络·5g·信息与通信
wanhengidc2 小时前
算力服务器的优势都有哪些?
大数据·运维·服务器·网络·人工智能·安全·智能手机
bukeyiwanshui2 小时前
20260508 docker教案
运维·docker·容器
King's King2 小时前
自动化立体仓库项目立项申请报告
运维·自动化