美文网首页
4.Docker Image

4.Docker Image

作者: 香沙小熊 | 来源:发表于2020-02-25 15:39 被阅读0次

    1.什么是Container

    container大致是这么一个东西:

    • 运行image后对应的实例
    • container由以下几个部分组成
    1. 一个Docker镜像
    2. 根据Docker镜像以及内核形成的linux可执行环境

    通过Image创建的
    在Image layer之上建立一个container layer(可读写)
    类比面向对象,类和实例,容器就是实例,Image就是类
    Image负责application的存储和分发,Container负责运行app

    2.docker container常用命令:

    container命令 作用
    attach 将本地标准输入,输出和错误流附加到正在运行的容器
    commit 根据容器的更改创建新图像
    cp 在容器和本地文件系统之间复制文件/文件夹
    create 创建但不运行
    diff 检查容器文件系统上文件或目录的更改
    exec 在正在运行的容器中运行命令
    export 将容器的文件系统导出为tar存档
    inspect 显示容器的详细信息
    kill 杀死一个或多个正在运行的容器
    logs 获取容器的日志
    ls 显示所有容器
    pause/unpause 暂停/停止暂停容器
    port 列出端口映射或容器的特定映射
    prune 删除所有已经停止的容器
    rename 给容器重新命名
    restart 重新启动容器
    rm 删除容器
    run 运行容器
    start/stop 启动或停止容器
    stats 显示容器资源使用情况统计信息的实时流
    top 查看容器运行进程
    update 升级容器配置
    wait 阻止,直到一个或多个容器停止,然后打印退出代码
    显示所有容器
    • docker container ls 命令可以查看当前正在运行的容器
    [root@localhost hello-world]# docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    
    • docker container ls -a 可以列举出所有的容器,包括正在运行的和没有运行的容器


      image.png
    运行docker容器
    1. 运行docker容器可以使用 docekr run <IMAGE STRING>,但用这个命令运行的容器会在运行完后,容器就自动退出了,不能跟用户有交互的效果。
    2. 想要有交互效果可以使用docker run -it <IMAGE STRING>命令。
    [root@localhost hello-world]# docker run -it 5e35e350aded
    [root@f96ab002a980 /]# 
    

    5e35e350aded 是docker 中centos的容器id

    我们可以看到,这样就相当于进入了一个操作系统里面。另起一个终端,输入docker container ls,可以看到当前正在运行的容器:

    [root@localhost ~]# docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    f96ab002a980        5e35e350aded        "/bin/bash"         2 minutes ago       Up 2 minutes                            jovial_lewin
    
    1. 后台运行container容器,使用 docker run -d <IMAGE STRING>

    2. 退出当前正在运行的容器,键入exit命令。

    运行docker容器 简写
    docker ps -a 命令等价于docker container ls -a
    
    [root@localhost ~]# docker ps -a 
    CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS                       PORTS               NAMES
    e932971475d2        5e35e350aded           "/bin/bash"         2 minutes ago       Exited (0) 2 minutes ago                         infallible_aryabhata
    2097b496ffa7        5e35e350aded           "/bin/bash"         2 minutes ago       Exited (0) 2 minutes ago                         eager_chaplygin
    f96ab002a980        5e35e350aded           "/bin/bash"         6 minutes ago       Exited (127) 2 minutes ago                       jovial_lewin
    ec7f5537703e        5e35e350aded           "/bin/bash"         39 minutes ago      Exited (0) 39 minutes ago                        vibrant_franklin
    ca3d19e484fc        kpioneer/hello-world   "/hello"            4 hours ago         Exited (13) 4 hours ago                          lucid_mendeleev
    
    列举出所有container的id

    -q:列出所有的id

    docker container ls -aq
    
    [root@localhost ~]# docker container ls -aq
    2097b496ffa7
    f96ab002a980
    ec7f5537703e
    ca3d19e484fc
    

    上面这条命令的效果跟命令docker container ls -a | awk {'print$1'}是一样的:

    [root@localhost ~]# docker container ls -a | awk {'print$1'}
    CONTAINER
    2097b496ffa7
    f96ab002a980
    ec7f5537703e
    ca3d19e484fc
    

    列举出所有已退出container

    [root@localhost ~]# docker container ls -f "status=exited"
    CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS                        PORTS               NAMES
    2097b496ffa7        5e35e350aded           "/bin/bash"         12 minutes ago      Exited (0) 12 minutes ago                         eager_chaplygin
    f96ab002a980        5e35e350aded           "/bin/bash"         16 minutes ago      Exited (127) 12 minutes ago                       jovial_lewin
    ec7f5537703e        5e35e350aded           "/bin/bash"         49 minutes ago      Exited (0) 49 minutes ago                         vibrant_franklin
    ca3d19e484fc        kpioneer/hello-world   "/hello"            4 hours ago         Exited (13) 4 hours ago                           lucid_mendeleev
    

    列举出所有已退出container的id

    [root@localhost ~]# docker container ls -f "status=exited" -q
    2097b496ffa7
    f96ab002a980
    ec7f5537703e
    ca3d19e484fc
    
    docker 删除某个Container的命令
    docker rm <CONTAINER ID>
    
    [root@localhost ~]# docker  rm  e932971475d2
    e932971475d2
    
    删除掉所有的container
    docker rm $(docker container ls -aq)
    
    [root@localhost ~]# docker rm $(docker container ls -aq)
    2097b496ffa7
    f96ab002a980
    ec7f5537703e
    ca3d19e484fc
    
    删除掉所有已退出的container
    docker rm $(docker container ls -f "status=exited" -q)
    
    [root@localhost ~]# docker rm $(docker container ls -f "status=exited" -q)
    6b1d4d788291
    be8fc00a50d2
    f720c86b7c09
    af40e1b22328
    

    相关文章

      网友评论

          本文标题:4.Docker Image

          本文链接:https://www.haomeiwen.com/subject/ryftchtx.html