1.制作jar包镜像,和docker一样
1.把jar包上传到服务器
2.在jar包的目录下通过创建Dockerfile
FROM openjdk:11
MAINTAINER wangzhen
ADD mk-builder.jar /usr/local/
EXPOSE 11002
ENTRYPOINT ["java","-jar","/usr/local/mk-builder.jar"]
Dockerfiler解释:
FROM:指定基础镜像,必须为第一个命令,意思是将openjdk:8-jdk-alpine作为基础镜像
VOLUME:用于指定持久化目录到/tem
ADD:将本地文件docker.jar添加到容器中,放入到/user/local文件夹下, 或者不放入文件夹中,直接重命名(ADD mk-data.jar app.jar)demo.jar
EXPOSE:向外暴露的端口
ENTRYPOINT:类似于开机执行 java -jar app.jar
2.制作镜像
podman build -t docker-test .
-t:给生成的镜像命名,本文命名为dcoker-test
命令最后的 “.”:指定镜像构建过程中的上下文环境的目录(这个点不能忘,具体的意思我暂时也没太明白,后续更新)
3.运行镜像
podman run -d --name firstDocker -p 8080:8080 docker-test
-d:后台运行
–name: 给运行的镜像取名
-p:端口映射(外部端口:内部端口)
最后 podman ps ,查看容器运行状态。
|
|
|
| 安装 使用 podman
|
|
|
1.安装
yum -y install podman
2.查看版本
podman -v
3.配置阿里云镜像
Podman 默认注册表配置文件在 /etc/containers/registries.conf
清空并修改为以下内容:
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "******.mirror.aliyuncs.com"
4.搜索镜像
# 搜索镜像
podman search 镜像名
# 显示完整的镜像描述
podman search --no-trunc 镜像名
# 列出收藏数不小于指定值的镜像
podman search -s 镜像名
# 只列出Docker Hub自动构建类型的镜像
podman search --automated 镜像名
5.查看镜像
# 查看镜像列表
podman images
# 显示所有镜像(包括中间层)
podman images -a
# 只显示镜像ID
podman images -q
# 查看所有镜像,且只显示镜像id
podman images -qa
# 显示镜像的摘要信息
podman images --digests
# 显示完整的镜像信息
podman images --no-trunc
6.拉取镜像
podman pull 镜像名:标签
7.删除镜像
# 如果不写TAG,默认删除最新版本latest
podman rmi 镜像名
# 删除单个镜像:
podman rmi 镜像名称:[TAG]
# 删除多个镜像
podman rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]
# 删除全部镜像
podman rmi -f $(docker images -qa)
7.运行容器
# 运行实例
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将宿主机端口映射到容器端口
## 起始就是用内核模块iptables创建一个dnat
## 可以使用iptables -L -t nat -n 查看到dnat规则
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
8.查看容器
# 查看正在运行的容器
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 :显示总的文件大小。
9.启动容器
podman start 容器名/容器ID
podman start mycentos00
10.停止容器
podman stop 停止容器
podman stop 可以停止运行的容器 本质是发送一个 SIGTERM 信号
podman stop 容器ID or 容器名
podman stop 865b755cd0b2
podman和docke的命令几乎一样,所以如果想用docker命令去操作podman,则可以设置个别名
echo "alias docker=podman" >> .bashrc
source .bashrc
11.重启容器
podman restart 重启容器
podman restart 容器ID or 容器名
podman restart f9cadea1a5e7
12.删除容器
# podman rm 删除容器
## 查看容器
podman ps -aq
## 删除容器
podman rm 容器id
# 强制删除
podman rm -f 容器ID
# 删除多个容器
## podman rm -f 容器ID1 容器ID2 中间空格隔开
podman rm 865b755cd0b2 ce6343ee288f
# 删除所有容器
podman rm -f $(docker ps -qa)
13.强制停止容器
podman kill 强制停止容器
podman kill 向容器进程发送 SIGKILL 信号
podman kill 容器ID or 容器名
podman kill 容器id(推荐,常用)
podman kill f9cadea1a5e7
14.进入容器
podman exec -ti 容器名 bash
15.容器日志
# 容器日志
# 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