容器类似与虚拟机(比虚拟机更轻量化)

  1. yum -y install podman 只装podamn 或者 yum module install -y container-tools 有关容器的包都装上

  2. podman images 查看镜像(刚装完包 ,没镜像是空的) 方法一(下载镜像)网站下载(比如:hub.docker.com) 如果不能联网做下面修改

  3. 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']

  4. 修改文件第二处找到[registries.insecure](下载镜像) egistries = [ ] 文件中括号里没内容 给他将网址加入进去 改为registries = ['registry.lab.example.com'] 保存退出!

  5. podman login regustry.lab.example.com 登入网站,根据提示输入用户密码

  6. podman search nginx 搜索nginx相关镜像(可以搜到nginx的绝对路径)

  7. podman pull +nginx路径 下载镜像 (镜像地址是上面搜出来的)

  8. podman images 下载完之后查看镜像

  • 第二种方法(没有网情况下)(需要有一个镜像文件的包,比如nginx.tar 包)
  1. podman load -i 包名 加载镜像包
  2. podman images 查看

有镜像之后开始使用镜像起容器 (每个镜像都有一个编号) 可以用root也可用普通用户,这里以普通用户为例

  1. uesradd qq 创建用户
    passwd qq 配置密码

  2. ssh qq@111 使用qq用户远程111虚拟机 使用镜像,创建容器

  3. podman search nginx 搜索nginx相关镜像(可以搜到nginx的绝对路径)

  4. podman pull +nginx路径 下载镜像 (镜像地址是上面搜出来的)

  5. podman images 查看镜像

  6. podman run -it nginx bash run是运行 -i是进入交互模式-t是开一个命令终端 nginx是镜像名称 bash开启bash解释器(会切换进入容器里面,里面的程序内容都是容器里面的 exit退出,容器自动关闭)

    此为第一种起容器方法

  • 第二种为:
  1. podman run -d nginx 启动容器 -d放入后台运行
  2. podman ps 可以查看后台运行容器
  3. podman stop +容器的id号 可以关闭 podman ps 可查看
  4. pdman run -d --name mynginx nginx --name 给容器起个名字 这样下次关闭时 可以按名称关闭容器
  5. 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包括全部资料都没了 即使再重新装也没资料的。

    (尽量不要在容器里面存资料,想要存的话,需要把宿主机的目录映射挂载到容器里面)

  1. mkdir /tmp/qq 创建
  2. echo “123” > tmp/qq/1.txt 在tmp下创建一个1.txt(在宿主机上做的资料,没进容器之前)
  3. chmod 777 -R /tmp/qq 给权限
  4. 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内容
  5. echo “321” > myqq/1.txt 在容器里面更改内容
  6. exit 退出
  7. cat /tmp/qq/1.txt 在宿主机查看 可以看到内容123 变成321 总结 映射挂在之后 容器和宿主机的是一个目录,更改内容两边都会变

如何将容器做开启自启动

  1. podman rm --force $(podman ps -aq) 强制删除所有容器
  2. podman -d --name mynginx -v/tmp/qq:/myqq:Z nginx 放入后台
  3. 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 前面是固定的,后面的是自己得名称