开发工程师 运维项目工程师
11 运行不了
podman是个软件环境打包技术,同时将软件所需的环境打包 docker
docker 守护进程 doemon 使用容器的时候需要root用户
podman 无守护进程 bash 使用容器的时候可以使用非特权用户(普通用户)
podman概念
镜像:将软件以及软件所需的环境打包后就是镜像
容器:运行的镜像就是容器
仓库:用于存放镜像
公共仓库:所有人都可以使用
私有仓库:登录 用户名 密码
每个镜像都可以实例为多个容器,镜像是只读的,容器时分层,容器可以进行修改
公有仓库:docker.io 需要配置podman的仓库文件
在/etc/containers/registries.conf加上docker.io
命令:
podman search 镜像名 搜索镜像
podman pull 镜像名 下载镜像 #最新镜像
podman pull 镜像名:版本 下载指定版本镜像 httpd:2.4.51
podman iamges 查看镜像
运行镜像(容器)
podman run 镜像ID 运行容器
podman ps 查看运行的容器
podman ps -a 查看所有容器
容器的状态:
退出(Exited)
创建
运行
创建容器:
potman create 容器ID 创建容器
potman start 容器ID 开启容器
podman stop 容器ID 关闭容器
运行和创建的选项
-i:提供一个虚拟接口供外界使用
-t:提供一个环境,后续可以使用bash命令
-d:将容器放在后台运行
-p:可以提供服务的容器,需要通过端口提供服务,将主机端口与容器端口进行映射
【主机端口】:容器端口
例子:podman run -itd -p 3444:80 8362f2615893
#运行容器并指定主机端口映射容器端口
-v:容器的存储 将主机文件夹与容器文件夹进行绑定
例子:
podman run --name http1 -itd -v /rongqi:/usr/local/apache2/htdocs:Z 8362f2615893
--name:podman run -itd --name http a6ca7b52a415
#运行容器并指定容器名字,后续可以通过名字代替容器ID
删除容器:
podman rm 容器ID
podman rm -f 删除运行的容器
podman exec -it b97d7c0bf5e0(容器ID) /bin/bash 进入容器 不需要加d
容器服务化 通过将容器转为服务,实现服务化 非特权用户
ssh 登录到特权用户或非特权用户
前提:容器提前创建
1、创建容器的服务配置文件所处的目录
非特权用户 mkdir -p .config/systemd/user/
2、cd .config/systemd/user/
3、创建容器服务的配置文件
podman generate systemd --name 容器名称
4.systemctl --user enable --now 容器服务配置文件名称
systemctl --user stop 容器的服务配置文件名称
su 切换用户 ssh 切换主机
1、
httpd:2.4.51镜像,创建一个名为 logserver 的容器。 将其配置为以systemd服务的形式运行,且仅面向现有用户aa。 该服务应命名为 container-logserver ,并应在系统重新引导后自动启动,而无需任何手动干预
1、下载镜像
2、创建镜像
3、创建容器服务配置文件的目录
4、创建容器服务的配置
5、启动容器服务并实现开机自启
2、容器配置持久存储 将在上一项任务中创建的容器服务配置为使用持久存储,如下所示: 在主机/home/aa下创建名为container_journal的目录 容器服务应将/home/aa/container_journal挂载到容器 /usr/local/apache2/htdocs上面 启动容器服务时,应自动挂载持久存储 在容器上运行命令logger -p local5.info "This is an RHCSA exam"时,容器上 的/var/log/journal/rhcsa.log 和主机上的/home/aa/container_journal/rhcsa.log将显示内容"This is an RHCSA exam
1、关闭上一步的服务
2、删除上一步的容器
3、创建容器 -v
4、删除上一步的容器配置文件
5、重新创建容器配置文件
6、启动容器服务并实现开机自启
7、进入容器敲命令