一、先讲一下区别
1、DOCKER与PODMAN几乎一样的命令行。
2、但DOCKER是占用进程的:
ps -ef | grep dockerd
docker verion
docker 如果没有root权限是无法启动进程的而podman不需要,如果不给root权限用户也想启动进程,需要在docker组里添加才能启动进程(文件/var/run/dpcler/spck添加用户,需要root权限才能访问),podman普通用户就可以执行
docker权限危害:
普通用户在docker里面有root权限就等于这个用户有了最高权限。
例子:
普通用户在终端里输入sudo 命令时会提示没有权限
但使用docker将sudoers文件映射到docker中的容器中
docker run -it -v /etc/sudoers:/root/sudoers busybox sh
vi sudoers 在里面就可以添加权限,虽然实在容器中修改但映射到主机上使得用户有了root权限
ps -ef | grep pod
podman 普通用户可以查看,但映射到容器podman就不可以查看或修改
如果习惯使用docker 可以使用alias docker=podman映射
导入方法
Docker镜像导出
导出全部的镜像文件
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o haha.tar
传给podman机器
scp /root/centos7-web07.tar root@ip:/root
将镜像文件导入podman
podman load -i haha.tar
Docker容器导出
docker export <ID> -o cat centos7-web07.tar
传给podman机器
scp /root/centos7-web07.tar root@ip:/root
将镜像文件导入podman
comm_id=$(docker ps -a | grep -v 'NAMES' | awk 'BEGIN{OFS=":";ORS=" "} {print $1}')
for comm in $comm_id;
do
if $comm ;then
docker commit $comm
else
break
done