Docker 命令和运行原理简单剖析

Docker 运行原理简单剖析

Docker是CS架构,Docker的守护进程运行在主机,通过socket从客户端进行访问.
Docker server端:接受到C端指令,执行命令

Docker常用命令

  1. 帮助命令
    docker version #显示版本号
    docker info #显示系统信息,包括镜像和容器数量等
    docker --help #帮助命令
    docker save #镜像备份 针对镜像或者tar包
    docker load #镜像备份加载 针对镜像或者tar包

  2. 镜像命令

  • docker images 查看dokcer上的所有镜像命令

    Options:
    -a, --all Show all images (default hides intermediate images)
    --digests Show digests
    -q, --quiet Only show image IDs
    -f, --filter filter Filter output based on conditions provided
    --format string Pretty-print images using a Go template
    --no-trunc Don't truncate output
    其中-f不太用,a和q比较常用,也可以组合起来使用,输出所有的镜像id;
    过滤标志-f or –filter格式为key=value。如果超过一个过滤,那么就传递多个标志[如–filter “foo=bar” –filter “bif=baz”]。
    目前支持的过滤有:
    dangling [布尔值 true或false]
    label (label=或label==)
    before ([:], or ) – 过滤出指定镜像之前的镜像
    since ([:], or ) – 过滤出指定镜像之后的镜像

  • docker search 搜索命令

    -f, --filter filter Filter output based on conditions provided
    --format string Pretty-print search using a Go template
    --limit int Max number of search results (default 25)
    --no-trunc Don't truncate output
    例:docker search mysql -f stars=5000

  • docker pull 拉取 下载命令, 也可以docker pull 镜像名字:tag 选择固定版本的镜像,版本需要网页上去看,支持哪些版本

    例:docker pull mysql:5.7
    Options:
    -a, --all-tags Download all tagged images in the repository
    --disable-content-trust Skip image verification (default true)
    --platform string Set platform if server is multi-platform capable
    -q, --quiet Suppress verbose output

  • docker rmi 删除镜像

    例:docker rmi 容器ID1 容器ID2,也可以在-f后加其他运算条件的参数,例:docker rmi -f $(docker images -aq) 把所有的docker id传到$()这个变量接收器中,删除所有!!,$() 也可以被``代替
    

    Options:
    -f, --force Force removal of the image
    --no-prune Do not delete untagged parents
    docker rmi -f 镜像名:tag 镜像明2:tag 一次性删除多个
    docker rmi -f $(docker images -qa) 一次性删除全部

  • docker ps 查看容器进程

    Options:
      -a, --all             Show all containers (default shows just running)也可以看到历史记录
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print containers using a Go template
      -n, --last int        Show n last created containers (includes all states) (default -1)
      例: docker ps -an=1
      -l, --latest          Show the latest created container (includes all states)
          --no-trunc        Don't truncate output
      -q, --quiet           Only display container IDs
      -s, --size            Display total file sizes
    
  • docker tag 给镜像创建一个tag标签

    不会对原来镜像有更改,会重新创建一个镜像使用新的tag

  • docker login 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub 先-u 在输入密码

    Options:
    -p, --password string Password
    --password-stdin Take the password from stdin
    -u, --username string Username

  • docker push进行发布 发布的时候尽量带自己的tag版本信息

    Options:
    -a, --all-tags Push all tagged images in the repository
    --disable-content-trust Skip image signing (default true)
    -q, --quiet Suppress verbose output

  • 虚玄镜像

docker image ls 可以看到镜像名和标签都是none的可以理解为虚玄镜像,一般建议删除(docker image prune).

  1. 容器命令
    说明:有了镜像才创建容器,开始下载一个linux
    docker pull centos:tag
  • 新建容器并启动

    docker run [可选参数] image

    参数说明
    --name="name" 容器名字 tomacat
    -d 后台方式运行
    -it 使用交互方式运行,进入容器查看内容
    -p 指定容器的端口 主机端口:容器端口 -p 8080:8080 还可以设置端口映射
    -P 随机指定端口
    例:docker run -it centos /bin/bash
    docker run -it --rm tomcat:9.0
    在run里面加入--rm,可以让容器运行后就自行删除,通常用于测试环境
    例:docker run -it --name tomcat01 -p 3344:8080 tomcat /bin/bash
    --restart Docker restart参数用于指定自动重启docker容器策略,包含3个选项:no,on-failure[:times],always,unless-stopped
    docker run --restart=no [容器名] no 默认值,表示容器退出时,docker不自动重启容器
    docker run --restart=on-failure:3 [容器名] on-failure 若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
    docker run --restart=always [容器名] always 容器退出时总是重启
    docker run --restart=unless-stopped [容器名] unless-stopped 容器退出时总是重启,但不考虑Docker守护进程启动时就已经停止的容器
    docker update --restart=always [容器名] 如果容器启动时没有设置–restart参数,则通过下面命令进行更新:

  • 退出容器

    exit #直接退出容器
    Ctrl+p+q #容器不退出

  • 删除容器

    docker rm 容器id #不能删除正在运行的容器
    docker rm -f $(docker ps -aq) / `docker ps -aq` #强制删除所有容器包括正在运行的
    docker ps -a -q|xrags docker rm #删除所有容器包括正在运行的

  • 启动和停止容器的操作

    docker start 容器id
    docker restart 容器id
    docker stop 容器id
    docker kill 容器id

  • 后台启动容器

    docker run -d 容器名称/id
    注意点 docker ps 发现centos停止了
    docker容器使用后台运行,就必须要有一个前台进程,否则docker发现没应用就会自动停止
    nginx 容器启动后,发现没有提供服务,就会立刻停止

  • 显示日志

    docker logs -ft
    我们可以用--tail 10 查看历史记录, 比如我们docker run -d centos /bin/bash -c "while true;do echo kuang;sleep 1;done" 让他每一秒输出 haha
    然后可以用docker logs -ft --tail 10 容器id 可以查看到最后面10行的运行记录

  • 查看容器使用情况

    docker system df

  • 查看容器进程信息

    docker top 容器id

  • 查看容器元信息

    docker inspect 容器id
    例:docker inspect 958fe6a7db8b

  • 进入正在运行的容器

    方式1:docker exec -it 容器id
    例:docker exec -it 958fe6a7db8b /bin/bash

    方式2:docker attach-it 容器id
    例:docker attach 958fe6a7db8b
    区别exec 进入容器后重新开启一个终端,而attach 是进入之前那个终端. 而退出的时候,exec进入的时候exit退出容器不会直接退出,而attach的话exit容器会直接退出.建议使用exec

  • 容器内文件复制到主机

    docker 容器文件拷贝不需要容器运行,只要容器在,数据就可以复制,哪怕没有运行
    docker cp 容器id:容器内路径 目的路径
    例:docker cp 6556856f5e9d:/home/rongqinei/rongqinei.py /bin
    export 导出容器压缩包
    docker export 容器id > 文件名.tar
    docker export 58714004fe41 > test.tar
    把tar包导入成镜像
    cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 镜像用户,镜像名,镜像版本号都是自定义的,会导成镜像
    cat test.tar | docker import - aaa/centos:7 -m "测试用"


posted @ 2021-06-29 22:59  零哭谷  阅读(240)  评论(0编辑  收藏  举报