Linux podman容器实验
要求
1.登录到指定的镜像仓库拉取镜像
2.以普通用户contsvc运行
3.配置 systemd-journald 服务,要求永久保留日志数据(物理机,创建文件mkdir /var/log/journal)
3.服务自启动(普通用户身份)
4.将 /var/log/journal(物理机用户为root) 目录及任何子目录中的任何 *.journal 文件复制到/home/contsvc/container_journal 中
6.容器服务启动时能自动将 /home/contsvc/container_ journal挂载到容器中的 /var/log/journal 上
将物理机的数据复制到contsvc的container_journal下,然后拉去镜像。将contaier_journal挂载进容器里的/var/log/contsvc。开机,容器以普通用户自启
实验步骤
lab containers-services start
创建镜像仓库
useradd contsvc
echo redhat | passwd --stdin contsvc
创建普通用户并设置密码
mkdir /var/log/journal
systemctl restart systemd-journal
创建永久保留日志数据
ssh contsvc@servera
ssh登录contsvc用户
mkdir -p .config/containers/
创建容器配置文件
cp -ar /tmp/containers-service/ ./.config/containers/registries.conf
将tmp下的容器仓库拷贝到镜像文件
podman search httpserver
测试是否使用镜像仓库文件
mkdir .config/container_journal
创建被挂载的数据
cp -a /var/log/journal/*/*.journal ~/.config/container_journal
将物理机上的日志文件拷到container_journal
podman login registry.lab.example.com
登录镜像仓库
podman run -d --name httpserver -v ~/.config/container_journal:/var/log/journal:Z -p 8080:8080 registry.lab.example.com/rhel8/httpd-24:1-105
拉起镜像生成容器
podman exec -it httpserver /bin/bash
cd /var/log/journal;ls
查看有没有挂载成功
exit
mkdir -p ~/.config/systemd/user
podman generate systemd --name httpserver --files --new
--new 容器停止时删除容器 --files 将输出的内容打印成文件
--name 会使容器名字更工整
登出容器并让容器停止后自动删除容器 (创建systemd单元文件)
podman rm -f httpserver
停止并且删掉容器
systemctl --user daemon-reload
重载单元文件
systemctl --user enable container-httpserver.service
自启动容器
设置contsvc的服务开机时启动
loginctl enable-linger contsvc
(根据contsvc家目录的单元文件)
loginctl show-user contsvc
查看是否成功
reboot
ssh contsvc@servera
podman ps
重启测试
podman exec -it xxxx /bin/bash
logger -p authpriv.info 'hello contsvc'
进入容器并测试一条命令