【Docker】docker介绍及podman使用命令

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

 

    更多参考菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html

 

    进入容器遇到的问题(待更新):

如果系统语言出现乱码

  【centOS7:https://www.cnblogs.com/djlsunshine/p/11282867.html

   vi ~/.bashrc

   添加:source /etc/profile 进行固化】

    1.如果vim打开文件 中文乱码

 

    cat << EOF > /root/.vimrc

    :set encoding=utf-8

    :set fileencodings=ucs-bom,utf-8,cp936

    :set fileencoding=gb2312

    :set termencoding=utf-8

    EOF


 

    2.如果系统语言出现乱码

 

    解决方法如下

 

    编辑 locale 配置文件,将 LANG=zh_CN.UTF8 改为 LANG=en_US.UTF8 后保存

 

    # vi /etc/locale.conf

 

    LANG=zh_CN.UTF8

 

    # vi /etc/environment

 

    添加两行内容

 

    LANG=zh_CN.utf-8

    LC_ALL=

 

    在运行命令

 

    # source /etc/environment

 

    # localedef -v -c -i en_US -f UTF-8 en_US.UTF-8

 

    如果最后一步可能会报错 不用管

 

    如果还没有改变编码 执行yum install langpacks-zh_CN.noarch

 

    3.容器中时间差了8个小时

 

    podman cp /etc/localtime 容器id:/etc/localtime

 

    前提是服务器时间正常 可以用date命令查看时间

 

    4.容器中的系统目录无颜色

 

    podman cp /etc/profile.d/colorls.sh 容器id:/etc/profile.d/colorls.sh

 

    podman cp /etc/DIR_COLORS 容器id:/etc/DIR_COLORS

    进入容器中 source /etc/profile.d/colorls.sh

 

    5.screen中文乱码

 

    进入screen加入-U参数 前提条件是系统中文不乱码参见第2步

你可能感兴趣的:(工具类功能)