Rocky Linux 9 使用Podman构建并运行基于Dockerfile的容器化基础应用

基于Dockerfile的容器镜像构建与容器化应用部署,这是在现代DevOps流程中实现应用程序容器化的一种标准化实践。


编写 Dockerfile 文本文件

# 使用 Docker Hub 的官方镜像库中指定的Rocky Linux 9 镜像作为基础镜像构建封装
FROM docker.io/library/rockylinux:9 # 这个镜像是早期pull下来留存的,目前很多镜像站都已中止对Docker Hub仓库的镜像访问,访问不到的建议尝试使用其他仍在服务的镜像源

# 更新系统包并安装EPEL仓库
RUN dnf update -y && \
    dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

# 修改DNF源为阿里云镜像源
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://dl.rockylinux.org/\$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
         -i.bak /etc/yum.repos.d/rocky-*.repo && \
    sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://dl.rockylinux.org/\$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
         -i.bak /etc/yum.repos.d/rocky*.repo

# 容器内部署需要的常规工具和库,这里拆分为多行避免命令过长导致未知错误
RUN dnf install -y \
    vim net-tools wget policycoreutils-python-utils setroubleshoot bash-completion \
    chrony tar unzip zip lrzsz nmap git telnet iftop tcpdump screen libffi-devel \
    gcc* bzip2 lsof bind-utils fio logrotate xfsdump tree extundelete telnet-server.x86_64 telnet.x86_64 \
    ansible expect net-snmp net-snmp-utils \
    iftop tcpdump rsync screen gcc gcc-c++ \
    bash-completion nfs-utils psmisc openssh-clients vsftpd ftp yum-utils rsync \
    bzip2 perf smartmontools nethogs java-1.8.0-openjdk.x86_64 \
    xfsdump tree extundelete zlib* expect openssl-devel lsof bind-utils fio logrotate python-pip \
    zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel xz-devel gcc kernel-devel \
    make htop libffi-devel python-devel libffi libffi-devel ntfsprogs sysstat rear sshfs dos2unix \
    tmux dosfstools cifs-utils.x86_64 grub* s-nail sendmail dnf-automatic certbot python3-certbot-nginx \
    && dnf clean all

# 部署dnf源中目前最新版本的Python3及pip3
RUN dnf install -y python3 python3-pip && \
    python3 -m pip install --upgrade pip

# 创建指定的数据目录结构
RUN mkdir -p /data/tmp /data/scripts /data/python /data/richard /data/app/ /data/backups

# 设置工作目录
WORKDIR /data/

构建完成后,运行新创建的镜像,并设置相应的数据卷映射

[root@dev-rocky9-shanghai-area0 rockylinux]# podman run -itd --hostname rockylinux9.4_v1 -v /data/app/podman/rockylinux:/data/ --name rockylinux9.4_v1 8081b2db1c95 /bin/bash 

进入名为rockylinux9.4_v1 的容器进行操作

[root@dev-rocky9-shanghai-area0 ~]# podman exec -it rockylinux9.4_v1 /bin/bash
[root@rockylinux9_v1 /]# ls /data/
app  packages  python  richard  scripts  tmp
上一篇
下一篇