• Docker的基础知识(二)


    Docker的基础知识(二)

    Docker Hub 官网
     

    搜索镜像

    docker search <镜像名>
    
    [root@web01 ~]# docker search centos
    NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    centos                             The official build of CentOS.                   6119                [OK]                
    ansible/centos7-ansible            Ansible on Centos7                              132                                     [OK]
    consol/centos-xfce-vnc             Centos container with "headless" VNC session…   118                                     [OK]
    jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   115                                     [OK]
    centos/systemd                     systemd enabled base container.                 86                                      [OK]
    centos/mysql-57-centos7            MySQL 5.7 SQL database server                   79                                      
    imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                                      [OK]
    

    下载镜像

    docker pull <镜像名>:<标签>
    
    [root@web01 ~]# docker pull hello-world
    Using default tag: latest
    latest: Pulling from library/hello-world
    0e03bdcc26d7: Pull complete 
    Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
    Status: Downloaded newer image for hello-world:latest
    docker.io/library/hello-world:latest
    

     
    列出本地镜像列表

    docker images
    
    [root@web01 ~]# docker images
    REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
    jumpserver/jms_koko        2.0.1               589d376dd1f0        5 weeks ago         356MB
    jumpserver/jms_guacamole   2.0.1               875616016472        5 weeks ago         659MB
    mysql/mysql-server         5.7                 278f8eedd831        3 months ago        338MB
    

    创建容器

    docker run [options] <images> [command]
    

    options:

    -i:表示启动一个可交互的容器,并持续打开标准输入
    -t:表示使用终端关联到容器的标准输入输出上(伪终端)
    -d:表示将容器放置后台运行
    --rm:退出后删除容器
    --name:表示定义容器唯一名称,若不指定,docker会自动生成

    “run -d”一个容器后有一个问题,docker ps -a发现容器已经退出
    原因:docker容器后台运行,就必须要一个前台进程;容器运行的命令如果不是那些一直挂起的命令(如top,tail),就会自动退出

    [root@web01 /server]# docker run  -d ubuntu /bin/sh -c "tail -f /etc/passwd "
    7c53320ff9e2fe5ae052c82e7fd2cb84a8165705a0f6bc32a560267bb74d1fa4
    [root@web01 /server]# docker ps -a
    CONTAINER ID        IMAGE                            COMMAND                  CREATED              STATUS                        PORTS                  NAMES
    7c53320ff9e2        ubuntu                           "/bin/sh -c 'tail -f…"   4 seconds ago        Up 4 seconds                                         serene_albattani
    

    查看容器列表

    docker ps 
    #-a 选项列出所有容器,包括终止的容器
    
    [root@web01 ~]# docker ps -a
    CONTAINER ID        IMAGE                            COMMAND                  CREATED              STATUS                       PORTS                  NAMES
    50d961ce27da        jumpserver/jms_koko:2.0.1        "/bin/bash"              About a minute ago   Exited (127) 8 seconds ago                          jumpserver
    

     
    ‘启动/重启/停止/删除’ 容器

    docker start/restart/stop/rm <容器名>/<或容器ID>
    
    [root@web01 ~]# docker start 50d961ce27da
    50d961ce27da
    [root@web01 ~]# docker ps
    CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                 PORTS                  NAMES
    50d961ce27da        jumpserver/jms_koko:2.0.1   "/bin/bash"              4 minutes ago       Up 3 seconds  
    

    exit容器停止退出,ctrl+P+Q 容器不停止退出
     

    查看容器日志

    docker logs -f -t --tail <容器ID>
    

    -t:加入时间戳
    -f:跟随最新的日志打印
    --tail <数字>:显示最后多少条

    [root@web01 ~]# docker run -d --name hello ubuntu /bin/sh -c "while true;do echo hello;sleep 2;done" #后台运行ubuntu容器,执行脚本:2秒输出一次'hello'.
    [root@web01 ~]# docker logs -tf --tail 3 hello
    2020-08-04T03:58:04.031315538Z hello
    2020-08-04T03:58:06.032629017Z hello
    2020-08-04T03:58:08.033905089Z hello
    

     
    查看容器内部细节

    docker inspect <容器名>
    

     
    连接容器

    docker attach <容器名>
    

    若运行DB或服务器应用程序将无法进行输入,只能看到输出
    缺点:如果两个窗口都attach到同一容器中,两个窗口操作会同步,要退出都退出

     
    从外部运行容器内的命令

    docker exec <容器名> <命令> <参数> 
    #谨慎使用exec,会对容器造成意外影响
    
    #exec 只能在容器运行时使用
    [root@web01 ~]# docker exec hello echo "hello world"
    Error response from daemon: Container ccf9d9b6fc3133bd2c9bb82917a50c813b1f9342ad23dacd470f3605991ad7a5 is not running
    
    [root@web01 ~]# docker ps
    CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                 PORTS                  NAMES
    521f6ecdefe9        ubuntu                   "/bin/bash"              3 seconds ago       Up 2 seconds                                  hello
    [root@web01 ~]# docker exec hello echo "hello world"
    hello world
    

     
    从容器内拷贝文件到主机上

    docker cp <容器名>:/路径/文件 /本地路径
    
    [root@web01 /server]# docker cp ubuntu:/tmp/test.txt ./
    [root@web01 /server]# ls
    test.txt
    

    删除镜像

    docker rmi <容器名>:<标签>
    
    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    《vi和vim》 学习手记(1)
    2013年1月第1个周末
    Oracle基础知识Oracle不同的启动关闭方式
    2013年1月第一个周末
    《vi和vim》 学习手记(2)
    Oracle基础知识数据迁移
    MySQL 显示表字段及注释等信息
    什么是UCenter Home、Discuz!、SupeSite、ECShop和SupeV 这些都是什么?
    mysql远程连接对用户的测试(吴龙波)
    MySQL与SQL的触发器的不同写法
  • 原文地址:https://www.cnblogs.com/ccku/p/13435490.html
Copyright © 2020-2023  润新知