podman、docker 容器启动项目(springboot 、jar或war )

podman和docker 都是容器,命令基本都一致,无非就是命令开头不一样(比如:docker查询运行容器 docker ps 、podman查询运行容器 podman ps)

注意:操作过程中需要注意jar包、Dockerfile、脚本等存放目录,服务器和容器中目录

容器启动jar包

一、简单方式

每次需更新jar包时,都要删除容器和镜像,并重新制作镜像和容器。流程及其繁琐,效率极低。

将打好的jar上传到服务器(比如jar包名为 test.jar),同时在jar包目录下新建 Dockerfile文件并编辑。

Dockerfile

FROM java:8
VOLUME /opt/app
ADD test.jar /test.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /test.jar" ]
#ENTRYPOINT ["sh","java","-jar","/test.jar","&"]

-Djava.security.egd=file:/dev/./urandom -jar /test.jar  为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source

构建镜像

#-t后面是我们的镜像名 后面有一点的, 镜像名可以知道目录也可以不指定
#指定目录
podman build -t app/test .
#不指定目录
podman build -t test .

构建容器

-e:表示时区 -d:后台运行 -p:端口映射 本地8080映射到容器内的8080 -v:文件夹挂载,这样我们之后更新jar包的时候可以直接在宿主机中操作,而不需要进去容器

podman run -d --privileged=true -v /opt/app/test/logs:/logs --name test -e TZ=Asia/Shanghai -p 8080:8080 test

这样就启动成功,podman ps 查询已启动容器

二、jar包替换部署

每次更新jar的时候,不需要删除并重新制作镜像和容器,但是有一个缺点就是更新的jar包名字必须和之前Dockerfile中配置的一样,一旦jar名发送改变的时候需求删除并重新制作镜像和容器。创建容器的时候将jar包所在目录挂载出去,这样我们可以直接操作宿主机挂载的文件夹就可以了。

Dockerfile

将打好的jar上传到服务器(比如jar包名为 test.jar),同时在jar包目录下新建 Dockerfile文件并编辑。

FROM java:8
VOLUME /opt/app
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /test.jar" ]

构建镜像

#-t后面是我们的镜像名 后面有一点的, 镜像名可以知道目录也可以不指定
#指定目录
podman build -t app/test .
#不指定目录
podman build -t test .

构建容器

将宿主机的 /opt/app/test 目录与容器的 /opt/app 目录映射关联。这样的话,当jar包发生变动时,直接更新宿主机目录下的jar包即可。

-e:表示时区 -d:后台运行 -p:端口映射 本地8080映射到容器内的8080 -v:文件夹挂载,这样我们之后更新jar包的时候可以直接在宿主机中操作,而不需要进去容器、也就是将服务器目录和容器目录做映射

podman run -d --privileged=true -v /opt/app/test:/opt/app -v /opt/app/test/logs:/logs --name test -e TZ=Asia/Shanghai -p 8080:8080 test

这样就启动成功,podman ps 查询已启动容器

三、脚本部署

每次更新jar包、jar包每次都无需删除并重新制作镜像和容器,创建镜像的时候指定运行的脚本,创建容器的时候将jar包所在目录挂载出去,这样我们可以直接操作宿主机挂载的文件夹就可以了。

test.sh 脚本 需要和jar包放在一起

#2者选其一
java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /opt/app/test.jar
#java -jar /opt/app/test.jar

给脚本授权(不授权,启动容器会失败)

chmod +x test.sh

Dockerfile

将打好的jar上传到服务器(比如jar包名为 test.jar),同时在jar包目录下新建 Dockerfile文件并编辑。

FROM java:8
VOLUME /opt/app
CMD ["sh","-c","/opt/app/test.sh"]

CMD ["sh","-c","/opt/app/test.sh"] 表示容器启动的时候创建 .sh 脚本

RUN、ENTRYPOINT  、 cmd 区别:

RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包。
CMD 设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换。
ENTRYPOINT 配置容器启动时运行的命令。

构建镜像

#-t后面是我们的镜像名 后面有一点的, 镜像名可以知道目录也可以不指定
#指定目录
podman build -t app/test .
#不指定目录
podman build -t test .

构建容器
将宿主机的 /opt/app/test 目录与容器的 /opt/app 目录映射关联。这样的话,当jar包发生变动时,直接更新宿主机目录下的jar包即可。即使jar包名字发生变化,也需要再更新一下test.sh脚本。更新之后重启容器。

-e:表示时区 -d:后台运行 -p:端口映射 本地8080映射到容器内的8080 -v:文件夹挂载,这样我们之后更新jar包的时候可以直接在宿主机中操作,而不需要进去容器、也就是将服务器目录和容器目录做映射

podman run -d --privileged=true -v /opt/app/test:/opt/app -v /opt/app/test/logs:/logs --name test -e TZ=Asia/Shanghai -p 8080:8080 test

这样就启动成功,podman ps 查询已启动容器

容器启动war包

拉取tomcat镜像

podman pull tomcat:9.0.50

这里在/opt/ 目录下创建tomcat目录,在tomcat目录下创建 webapps、logs、conf 文件夹,在webapps目录下创建config文件夹

wabapps:存放war

logs:运行时日志输出

conf:tomcat的一些xml(比如:server.xml 修改端口,),也可以不需要

运行容器

podman run --privileged=true -v /opt/tomcat/webapps/:/usr/local/tomcat/webapps/ -v /opt/tomcat/conf/:/usr/local/tomcat/conf/ -v /opt/tomcat/logs/:/usr/local/tomcat/logs -v /opt/tomcat/webapps/config:/usr/local/tomcat/conf_app/ -e TZ=Asia/Shanghai -p 8080:8080 --name test -d tomcat:9.0.50

这样就启动成功,podman ps 查询已启动容器

容器安装字体

先按liunx上安装字体

#安装字体
yum -y install fontconfig

#创建目录
mkdir -p /usr/share/fonts/my_fonts

#进入C:\Windows\Fonts,该文件夹下就存放相关字体,比如将simhei.tty、simsun.ttc拷贝到linux 目录/usr/share/fonts/my_fonts下即可

#安装字体索引指令
yum install mkfontscale

#生成字体索引,进入目录 cd  /usr/share/fonts/my_fonts,执行索引字体生成
mkfontscale

#查看是否安装成功
fc-list :lang=zh

容器创建成功后执行

podman cp /usr/share/fonts/ 容器名称:/usr/share/fonts/

在dockerFile中加入,copy的原文件目录需要和dockerFile保持一致

COPY Songti.ttc /usr/share/fonts/
RUN fc-cache -vf

安装podman

//安装podman  
[root@localhost ~]# yum -y install podman
  
//仓库配置  
[root@localhost ~]# vim /etc/containers/registries.conf
[registries.search]  
registries = ['registry.access.redhat.com', 'registry.redhat.io', 'docker.io'] //这个是查找,从这三个地方查找,如果只留一个,则只在一个源里查找  
unqualified-search-registries = ["registry.fedoraproject.org", "registry.access.redhat.com", "registry.centos.org", "docker.io"] //这里也要改为一个  
  
[registries.insecure]  
registries = [10.0.0.1]   //这里写那些http的仓库,比如harbor  
  
//配置加速器  
[registries.search]  
registries = ['https://l9h8fu9j.mirror.aliyuncs.com','docker.io']

命令及语法

Dockerfile 指令简洁版

FROM:构建镜像基于哪个镜像
MAINTAINER:镜像维护者姓名或邮箱地址
RUN:构建镜像时运行的指令
CMD:运行容器时执行的shell环境
VOLUME:指定容器挂载点到宿主机自动生成的目录或其他容器
USER:为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户
WORKDIR:为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录
HEALTHCHECH:健康检查
ARG:构建时指定的一些参数
EXPOSE:声明容器的服务端口(仅仅是声明)
ENV:设置容器环境变量
ADD:拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压
COPY:拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能
ENTRYPOINT:运行容器时执行的shell命令

指令详解版

COPY:
复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
格式:
COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",...  "<目标路径>"]
[--chown=<user>:<group>]:可选参数,用户改变复制到容器内文件的拥有者和属组。
<源路径>:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如:
COPY hom* /mydir/
COPY hom?.txt /mydir/
<目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。

ADD:
ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:
ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

CMD:
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
CMD 在podman run 时运行。
RUN 是在 podman build。
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 podman run 命令行参数中指定要运行的程序所覆盖。
注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
格式:
CMD <shell 命令> 
CMD ["<可执行文件或命令>","<param1>","<param2>",...] 
CMD ["<param1>","<param2>",...]  # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
推荐使用第二种格式,执行过程比较明确。第一种格式实际上在运行的过程中也会自动转换成第二种格式运行,并且默认可执行文件是 sh。

ENTRYPOINT:
类似于 CMD 指令,但其不会被 podman run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
但是, 如果运行 podman run 时使用了 --entrypoint 选项,将覆盖 CMD 指令指定的程序。
优点:在执行 podman run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
格式:
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
可以搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参,以下示例会提到。
示例:
假设已通过 Dockerfile 构建了 nginx:test 镜像:
FROM nginx
ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参 
1、不传参运行
$ podman run  nginx:test
容器内会默认运行以下命令,启动主进程。
nginx -c /etc/nginx/nginx.conf
2、传参运行
$ podman run  nginx:test -c /etc/nginx/new.conf
容器内会默认运行以下命令,启动主进程(/etc/nginx/new.conf:假设容器内已有此文件)
nginx -c /etc/nginx/new.conf

ENV:
设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。
格式:
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
以下示例设置 NODE_VERSION = 7.2.0 , 在后续的指令中可以通过 $NODE_VERSION 引用:
ENV NODE_VERSION 7.2.0
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
  && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"

ARG:
构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 podman build 的过程中有效,构建好的镜像内不存在此环境变量。
构建命令 podman build 中可以用 --build-arg <参数名>=<值> 来覆盖。
格式:
ARG <参数名>[=<默认值>]
VOLUME
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
作用:
避免重要的数据,因容器重启而丢失,这是非常致命的。
避免容器不断变大。
格式:
VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>
在启动容器 podman run 的时候,我们可以通过 -v 参数修改挂载点。

EXPOSE:
仅仅只是声明端口。
作用:
帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
在运行时使用随机端口映射时,也就是 podman run -P 时,会自动随机映射 EXPOSE 的端口。
格式:
EXPOSE <端口1> [<端口2>...]

WORKDIR:
指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。
podman build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
格式:
WORKDIR <工作目录路径>

USER:
用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。
格式:
USER <用户名>[:<用户组>]
HEALTHCHECK
用于指定某个程序或者指令来监控 podman 容器服务的运行状态。
格式:
HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
HEALTHCHECK [选项] CMD <命令> : 这边 CMD 后面跟随的命令使用,可以参考 CMD 的用法。

ONBUILD:
用于延迟构建命令的执行。简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。
格式:
ONBUILD <其它指令>

LABEL:
LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式,语法格式如下:
LABEL <key>=<value> <key>=<value> <key>=<value> ...
比如我们可以添加镜像的作者:
LABEL org.opencontainers.image.authors="runoob"

build 语法

podman build [OPTIONS] PATH | URL | -

OPTIONS说明:

--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值,内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M;
--memory-swap :设置内存+交换分区(swap)大小总限制,"-1"表示不限swap,必须必-m设置的大 --memory-swap=1G;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--squash :将 Dockerfile 中所有的操作压缩为一层。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式


实例
使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。

podman build -t runoob/ubuntu:v1 . 
使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。

podman build github.com/creack/docker-firefox
也可以通过 -f Dockerfile 文件的位置:

$ podman build -f /path/to/a/Dockerfile .
在 podman 守护进程执行 Dockerfile 中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回:

$ podman build -t test/myapp .
Sending build context to podman daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD

run 语法

语法
podman run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷


实例
使用podman镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

podman run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。

podman run -P -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

podman  run -p 80:80 -v /data:/data -d nginx:latest
绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

$ podman run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

runoob@runoob:~$ podman run -it nginx:latest /bin/bash
root@b8573233d675:/# 

podman、docker常用命令(2个基本一致)

#查看PODMAN的存储位置等信息
podman info

#podman资源占用查看
podman stats

镜像命令

查看镜像

# 查看镜像列表
podman images

# 显示所有镜像(包括中间层)
podman images -a
	
# 只显示镜像ID		
podman images -q
		
# 查看所有镜像,且只显示镜像id
podman images -qa

# 显示镜像的摘要信息		
podman images --digests

# 显示完整的镜像信息
podman images --no-trunc

#查看镜像详情
podman inspect 镜像id

搜索镜像

# 搜索镜像
podman search 镜像名

# 显示完整的镜像描述
podman search --no-trunc 镜像名
	
# 列出收藏数不小于指定值的镜像	
podman search -s 镜像名	
	
# 只列出podman Hub自动构建类型的镜像	
podman search --automated 镜像名

拉取镜像

podman pull 镜像名:标签

删除镜像

# 如果不写TAG,默认删除最新版本latest
podman rmi 镜像名

# 删除单个镜像:
podman rmi 镜像名称:[TAG]

# 删除多个镜像
podman rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]
# 删除全部镜像
podman rmi -f $(podman images -qa)

镜像导出

# 将镜像导出为tar包
podman save 镜像名称:标签 -o 备份镜像名称.tar

镜像导入

# 将镜像.tar导入到镜像
podman load -i 备份镜像名.tar

修改镜像tag

podman tag 镜像名称:标签 新的镜像名称:新的标签

从容器创建新镜像(不推荐)

podman commit 容器名 新镜像名


容器命令

podman运行容器

# 运行实例
podman run -dti 镜像名

# --name="容器名":为容器指定一个名称;
podman run --name tomcat_01 镜像名

# -i:以交互模式运行容器,通常与-t或者-d同时使用;组合参数:-dti
# -t:为容器重新分配一个伪输入终端,通常与-i同时使用;组合参数:-dti
# -d: 后台运行容器,并返回容器ID;组合参数:-dti
podman run --name tomcat_01 -dti 镜像名

# -p将宿主机端口映射到容器端口
podman run -p 8080:8080 tomcat

# -P:大写的P,表示容器内部端口随机映射到主机的端口
## 格式为:-P 容器端口
podman run -P 8080 tomcat

# -v将(宿主机目录)挂载到(容器目录)
podman run -v /home/webapps/test:/usr/local/tomcat/webapps/test
	
# -e传递环境变量
podman run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

运行容器示例:

podman run --name tomcat8080 -dit -p 8080:8080 --restart=always -v /dta/webapps/test:/usr/local/tomcat/webapps/test tomcat

podman	运行	指定容器名	容器名	-d:守护进程;-t: tty伪终端;-i: 允许交互(输入)	-p:将宿主机端口映射到容器端口	宿主机端口:容器端口	将(宿主机目录)挂载到(容器目录)	宿主机目录:容器目录
podman	run	-name	tomcat	-dti	-p	8080:8080	-v	/dta/webapps/test:/usr/local/tomcat/webapps/test


ps查看容器

# 查看正在运行的容器
podman ps

# 查看所有容器
# -a :显示所有的容器,包括未运行的。
podman ps -a

# 显示最近创建的2个容器
# -n :列出最近创建的n个容器。
podman ps -n 2

#查看停止的容器
# -f :根据条件过滤显示的内容。
podman ps -f status=exited


# --format :指定返回值的模板文件。
# -l :显示最近创建的容器。
# --no-trunc :不截断输出。
# -q :静默模式,只显示容器编号。
# -s :显示总的文件大小。


启动容器
# 启动容器
# podman start 容器名/容器ID
podman start mycentos00

停止容器

# podman stop 停止容器
# podman stop 可以停止运行的容器 本质是发送一个 SIGTERM 信号
# podman stop 容器ID or 容器名
podman stop 865b755cd0b2

重启容器

# podman restart 重启容器
# podman restart 容器ID or 容器名
podman restart f9cadea1a5e7

删除容器

# podman rm 删除容器	
## 查看容器
podman ps -aq

## 删除容器
podman rm 容器id

# 强制删除
podman rm -f 容器ID

# 删除多个容器 
## podman rm -f 容器ID1  容器ID2 中间空格隔开
podman rm 865b755cd0b2 ce6343ee288f

# 删除所有容器
podman rm -f $(podman ps -qa)

强制停止容器

# 暴力停止,直接杀掉进程 (不推荐)
# podman kill 强制停止容器
# podman kill 向容器进程发送 SIGKILL 信号
# podman kill 容器ID or 容器名
# podman kill 容器id(推荐,常用)
podman kill f9cadea1a5e7

暂停/恢复容器

# podman 暂停/恢复容器
# 让容器暂停工作
podman pause 容器名/容器id
# 让容器恢复运行
podman unpause 容器名/容器id

进入容器

# 进入容器
podman exec -ti 容器名 bash
#退出容器
exit

容器日志

# 容器日志
# podman logs [OPTIONS] 容器名
# 显示更多的信息
podman logs	--details 容器id

# 跟踪实时日志
podman logs -f 容器id
podman logs --follow 容器id

	
# 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
podman logs --since 42m 容器id
	
# 从日志末尾显示多少行日志, 默认是all
podman logs--tail 100 容器id #100行
podman logs 容器id # 默认all
	
# 显示时间戳
podman logs -t 容器id
podman logs --timestamps 容器id
	
# 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
podman logs --until 42m 容器id

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章