使用Docker容器化技术,可将应用及其依赖打包为轻量级镜像,实现快速部署、环境隔离、易扩展的目标。以下是具体步骤:
在CentOS系统上,首先需要安装Docker引擎,用于构建和运行容器。
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-enginesudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.iosudo systemctl start docker && sudo systemctl enable dockersudo docker run hello-world(若输出“Hello from Docker!”则表示成功)。Dockerfile是镜像构建的核心脚本,需根据应用类型定制。以下是常见场景的示例:
FROM centos:7
ENV DEBIAN_FRONTEND=noninteractive # 避免交互式配置提示
RUN yum update -y && \
yum install -y httpd && \ # 安装Apache(以Nginx为例可替换为nginx包)
yum clean all # 清理缓存
COPY ./html /var/www/html # 将本地网页文件复制到容器默认web目录
EXPOSE 80 # 暴露80端口(HTTP)
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] # 启动Apache服务(前台运行)
FROM centos:7
ENV PYTHONUNBUFFERED=1 # 让Python输出实时显示
RUN yum install -y python3 python3-pip && \
yum clean all
WORKDIR /app # 设置工作目录
COPY . /app # 复制应用代码到容器
RUN pip3 install --no-cache-dir -r requirements.txt # 安装依赖
EXPOSE 5000 # 暴露应用端口
CMD ["python3", "app.py"] # 启动应用
FROM centos:7
RUN yum -y update && \
yum -y install vim git gcc-c++ wget && \
wget -P /root/ https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz && \
tar -zxvf /root/go1.14.1.linux-amd64.tar.gz -C /usr/local && \
echo export PATH=$PATH:/usr/local/go/bin >> /etc/profile && \
source /etc/profile && \
go version && \
echo "source /etc/profile" >> /root/.bashrc && \
go env -w GOPROXY=https://goproxy.cn,direct && \
go env -w GO111MODULE=on # 配置Go环境(含代理)
WORKDIR /app
COPY . .
RUN go build -o main . # 编译Go程序
CMD ["./main"] # 运行程序
```。
在Dockerfile所在目录,执行以下命令构建镜像(-t指定镜像名称,.表示当前目录):
docker build -t my-centos-app . # 如my-centos-webserver、my-python-app
构建过程中,Docker会依次执行Dockerfile中的指令,最终生成可复用的镜像。
通过docker run命令启动容器,将镜像转化为运行中的应用实例:
docker run -d --name my-running-app -p 8080:80 my-centos-app # 以my-centos-app镜像为例
-d:后台运行容器;--name:指定容器名称(便于管理);-p:将宿主机的8080端口映射到容器的80端口(外部通过宿主机IP:8080访问);my-centos-app:镜像名称。docker ps(查看运行中的容器,确认状态为“Up”);docker logs my-running-app(查看容器输出,排查启动错误);http://<宿主机IP>:8080(如http://127.0.0.1:8080),若看到应用页面则表示部署成功。使用Docker Compose管理多容器:若应用包含多个服务(如Web+数据库),可编写docker-compose.yml文件,一键启动所有服务:
version: '3'
services:
web:
build: . # 构建当前目录的Dockerfile
ports:
- "8080:80" # Web服务端口映射
db:
image: postgres # 使用官方PostgreSQL镜像
environment:
POSTGRES_PASSWORD: example # 数据库密码
启动命令:docker-compose up -d(后台运行)。
配置国内镜像源:修改Docker守护进程配置(/etc/docker/daemon.json),添加国内镜像加速:
{ "registry-mirrors": ["http://hub-mirror.c.163.com", "https://registry.docker-cn.com"] }
重启Docker生效:sudo systemctl restart docker(提升镜像下载速度)。
通过以上步骤,可实现CentOS镜像的快速、标准化应用部署,适用于Web服务、后端应用、数据库等多种场景。