基础

podman login    登录docker.com 注册dockerhub账号
podman logout    注销
dnf module install -y container-tools    podman管理工具
https://172.20.0.61:9090/    Cockpit
阿里云镜像加速    仅限阿里云服务器
[[registry]]
prefix="docker.io"
location="xxxxx.mirror.aliyuncs.com"

podman version    查看版本
systemctl start/stop/restart/status podman


镜像管理


podman search nginx    搜索镜像
podman search nginx --filter=is-official    搜索官方镜像
podman pull nginx    拉取镜像
podman pull docker.io/library/nginx    拉取指定仓库镜像
podman images    查看本地镜像列表
podman tag 镜像ID 仓库/镜像:版本号    给镜像指定标签
podman rmi 镜像ID    删除镜像
podman push 仓库/镜像:版本号    推送镜像


容器管理


运行
podman run -it 镜像ID /bin/bash    创建容器 -i交互  t终端    /bin/bash镜像进入系统交互的shell名称
podman run -it --name ubuntu-18.04 镜像ID /bin/bash    --name指定容器名称
podman run -itd 镜像ID /bin/bash    -d后台运行容器
进入
podman exec -it 容器ID /bin/bash    进入容器    使用exit命令退出容器时,容器不会终止运行
podman attach -it 容器ID /bin/bash    进入容器    使用exit命令退出容器时,容器终止运行

exit    退出容器
查看容器
podman ps    仅显示正在运行中的容器
podman ps -a    查看所有容器的状态(运行中,退出,被创建)
查看日志
podman logs    容器id    查看容器日志
podman logs -f 容器id    实时监控容器的日志变化

podman start 容器id    开始运行容器
podman stop 容器id    停止运行容器
podman stop $(podman ps -aq)    停止所有运行中的容器
podman restart 容器id    重启运行中的容器

podman rm 容器id    删除容器
podman rm -f 容器id    强制删除容器
podman rm -f $(podman ps -aq)    强制删除所有容器

podman inspect 容器id    查看容器详细信息(镜像、网络、存储信息等)(网络、IP地址、mac地址、网关等-运行状态下)

podman cp name 容器id:目录    宿主机与容器间的文件/文件夹复制
podman cp 容器id:目录/name 目录

容器与镜像的转换


podman run -it 镜像id /bin/bash    镜像创建容器
podman commit 容器id 仓库/镜像/版本号    容器创建为镜像,并将镜像提交到仓库中    -a提交镜像的作者
podman push 仓库/镜像/版本号

数据卷


数据卷是一个可供一个或多个容器使用的特殊目录,将主机操作系统目录直接映射进容器。当宿主机数据发生变化时,容器中的数据也会自动发生变化。
podman run -it  -v 宿主机挂载目录:容器挂载目录 -v 宿主机挂载目录:容器挂载目录


容器监控


podman stats 容器id
podman top 容器id
podman ps    -a显示所有状态下的容器    -q显示容器的id

容器的资源限制


podman run --cpus=1 -m=2g --name name -itd 镜像ID /bin/bash    限制虚拟CPU的个数,内存使用限制


podman port prometheus    查看容器的端口映射配置
podman ps --format "table {{.Names}}\t{{.Ports}}"    查看所有容器的端口状态

仓库管理

阿里云-控制台-容器镜像服务--实例列表-个人实例-命名空间-创建命名空间-创建镜像仓库-管理代码源(本地仓库)

给镜像指定标记
podman tag 镜像id 仓库地址/命名空间/仓库:版本号
​
登录阿里云 Container Registry
podman login --username=用户名 仓库地址

将镜像推送到Registry
podman push xxx/xxx/images:[镜像版本号]
​
从Registry中拉取镜像
docker pull xxx/xxx/images:[镜像版本号]
​

构建镜像

构建自定义镜像 Dockerfile、Containerfile 

通过podman commit方式把容器提交为镜像
通过Podmanfile或Dockerfile的方式自定义镜像

podman build -f Podmanfile -t tomcat-10.1.48 .    构建镜像    -f不是Dockerfile格式,通过-f参数指定文件名称

Dockerfile
podman build -t tomcat-10.1.48 .    构建镜像
podman images
podman run -d --name tomcat10 -p 8084:8080 镜像id
http://172.20.0.37:8084

容器网络

容器端口暴露与端口映射

端口暴露
podman run -itd --name nginx -p 80 nginx    -p 宿主机端口:容器端口
端口映射
podman run -itd -P nginx    随机端口映射
podman run -itd -p 80:80 nginx  指定端口映射
podman run -itd -p ip::80 nginx 指定网卡随机端口映射
podman run -itd -p ip:80:80 nginx   指定网卡指定端口映射
podman run -itd -p 80:80 -p 443:443 nginx   多个端口映射
podman run -d --name nginx -p 8081:80 nginx -p 宿主机端口:容器端口
podman ps -a
systemctl stop firewalld
浏览器访问:http://172.20.0.37:8081
podman run -d --name httpd -p 8082:80 httpd
浏览器访问:http://172.20.0.37:8082

容器网络架构

ip a
cni-podman0 虚拟网桥    本地服务通过这个路由可以连接不同的容器 10.88.0.xxx
桥接模式(默认)
podman run -d nginx
podman inspect 容器id | grep IPAdd*
​
none模式
关闭了容器的网络功能,仅有本地回环,无法与外界或其他pod通信
podman run -d --net=none nginx
​
host模式
容器不会虚拟出自己的网卡,配置自己的IP地址等,而是需要使用宿主机的IP地址和端口
podman run -d --net=host nginx
可以通过在浏览器输入当前主机的IP地址的方式来进行访问
​
container:<id>模式
创建容器时,通过“--net container:容器名称或id”的方式指定其和已经存在的某个容器共享一个Network Namespace,实现了一个容器和另一个容器共享网卡资源,新建的容器不会拥有自己独立的IP,而是共享已经存在容器的端口范围等网络资源,两个容器的进程通过lo网卡设备通信
podman run -itd --name bb busybox
podman run -d --name nginx --net container:bb nginx

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐