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
相关推荐
绵绵细雨中的乡音11 分钟前
Linux进程学习【基本认知】
linux·运维·学习
matrixlzp22 分钟前
K8S Service 原理、案例
云原生·容器·kubernetes
GnixAij1 小时前
Docker SSH端口转发
docker·ssh
珹洺1 小时前
Linux操作系统从入门到实战(三)Linux基础指令(上)
linux·运维·服务器
剁椒排骨1 小时前
win11什么都不动之后一段时间黑屏桌面无法显示,但鼠标仍可移动,得要熄屏之后才能进入的四种解决方法
运维·windows·经验分享·计算机外设·win11·win10
angushine1 小时前
让Docker端口映射受Firewall管理而非iptables
运维·docker·容器
归寻太乙2 小时前
Linux环境变量
linux·运维·服务器
m0Java门徒2 小时前
面向对象编程核心:封装、继承、多态与 static 关键字深度解析
java·运维·开发语言·intellij-idea·idea
Sapphire~2 小时前
Linux-06 ubuntu 系统截图软件使用简单记录
linux·运维·ubuntu
高级IT技术专家secops9982 小时前
在统信UOS/麒麟Kylin OS操作系统中配置APT和GIT代理
运维·服务器·git·系统安全·kylin