Docker
开源应用容器引擎,go语言
作用:打包应用到一个容器,随时一波带走
优势:沙箱机制(虚拟系统程序,运行程序都是独立的,不会对现有系统产生影响),开销低
docker架构
三个基本概念
镜像:image,root文件系统
容器:镜像和容器===类似于===面向对象类和实例,镜像是静态的,容器是实体对象,可以被创建,启动,停止,删除,暂停
仓库:保存镜像
但是目前podman是比较流行
podman
podman是开源容器运行的项目
比docker的优势:不需要运行任何守护进程
没有root权限也可以运行
介绍一下再linux系统下的安装:
1、podman 终端执行,检测是否有此命令
2、如果没有,执行:yum install podman
3、查看podman容器运行状态列表:podman ps -a (加上a会显示pause)
4、查看podman镜像列表:podman images
5、运行一个容器:
podman run -i -d -p 80:80 -v /data/:/data/ --privileged --name mytest centos:7.3.1611 /usr/sbin/init
-i: 允许你对容器进行交互
-d: 后台运行 不会进入容器
-p 端口号,左侧服务器指向:右侧容器内端口号,服务器端口不能重复,如果多个容器多个应用,需要nginx反响代理
-v 文件存储,左侧为映射到本地:右侧为容器内文件夹,防止镜像过大,迁移困难
--privileged: 和最后的参数/usr/sbin/init共同使用 才会有更高的权限控制
--name: 自定义容器启动的名称
centos:7.3.1611: 镜像名称 如果本地没有 会从网络上下载
也可以加入其它的参数 如-m 8G --cpus="4"
-m 8G :内存分配为8G
--cpus="4": 分配cpu核心总数为4
6、进入容器:
podman exec -i -t 7f5d968e2cf2 /bin/bash
-i: 允许你对容器进行交互
-t: 在新容器内指定一个伪终端或终端
243c32535da7:容器id可以用podman ps -a查看 也可以用名称代替
7、容器如果是挺值得,开启命令podman start mytest(容器名称)
8、停止运行中的容器,podman stop mytest(容器名称)
9.修改运行的参数 直接是不能修改运行的参数的 所以启动前要想好加入什么样的参数 如果一定要修改 可以先提交出一个容器为一个镜像 podman commit A B
A为容器名称 B为生成的镜像名称 然后重新执行第5步骤 注意如果容器过大这步会导致所有podman命令不能执行 不能进入其他容器 但容器内部运行正常
建议没有其他人操作时这样处理 如果着急执行那就先导出容器 再导入 这个过程前期只会导致podman ps不能执行 最后Storing signatures的过程会和commit效果一样 但时间相较短 10几分钟左右 建议项目目录映射出来 这样容器不会过大
10.删除一个容器 podman rm mytest 最后的参数为容器名称也可以容器id 加-f参数为强制执行 加-f之前一定要观察好正常不能删除报的是什么错
11.删除一个镜像 podman rmi 7f5d968e2cf2最后的参数为镜像id号 可以用podman images查看
12.导出一个压缩镜像 podman save mytest | gzip > mytest.tar.gz
13.导入一个压缩镜像 gunzip -c mytest.tar.gz | podman load
14.导出一个容器podman export mytest > mytest.tar 压缩导出 podman export mytest | gzip> mytest.tar.gz
15.导入一个容器cat mytest.tar | podman import - mytest