ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker入门_image、container相关命令

2022-01-10 11:34:06  阅读:160  来源: 互联网

标签:容器 container image 镜像 docker id latest


docker入门_image、container相关命令

镜像仓库服务、镜像仓库、镜像相关概念

镜像仓库服务:docker镜像仓库服务、阿里云镜像服务

镜像仓库:docker镜像仓库服务中会有很多仓库比如 docker官方仓库、个人仓库、微软的镜像仓库

镜像:镜像就是没启动的容器(类似编程中的类、类似vmware中的iso文件) 每个仓库中可以有很多个镜像

image 相关命令

  • 搜索特定镜像

    docker search apline
    ===============================================
    beginner@beginner-virtual-machine:~$ docker search alpine 
    NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    alpine                                 A minimal Docker image based on Alpine Linux…   8311      [OK]       
    mhart/alpine-node                      Minimal Node.js built on Alpine Linux           486                  
    anapsix/alpine-java                    Oracle Java 8 (and 7) with GLIBC 2.28 over A…   478                  [OK]
    frolvlad/alpine-glibc                  Alpine Docker image with glibc (~12MB)          275                  [OK]
    alpine/git                             A  simple git container running in alpine li…   194                  [OK]
    gliderlabs/alpine                      Image based on Alpine Linux will help you wi…   185                  
    ============================================
    STARTS 星级越高镜像一般会越好
    OFFICIAL 是否为官方
    
    只显示官方镜像
    docker search xxxx --filter "is-official=true"
    显示官方镜像并返回50行结果  最多返回100行
    docker search xxxx --filter "is-official=true" --limit 50
    
  • 拉取镜像

    docker pull ubuntu:latest  # 从docker镜像服务中拉取镜像(也可以改成阿里云等其他国内的) ubuntu(没有前缀说明是官方仓库):latest(标签表示最新的 但是不一定是真正最新的)  
    docker image ls # 查看本地镜像
    ================================================
    beginner@beginner-virtual-machine:~$ docker image ls
    REPOSITORY                TAG               IMAGE ID       CREATED         SIZE
    python3.8_zyh             3.0               21451ed8e840   16 hours ago    812MB
    python3.8_zyh             latest            c8ee23b16690   17 hours ago    422MB
    python3.8_zyh             1.0               a7abd70e6690   25 hours ago    180MB
    redis                     6.2.6             7614ae9453d1   2 weeks ago     113MB
    python                    3.8-slim-buster   5cc8cb0c433a   2 weeks ago     114MB
    ubuntu                    latest            ba6acccedd29   2 months ago    72.8MB
    redis                     latest            7faaec683238   2 months ago    113MB
    elasticsearch             7.7.0             7ec4f35ab452   20 months ago   757MB
    mobz/elasticsearch-head   5                 b19a5c98e43b   5 years ago     824MB
    ================================================
    
  • 字段解释

    • REPOSITORY:TAG 就是unbuntu:latest 之后可以通过这个组合进行容器的启动
    • IMAGE ID 每个镜像独有的id 也可以通过id进行容器的启动 例如docker run -it ba6 id不用拼完只需要前几位是独有的即可
    • CREATED 创建时间
    • SIZE 镜像大小
  • 删除镜像

    docker image rm 镜像id or(镜像名:标签)# 如果报错可能是因为容器正在使用中 就算容器已停止但是没删除 也会无法让你删除镜像
    ================================================
    beginner@beginner-virtual-machine:~$ docker image rm ubuntu:latest
    Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - container 2480cdd3277d is using its referenced image ba6acccedd29
    ================================================
    
    # 所以必须先删除容器才能删除镜像
    docker container stop 2480cdd3277d
    docker container rm 2480cdd3277d   
    # 接下来就可以删除镜像了
    
  • 镜像详细信息

    docker image inspect ubuntu:latest 
    ===============================================
    beginner@beginner-virtual-machine:~$ docker image inspect ubuntu:latest 
    [
        {
            "Id": "sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1",
            "RepoTags": [
                "ubuntu:latest"
            ],
            "RepoDigests": [
                "ubuntu@sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322"
            ],
            "Parent": "",
            "Comment": "",
            "Created": "2021-10-16T00:37:47.578710012Z",
            "Container": "249e88be79ad9986a479c71c15a056946ae26b0c54c1f634f115be6d5f9ba1c8",
            "ContainerConfig": {
                "Hostname": "249e88be79ad",
                "Domainname": "",
                "User": "",
                "AttachStdin": false,
                "AttachStdout": false,
                "AttachStderr": false,
                "Tty": false,
                "OpenStdin": false,
                "StdinOnce": false,
                "Env": [
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                ],
                "Cmd": [
                    "/bin/sh",
                    "-c",
                    "#(nop) ",
                    "CMD [\"bash\"]"
                ],
                "Image": "sha256:6c18a628d47eacf574eb93da2324293a0e6c845084cca2ea13efaa3cee4d0799",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
    ..........
    ===============================================
    以上是image的详细信息创建时间 运行的容器 还有 image会有多少层数(之后会有一篇随笔专门讲解现在只做了解 docker镜像是分层的)
    

容器相关命令

  • 运行容器

    docker run -it ubuntu:latest  # -it是返回一个终端交互窗口  -d是后台运行
    docker run -it  id
    # ctrl+P+Q 同时按可以从容器终端返回主机终端 如果直接exit 容器也会推出
    docker run -it  -name hello -p 6379:6379 -v 挂载卷 容器id
    # -name是给容器起一个名字 容器名叫hello   -p是映射端口 主机的端口号:docker容器的端口号
    # -v是挂载卷 可以方便修改配置文件以及可持久化存储 之后再详细写出
    
  • 查看容器

    docker ps 与 docker container ls # 效果相同都可以列出正在运行的容器 个人倾向使用后者
    docker container ls -a # 列出所有容器包括已暂停的
    docker container ls -aq # 列出所有容器的id
    ===============================================
    beginner@beginner-virtual-machine:~$ docker container ls -aq
    2480cdd3277d
    beginner@beginner-virtual-machine:~$ docker container ls -a
    CONTAINER ID   IMAGE           COMMAND   CREATED       STATUS                      PORTS     NAMES
    2480cdd3277d   ubuntu:latest   "bash"    2 hours ago   Exited (1) 58 minutes ago             boring_dirac
    
    ===============================================
    
  • 连接容器

    docker  exec -it 容器id bash  # 连接容器时新开一个终端进程
    docker  exec -it boring_dirac bash # 用容器名称连接 这里连不上的因为容器停止了 只是举个例子
    docker attach #attach到一个已经运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果从这个stdin中exit,会导致容器的停止
    
  • 将容器打包成镜像

    docker commit (容器id or name)   test:latest    #将当前容器打包成一个叫test 标签为latest的镜像  
    
  • 停止容器

    docker container stop 容器id or 容器名 #停止容器
    docker container start 容器id or 容器名 #启动容器
    
    当你停止之前给容器创建了一些文件,你停止之后再次启动 文件是不会消失的
    
  • 删除容器

    docker container stop 容器id or 容器名
    docker container rm 容器id or 容器名  #注意应该先停止后移除 虽然可以直接rm 但是给docker一些反应时间总归是好的
    
    下面两条命令是删除全部容器
    docker container stop $(container ls -aq)
    docker container rm $(container ls -aq)
    
  • 容器生命周期

    容器内有进程容器就不会停止,如果没有进程容器就会终止
    docker run -it ubuntu:latest  此时容器内有一个bash进程 如果exit 容器终止
    docker ctrl +q+p 切换回主机终端  容器bash进程在后台运行
    docker exec -it 容器id bash    现在容器内有两个进程 都是bash  如果当前使用exit 容器不会终止因为还有一个bash进程
    
    如果是docker attach  还是连接原来的那个进程 注意退出的时候要ctrl+p+q 因为只有一个进程 如果直接exit 容器也会停止
    
  • 容器重启策略

    重启策略包括 always、unless-stopped、on-field三种

    doceker container run --restart always sleep 10

    • always

      除非明确stop  否则一直存在
      当在bash中exit后容器停止 但因为是always 容器马上后台重启
      当docker重启时 即使之前stop过 容器也会启动
      
    • unless-stopped

      与always最大的区别是当docker重启时 之前stop过的容器不会启动
      
    • on-field

      容器异常退出时(返回值不是0) 重启容器
      在docker重启时容器也会重启
      

标签:容器,container,image,镜像,docker,id,latest
来源: https://www.cnblogs.com/beginnerzyh/p/15783721.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有