容器类似与虚拟机(比虚拟机更轻量化)
yum -y install podman 只装podamn 或者 yum module install -y container-tools 有关容器的包都装上
podman images 查看镜像(刚装完包 ,没镜像是空的) 方法一(下载镜像)网站下载(比如:hub.docker.com) 如果不能联网做下面修改
vim /etc/containers/registries.conf 修改配置文件 找到[registries.search] (搜镜像) registries = ['registry.access.redhat.com','registry.redhat.io'] 表示自动往这个网站里面去找镜像,也可以更改网站 比如hub.docker.com (需要连网才可以) 镜像以这个网址为例 registry.lab.example.com (域名) 将他复制修改到registries = ['registry.access.redhat.com','registry.redhat.io']里面并修改为registries = ['registry.lab.example.com']
修改文件第二处找到[registries.insecure](下载镜像) egistries = [ ] 文件中括号里没内容 给他将网址加入进去 改为registries = ['registry.lab.example.com'] 保存退出!
podman login regustry.lab.example.com 登入网站,根据提示输入用户密码
podman search nginx 搜索nginx相关镜像(可以搜到nginx的绝对路径)
podman pull +nginx路径 下载镜像 (镜像地址是上面搜出来的)
podman images 下载完之后查看镜像
- 第二种方法(没有网情况下)(需要有一个镜像文件的包,比如nginx.tar 包)
- podman load -i 包名 加载镜像包
- podman images 查看
有镜像之后开始使用镜像起容器 (每个镜像都有一个编号) 可以用root也可用普通用户,这里以普通用户为例
uesradd qq 创建用户
passwd qq 配置密码ssh qq@111 使用qq用户远程111虚拟机 使用镜像,创建容器
podman search nginx 搜索nginx相关镜像(可以搜到nginx的绝对路径)
podman pull +nginx路径 下载镜像 (镜像地址是上面搜出来的)
podman images 查看镜像
podman run -it nginx bash run是运行 -i是进入交互模式-t是开一个命令终端 nginx是镜像名称 bash开启bash解释器(会切换进入容器里面,里面的程序内容都是容器里面的 exit退出,容器自动关闭)
此为第一种起容器方法
- 第二种为:
- podman run -d nginx 启动容器 -d放入后台运行
- podman ps 可以查看后台运行容器
- podman stop +容器的id号 可以关闭 podman ps 可查看
- pdman run -d --name mynginx nginx --name 给容器起个名字 这样下次关闭时 可以按名称关闭容器
- podman ps -a -a 查看所有的包括关闭的容器 想重新起的话 podman start +容器名/id号 stop 关闭 podman rm 加容器名称/id号 删除容器
-
容器的存储问题
-
podman run -it --name eee nginx bash 起容器
-
echo > 123 /home/1.txt 在容器里写入东西
-
cat /home/1.txt 能看到
-
exit 退出
-
podman ps 查看就没了
-
podman ps -a 可看到eee
-
podman rm eee 删掉
-
podman ps -a 查看 eee 也没了 随着容器的删除,刚写的/home/1.txt包括全部资料都没了 即使再重新装也没资料的。
(尽量不要在容器里面存资料,想要存的话,需要把宿主机的目录映射挂载到容器里面)
- mkdir /tmp/qq 创建
- echo “123” > tmp/qq/1.txt 在tmp下创建一个1.txt(在宿主机上做的资料,没进容器之前)
- chmod 777 -R /tmp/qq 给权限
- podman run -it --name qwe -v /tmp/qq:/myqq:Z nginx bash 起容器 -v映射挂载到/tmp/qq:/myqq (/tmp/qq 到 /myqq) Z 是告诉selinux 放行,不要拦截, ls 可以查看到多了一个 myqq 这个myqq 就是宿主机的目录,cat查看可以看到之前添加的看到123内容
- echo “321” > myqq/1.txt 在容器里面更改内容
- exit 退出
- cat /tmp/qq/1.txt 在宿主机查看 可以看到内容123 变成321 总结 映射挂在之后 容器和宿主机的是一个目录,更改内容两边都会变
如何将容器做开启自启动
- podman rm --force $(podman ps -aq) 强制删除所有容器
- podman -d --name mynginx -v/tmp/qq:/myqq:Z nginx 放入后台
- podman ps 可以看到容器 但是重启计算机 ,容器会自动关闭
- root 用户能通过systemct enable 起服务是因为在/usr/lib/systemd/system/服务配置文件,但是普通用户在/usr/lib/systemd/system/没权限
- 普通用户如果想把一个服务或者容器起来,就得在自己家目录~/.config/systemd/user/里面创建配置文件
(这个~/.config/systemd/user/默认不存在 需要自己创建)- mkdir -p ~/.config/systemd/user 创建其服务得家目录 (因为创建的是普通用户得,所有切换到普通用户下创建)
- cd ~/.config/systemd/user 进去
- podman generate systemd --name mynginx --files generate 生成systemd得配置文件 --files表示是文件
- systemctl --user daemon-reload 重新读新得配置文件
- podman stop mynginx 关闭名称是mynginx得容器
- systemctl --user enable container-mynginx --now 设置开机自启动,并立刻启动容器 container-mynginx 这个名称是前面generate自动生成得文件名 container-mynginx 前面是固定的,后面的是自己得名称