1403 字
7 分钟
podman 创建镜像

podman 创建镜像#

一、dockerfile 语法#

  1. FROM:指定基础镜像。构建过程从此镜像开始。例如:
FROM ubuntu:18.04

这将使用Ubuntu 18.04版本的镜像作为构建过程的基础。

  1. LABEL:添加元数据到镜像,这些元数据可以包含作者、版本等信息。例如:
LABEL maintainer="John Doe <john.doe@example.com>"

这将添加一个标签,其中包含维护者的信息。

  1. RUN:在构建过程中执行命令。这些命令会在镜像的上下文中执行,并创建新的镜像层。例如:
Terminal window
RUN apt-get update && apt-get install -y \
build-essential \
wget \
python3

这将使用apt-get update和apt-get install命令安装一些软件包。

  1. CMD:指定容器启动时默认执行的命令。这些命令会被加入到容器启动时的命令中。例如:
CMD ["python3", "./app.py"]

这将使容器在启动时执行python3 ./app.py命令。

  1. ENTRYPOINT:指定容器启动时执行的命令。这些命令会替换掉用户指定的命令。例如:
ENTRYPOINT ["python3", "./app.py"]

这将使容器在启动时执行python3 ./app.py命令,即使用户指定其他命令,这个命令也会被替换掉。

  1. EXPOSE:声明容器监听的端口。这些端口会在启动容器时自动映射到宿主机的端口。例如:
EXPOSE 8080

这将使容器在启动时监听端口8080。

  1. VOLUME:指定容器内的目录作为卷,用于持久化数据。例如:
VOLUME ["/data"]

这将使容器内的/data目录作为卷,用于持久化数据。

  1. ENV:设置环境变量。这些环境变量可以在构建过程中使用,也可以在容器运行时使用。例如:
ENV NAME World

这将设置一个名为NAME的环境变量,其值为World。

  1. USER:指定构建过程中使用的用户。例如:
USER root

这将使用root用户进行构建。

  1. WORKDIR:指定构建过程中的工作目录。例如:
WORKDIR /app
这将设置工作目录为`/app`。

11. COPY:将文件或目录从宿主机复制到镜像中。例如:

COPY . /app
这将复制当前目录下的所有内容到镜像中的`/app`目录。

12. ADD:与COPY类似,但它可以自动解压压缩文件。例如:

ADD ./path/to/source.tar.gz /app/path/to/destination/
这将自动解压`./path/to/source.tar.gz`文件到`/app/path/to/destination/`目录。

13. ONBUILD:指定当构建一个以当前镜像为基础的镜像时应该执行的命令。例如:

ONBUILD ADD . /app
这将添加当前目录下的所有内容到以当前镜像为基础的镜像中的`/app`目录。

14. STOPSIGNAL:指定在容器停止时发送的信号。例如:

STOPSIGNAL S

以下是一个简单的Dockerfile示例:

FROM ubuntu:18.04
RUN apt-get update && apt-get install -y \
build-essential \
wget \
python3
WORKDIR /app
COPY . /app
RUN pip3 install -r requirements.txt
CMD ["python3", "./app.py"]

这个Dockerfile构建了一个基于Ubuntu 18.04的基础镜像,安装了构建必需的软件包,复制了应用程序代码,并安装了Python依赖。最后,它指定了容器启动时应该执行的命令。

二、podman的语法#

Podman 是一个开源的容器引擎,用于构建、运行和连接容器。以下是一些基础的 Podman 命令:

Terminal window
`podman system migrate` # repair the podman
`sudo systemctl restart podman`

构建镜像#

Terminal window
podman build -t myimage .

这将使用当前目录中的 Dockerfile 构建一个名为 myimage 的镜像。

运行容器#

Terminal window
podman run -it --rm myimage /bin/bash --name xx
podman run --name lglsoft -it --rm --env=DISPLAY=180.201.179.79:0.0 susoft:latest /bin/bash
podman run -it --device=/dev/dri:/dev/dri --volume=/tmp/.X11-unix:/tmp/.X11-unix:rw --volume=/etc/localtime:/etc/localtime:ro --env=DISPLAY=$DISPLAY dockerfile-su /bin/bash

这将使用名为 myimage 的镜像创建并运行一个交互式的容器。

列出容器#

Terminal window
podman ps

这将列出当前正在运行的容器。

列出镜像#

Terminal window
podman images

这将列出所有可用的镜像。

删除容器#

Terminal window
podman rm mycontainer

这将删除名为 mycontainer 的容器。

删除镜像#

Terminal window
podman rmi myimage
podman rmi <image_id>

这将删除名为 myimage 的镜像。

列出网络#

Terminal window
podman network list

这将列出所有已创建的网络。

删除网络#

Terminal window
podman network rm mynetwork

这将删除名为 mynetwork 的网络。

导出容器#

Terminal window
podman export mycontainer > mycontainer.tar

这将导出名为 mycontainer 的容器为 tar 文件。

导入镜像#

Terminal window
podman import myimage.tar myimage

这将导入名为 myimage.tar 的 tar 文件为镜像。

导出镜像#

Terminal window
podman save myimage > myimage.tar

这将导出名为 myimage 的镜像为 tar 文件。

导入容器#

Terminal window
podman import mycontainer.tar mycontainer

这将导入名为 mycontainer.tar 的 tar 文件为容器。

这些是一些基础的 Podman 命令,根据您的具体需求,可能还需要使用其他命令。Podman 的命令行选项和功能可能会随着版本更新而变化,因此建议查阅最新的 Podman 文档以获取最准确的信息

#########################################################################
# This Dockerfile builds a base image to run Seismic UNIX on generic CPU
# architectures using GCC compilers and OpenMPI.
# WRITER: Guolong Li (1712343961@qq.com)
# TIME: 06.18.2024
#########################################################################
# Base image
FROM ubuntu:22.04 as base
# Verb=NO
ENV DEBIAN_FRONTEND noninteractive
LABEL maintainer="Guolong Li <1712343961@qq.com>"
# change the aliyun source to download software
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
CMD ["/bin/bash"]
EXPOSE 8888
# cp Seismic Unix (unziped 44R28 and well configured)
RUN mkdir -p /Software/Seismic_Unix
ADD ./seismic_unix.tar.gz /Software/Seismic_Unix/
ENV CWPROOT=/Software/Seismic_Unix
ENV PATH=$PATH:/Software/Seismic_Unix/bin
# Install basic package
RUN apt-get update && \
apt-get install -y build-essential mpich\
git xorg gcc libx11-dev libxt-dev libxext-dev make libmotif-dev libtirpc-dev gfortran libglu1-mesa-dev freeglut3-dev \
libxmu-dev libxmu-headers libxi-dev libglu1-mesa-dev freeglut3-dev libxmu-dev libxmu-headers libxi-dev
# set the Basic var
ARG nproc="10"
# Install Seismic Unix (only support one thread)
RUN cd /Software/Seismic_Unix/src/ && ls && make install
RUN cd /Software/Seismic_Unix/src/ && make xtinstall
RUN cd /Software/Seismic_Unix/src/ && make finstall
# Install Miniconda
RUN mkdir -p /Software/Miniconda
# # Instal the OpenMPI
# ARG OMPI_BRANCH="v4.1.4"
# RUN mkdir -p /deps && mkdir -p /opt/openmpi && cd /deps && \
# git clone --depth 1 --recursive --branch ${OMPI_BRANCH} https://github.com/open-mpi/ompi.git openmpi && \
# cd openmpi && ./autogen.pl && \
# mkdir build && cd build && \
# ../configure --prefix=/opt/openmpi/ \
# --enable-mca-no-build=btl-uct --enable-mpi1-compatibility && \
# make -j ${nproc} && \
# make install && \
# rm -rf /deps/openmpi
# # Set OpenMPI path
# ENV PATH=${PATH}:/opt/openmpi/bin
# ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/openmpi/lib
podman 创建镜像
https://tuoyuangui.github.io/website/posts/typora/docker和podman/podman创建镜像/
作者
椭圆规/tuoyuangui
发布于
2023-06-12
许可协议
CC BY-NC-SA 4.0