• docker的使用---创建新的镜像(通过修改容器,个人练手理解过程记录,不推荐使用)


    docker基础命令

    ##列出docker客户端命令
    docker
    docker container --help

    ##显示docker的版本和信息
    docker --version docker version docker info
    ##执行docker镜像生成一个容器(容器不是运行状态) docker run [镜像]

    ##列出docker镜像 docker image
    ls
    docker images
    ##列出docker容器(正在运行的,所有的,所有quiet模式的) docker container
    ls docker container ls --all docker container ls -aq

    #停止一个容器
    docker container stop [CONTAINER ID]

     通过修改容器来创建一个新镜像(python2.7.5 + node.js11.10.0 + flask +项目应用demo)

    步骤一:下载基础镜像----只包含centos的镜像(这个镜像里自带python2.7.5)

    #查看官方https://hub.docker.com已有的centos镜像
    docker search centos
    #选择合适自己镜像拉取到本地
    docker pull centos
    [root@izwz92fbqxna6qt4ya9t4nz soft]# docker search centos
    NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    centos                             The official build of CentOS.                   5205                [OK]                
    ansible/centos7-ansible            Ansible on Centos7                              120                                     [OK]
    jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86…   106                                     [OK]
    consol/centos-xfce-vnc             Centos container with "headless" VNC session…   80                                      [OK]
    imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              50                                      [OK]
    centos/mysql-57-centos7            MySQL 5.7 SQL database server                   47                              
    [root@izwz92fbqxna6qt4ya9t4nz soft]# docker pull centos
    Using default tag: latest
    latest: Pulling from library/centos
    Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
    Status: Image is up to date for centos:latest

    步骤二:使用镜像centos创建并以后台模式运行该容器(不用-dit的话,运行之后容器状态不是up,注意-d和-dit不是一个命令)

    docker run -dit centos

    步骤三:找到容器并切入容器里

    #查看运行中的容器
    docker ps
    #查看所有容器
    docker ps -a
    #切进容器
    docker attach [CONTAINER ID 或 wizardly_kirch]
    docker exec -it [CONTAINER ID] /bin/bash
    #退出容器(退出之后容器也停止了)
    exit
    #退出容器(退出之后容器还在运行中)
    先ctrl+p 再 ctrl+q
    [root@izwz92fbqxna6qt4ya9t4nz soft]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES
    8bf91340323d        centos              "/bin/bash"              3 minutes ago       Up 3 minutes                                           wizardly_kirch
    8c5d1bb19a3e        centos              "/bin/bash"              12 minutes ago      Exited (0) 3 minutes ago                               reverent_curran
    [root@izwz92fbqxna6qt4ya9t4nz soft]# docker attach 8bf91340323d
    [root@8bf91340323d /]# 

    有的镜像我直接使用docker attach命令可以正常切入容器中,有时候切进去又无反应,但是使用docker exec -it可以正常切入

    [root@localhost docker]# docker attach bfbcca966a49
    ls
    read escape sequence
    [root@localhost docker]# docker exec -it bfbcca966a49 /bin/bash
    jenkins@bfbcca966a49:/$ 

    ps:查看linux版本发现是centos7.6,python2.7.5

    [root@8bf91340323d /]# cat /etc/centos-release
    CentOS Linux release 7.6.1810 (Core) 
    [root@8bf91340323d /]# python  
    Python 2.7.5 (default, Oct 30 2018, 23:45:53) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.

    步骤四:在该容器里安装和配置所需的环境

    下载node.js的二进制包进行解压安装

    #从主机拷贝到容器的指定目录
    docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
    #从容器拷贝到主机 docker
    cp 容器名:要拷贝到容器里面对应的路径 要拷贝的文件路径

     安装pip和flask,将项目代码也复制到容器中

    步骤五:从修改后的容器导出新的镜像centos:node_flask(镜像名:标签)

    [root@izwz92fbqxna6qt4ya9t4nz soft]# docker commit 541aff7533d9 centos:node_flask
    sha256:724f235e44ba18927651903e68f6802a455aa9b07b823acf48eb50865b8cce4a
    [root@izwz92fbqxna6qt4ya9t4nz soft]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              node_flask          724f235e44ba        8 seconds ago       529MB
    docker              latest              73d492654a09        13 days ago         170MB
    hello-world         latest              fce289e99eb9        7 weeks ago         1.84kB
    centos              latest              1e1148e4cc2c        2 months ago        202MB
    [root@izwz92fbqxna6qt4ya9t4nz soft]# docker rmi docker
  • 相关阅读:
    CSS overflow 隐藏属性
    CSS visibility 隐藏属性
    多线程中的detach
    多线程中join的解释(转)
    lib 和 dll 的区别、生成以及使用详解:(包括变量,函数,类导出3种情形)(转)
    堆和栈的区别
    ZMQ相关
    不同类型的指针加减(就是向前或向后移动)[转]
    memset函数及其用法,C语言memset函数详解
    zmq中的router和dealer
  • 原文地址:https://www.cnblogs.com/yy-cola/p/10417083.html
Copyright © 2020-2023  润新知