请选择 进入手机版 | 继续访问电脑版

Podman开机自启容器实现过程及与Docker对比

[复制链接]
查看101 | 回复25 | 2021-9-13 19:38:57 | 显示全部楼层 |阅读模式
目次

1.podman先容

podman之前是CRI-O项目的 一部分,后被分离成独立的项目libpod,libpod是一个创建容器pod的工具和库,podman是个无保卫 程序容器引擎,以root用户或无根模式运行,简而言之podman提供了一个docker-CLI的下令 行,管理着容器

2.与docker相比的上风

docker劣势一:

docker大家都知道,其保卫 程序在多个核心上占用差不多高达100%cpu资源,采用C/S模子

podman上风 一:

podman不必要 保卫 历程 ,不必要 root权限组,而且利用 着用户定名 空间(namespace)模拟 容器中的root运行,采用fork/exec模子 。

fork/exec模子 相比C/S模子 上风 :

  • 体系 管理员知道某个容器由谁启动
  • 利用 cgroup对podman做限定 ,对应着创建的容器也会受到限定
  • systemd单元文件的天生 ,可以管理着使命 的启动与关闭
  • socket激活,将socker从systemd发送给podman容器利用

3.兼容性

docker的功能大部分podman都是兼容的,也可以利用 别名(alias)来写成docker的下令

4.后台服务单元文件的优先级

  1. /usr/lib/systemd/user
复制代码
:优先级最低,会被优先级高的同名 unit 覆盖 ~/.local/share/systemd/user

  1. /etc/systemd/user
复制代码
:全局共享的用户级 unit

  1. ~/.config/systemd/user
复制代码
:优先级最高

5.podman基本操作

安装

  1. #默认centos源
  2. [root@slave02 ~]# yum -y module install container-tools #容器工具基于模块
  3. [root@slave02 ~]# yum -y install podman-docker #安装docker兼容包(可选)
复制代码

版本

  1. [root@slave02 ~]# podman -v
  2. podman version 3.3.0-dev
复制代码

仓库

官方仓库:registry.access.redhat.com

第三方仓库:docker.io

私有仓库:registry.lab.example.com

下令 帮助

  1. [root@slave02 ~]# podman help|head -15
  2. Manage pods, containers and images
  3. Usage:
  4. podman [options] [command]
  5. Available Commands:
  6. attach Attach to a running container
  7. auto-update Auto update containers according to their auto-update policy
  8. build Build an image using instructions from Containerfiles
  9. commit Create new image based on the changed container #基于修改的容器创建新的容器
  10. container Manage containers
  11. cp Copy files/folders between a container and the local filesystem
  12. create Create but do not start a container
  13. diff Display the changes to the object's file system
  14. events Show podman events
  15. ....
复制代码

镜像加速器

修改设置 文件:/etc/containers/registries.conf 即可

留意 :不能带有httpds//:url格式

  1. [root@slave02 ~]# cp /etc/containers/registries.conf /backup/registries.conf.back #备份一下
  2. [root@slave02 ~]# vim /etc/containers/registries.conf
  3. unqualified-search-registries = ["docker.io"] #非限定搜索登记处
  4. [[registry]]
  5. prefix = "docker.io"
  6. location = "x" #x是阿里加速镜像地址
复制代码

拉取镜像

  1. [root@slave02 ~]# podman pull nginx
复制代码

6.运行一个web容器

后台启动一个web容器,并访问容器内容

  1. #准备html页面内容
  2. [root@192 ~]# cat /opt/webhtml/index.html
  3. Go your own way, see your own scenery, surpass others without complacency, and be surpassed without losing ambition
  4. #运行一个守护web容器进程,将/opt/webhtml目录内容映射到容器的/usr/share/nginx/html存放网页的位置
  5. [root@192 ~]# podman run -d --name web -p 8888:80 -v /opt/webhtml:/usr/share/nginx/html nginx
  6. 3528e6d5148bcf980f0df5708a82419d3485a33d1d16d722db3e880cc103cd2c
  7. [root@podman ~]# curl 192.168.136.129:8888
  8. Go your own way, see your own scenery, surpass others without complacency, and be surpassed without losing ambition
  9. #容器的ip
  10. [root@podman ~]# podman inspect web|grep IPAddress
  11. "IPAddress": "10.88.0.6",
  12. "IPAddress": "10.88.0.6",
  13. #宿主机的ip
  14. [root@podman ~]# ip r
  15. 192.168.136.0/24 dev ens33 proto kernel scope link src 192.168.136.129 metric 100
  16. #由于进行了端口绑定,所以直接 curl 192.168.136.129:8888即可访问
复制代码

进入后台web容器,查看服务状态

  1. [root@podman ~]# podman exec -it web bash
  2. root@3528e6d5148b:/# service nginx status
  3. [ ok ] nginx is running. #运行中
复制代码

修改容器业务内容

  1. #修改宿主机/opt/webhtml/index.html即可
  2. [root@podman ~]# cat /opt/webhtml/index.html
  3. Go your own way, see your own scenery, surpass others without complacency, and be surpassed without losing ambitionRHCAS
  4. RHCE RHCA
  5. #进行访问
  6. [root@podman ~]# curl 192.168.136.129:8888
  7. Go your own way, see your own scenery, surpass others without complacency, and be surpassed without losing ambitionRHCAS
  8. RHCE RHCA
  9. #进入容器查看内容是否修改
  10. [root@podman ~]# podman exec -it web bash
  11. root@3528e6d5148b:/# cat /usr/share/nginx/html/index.html
  12. Go your own way, see your own scenery, surpass others without complacency, and be surpassed without losing ambitionRHCAS
  13. RHCE RHCA
复制代码

停息 与删除容器

  1. #暂停
  2. [root@podman ~]# podman stop web
  3. web
  4. [root@podman ~]# podman ps -a
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 3528e6d5148b docker.io/library/nginx:latest nginx -g daemon o... 25 minutes ago Exited (0) 16 seconds ago 0.0.0.0:8888->80/tcp web
  7. #删除
  8. [root@podman ~]# podman rm web
  9. 3528e6d5148bcf980f0df5708a82419d3485a33d1d16d722db3e880cc103cd2c
  10. #或强制删除运行中的容器
  11. [root@podman ~]# podman rm -f web
  12. 3528e6d5148bcf980f0df5708a82419d3485a33d1d16d722db3e880cc103cd2c
复制代码

7.web容器设置开机自启

后台运行一个web容器

  1. [root@podman ~]# podman run --name web -d -p 8080:80 -v /opt/webhtml:/usr/shar/nginx/html nginx
  2. 910db3ab6bd1ef18e5fd0afe1844912f0b89334b7b8ab758353a948a1b55282a
复制代码

基于web容器,在优先级一样平常 的/etc/systemd/system内

创建.service单元文件

  1. [root@192 ~]# cd /etc/systemd/system/
  2. [root@podman user]# podman generate systemd --
  3. --container-prefix (Systemd unit name prefix for containers)
  4. --files {生成.service文件,而不是打印到标准输出}
  5. --format (Print the created units in specified format (json)) #以指定的格式打印单元文件
  6. --name (Use container/pod names instead of IDs) #创建新容器,而不是使用现有的容器
  7. --new (Create a new container instead of starting an existing one)#(跳过标头生成)
  8. --no-header (Skip header generation)
  9. --pod-prefix (Systemd unit name prefix for pods)
  10. --restart-policy (Systemd restart-policy)
  11. --separator (Systemd unit name separator between name/id and prefix)
  12. --time (Stop timeout override)
  13. [root@192 system]# podman generate systemd --name web --files --new
  14. /etc/systemd/system/container-web.service
复制代码

查看天生 的单元文件

  1. [root@192 system]# cat container-web.service
  2. # container-web.service
  3. # autogenerated by Podman 3.3.0-dev #podman 3.3.0-dev自动生成
  4. # Tue Aug 17 13:03:13 CST 2021 #8月17日星期二13:03:13 CST 2021
  5. [Unit] #单元
  6. Description=Podman container-web.service #描述
  7. Documentation=man:podman-generate-systemd(1) #帮助以及生成的系统
  8. Wants=network-online.target #网络
  9. After=network-online.target
  10. RequiresMountsFor=%t/containers #前面不重要直接跳过
  11. [Service]
  12. Environment=PODMAN_SYSTEMD_UNIT=%n
  13. Restart=on-failure #故障时重新启动
  14. TimeoutStopSec=70 #超时时间
  15. ExecStart=/usr/bin/podman run --sdnotify=conmon --cgroups=no-conmon --rm --replace --name web -d -p 8080:80 -v /opt/webhtml:/usr/shar/nginx/html nginx #执行开始为/usr/bin/podman 运行刚才创建的容器
  16. Type=notify
  17. NotifyAccess=all
  18. [Install]
  19. WantedBy=multi-user.target default.target
复制代码

删除刚才的容器

  1. [root@podman ~]# podman rm web
  2. 910db3ab6bd1ef18e5fd0afe1844912f0b89334b7b8ab758353a948a1b55282a
  3. [root@podman ~]# podman ps -a
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
复制代码

设置开机自启

  1. [root@192 ~]# systemctl daemon-reload
  2. [root@192 ~]# systemctl enable --now container-web.service
  3. Created symlink /etc/systemd/system/multi-user.target.wants/container-web.service → /etc/systemd/system/container-web.service.
  4. Created symlink /etc/systemd/system/default.target.wants/container-web.service → /etc/systemd/system/container-web.service.
  5. [root@192 user]# podman ps -a
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. b0c7709cb00e docker.io/library/nginx:latest nginx -g daemon o... 15 seconds ago Up 16 seconds ago 0.0.0.0:8080->80/tcp web
复制代码

无根root模式设置容器和上面这种方式大同小异

利用 systemctl下令 带上 --user 即可

  1. #需要运行loginctl enable-linger命令,使用户服务在服务器启动时自动启动即可
  2. [containers@serverb ~]$ loginctl enable-linger
复制代码

以上就是Podman开机自启容器实现过程的详细 内容,更多关于Podman开机自启容器的资料请关注脚本之家别的 相干 文章!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar zmhg799417 | 2021-9-13 23:28:38 | 显示全部楼层
灌水不是我的目的!
回复

使用道具 举报

avatar 樱花283 | 2021-9-20 10:05:56 | 显示全部楼层
不是惊喜,是惊吓!
回复

使用道具 举报

avatar 却写杂布计 | 2021-9-21 13:41:54 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,影视频道的网站所有电影和连续剧都可以免费看的。访问地址:http://tv.mxswl.com
回复

使用道具 举报

avatar 倪丹军 | 2021-9-26 17:02:51 | 显示全部楼层
有钱、有房、有车,人人都想!
回复

使用道具 举报

avatar 喵呜_520 | 2021-10-1 22:09:10 | 显示全部楼层
求加金币!
回复

使用道具 举报

avatar 牛股行天下烁 | 2021-10-2 07:29:16 | 显示全部楼层
写得实在太好了,我唯一能做的就是默默顶贴!
回复

使用道具 举报

avatar 我本迷茫 | 2021-10-8 13:52:53 | 显示全部楼层
内容很有深度!
回复

使用道具 举报

avatar 单色不单叼 | 2021-10-8 22:37:28 | 显示全部楼层
记得吃药!
回复

使用道具 举报

avatar Happysong | 2021-10-10 02:48:48 | 显示全部楼层
精神病院在通缉admin楼主!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则