• Docker 常用命令


    Docker 理念:一次构建,到处运行

    Docker 核心概念:

    • 镜像:类似于虚拟机的镜像,可以理解为只读的模板,包含了文件系统。一个镜像可以创建多个容器(镜像和容器类似于 Java 中 Class 类和其实例对象)。
    • 容器:容器是从镜像创建的实例,可以将其启动、开始、停止、删除。容器都是相互隔离、互不可见的(Docker 容器是基于 Linux Containers,简称 LXC)。
    • 仓库:集中存放镜像文件的地方。如 maven 的中央仓库集中存放 jar 包,GitHub 集中存放代码。Docker 官方提供的仓库叫 DockerHub,当然也有第三方仓库。

    Docker 工作模式:

    • Docker 是一个 Client-Server 结构的系统。Docker 守护进程运行在主机上, 客户端通过 Socket 连接访问,守护进程从客户端接受命令并管理运行在主机上的容器。
    • Docker 不需要 Hypervisor 实现硬件资源虚拟化,直接使用实际物理机的硬件资源。
    • Docker 利用的是宿主机的内核,不需要 Guest OS(即不需要重新加载一个操作系统内核)。

    一、帮助命令

    # 版本
    docker version
    
    # 信息
    docker info
    
    # 帮助
    docker --help

    二、镜像命令

    # 查看本地镜像
    docker images
    
    # 常用参数
    # -a:列出本地所有的镜像(含中间映像层)
    # -q:只显示镜像ID。
    # --digests:显示镜像的摘要信息
    # --no-trunc:显示完整的镜像信息

    # 搜索仓库镜像
    docker search xxxxxx
    
    # 常用参数
    # --no-trunc:显示完整的镜像描述
    # --filter=stars=100:列出收藏数不小于指定值的镜像
    # --filter=is-automated=true:只列出 automated build 类型的镜像
    # --filter=is-official=true:显示官方镜像

    这里可以看到镜像的详细信息和历史版本:https://hub.docker.com/

    # 下载 mysql 镜像最新版
    docker pull mysql
    docker pull mysql:latest
    
    # 下载 mysql 镜像 5.7.27 版
    docker pull mysql:5.7.27
    
    # 删除 mysql 镜像最新版
    docker rmi mysql
    docker rmi mysql:latest
    
    # 删除 mysql 镜像 5.7.27 版
    docker rmi mysql:5.7.27
    
    # 强制删除
    docker rmi -f 镜像ID
    # 删除多个
    docker rmi -f mysql:latest mysql:5.7.27
    # 删除全部
    docker rmi -f $(docker images -qa)

    三、容器命令

    # 下载一个最新的 centos 镜像
    docker pull centos
    
    # 新建并启动容器,格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    docker run --name="test" -it centos /bin/bash
    
    # 常用 OPTIONS:有些是一个减号,有些是两个减号
    # --name="xxx":为容器指定一个名称;
    # -d:后台运行容器,并返回容器 ID,即启动守护式容器;
    # -i:以交互模式运行容器,通常与 -t 同时使用;
    # -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    # -P:(大写)随机端口映射;
    # -p:(小写)指定端口映射,有四种格式:
    #     ip:hostPort:containerPort
    #     ip::containerPort
    #     hostPort:containerPort
    #     containerPort

    可以看到 shell 已经进入到容器内

    关于 -d 参数:

    Docker 容器后台运行,就必须有一个前台进程。

    容器运行的命令如果不是那些一直挂起的命令(比如运行 top,tail),就会自动退出。

    例如 docker run -d centos,然后使用 docker ps -a 进行查看, 会发现容器已经退出。

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

    # 查看容器
    docker ps
    
    # 常用参数
    # -a:列出当前所有正在运行的容器 + 历史上运行过的。
    # -l:显示最近创建的容器。
    # -n:显示最近n个创建的容器。
    # -q:静默模式,只显示容器编号。
    # --no-trunc:不截断输出。

    管理容器

    # 启动容器
    docker start 容器ID或容器名
    
    # 重启容器
    docker restart 容器ID或容器名
    
    # 停止容器
    docker stop 容器lD或容器名
    
    # 强制停止容器
    docker kill 容器ID或容器名
    
    # 删除已停止的容器
    docker rm 容器ID
    # 删除多个容器
    docker rm -f $(docker ps -a -q)
    docker ps -a -q l xargs docker rm

     查看容器日志

    # 新建容器并运行
    docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
    
    # 查看最后十条日志
    docker logs -f -t --tail 10 容器ID
    
    # -t:是加入时间戳
    # -f:跟随最新的日志打印
    # --tail 数字:显示最后多少条

    其它命令

    # 查看容器内运行的进程
    docker top 容器ID
    
    # 查看容器详情信息
    docker inspect 容器ID
    
    # 容器开机自启动
    docker update --restart=always 容器ID
    
    # 修改容器名字
    docker rename 容器ID 新名称
    
    # 进入正在运行的容器并以命令行交互
    docker exec -it 容器ID /bin/bash
    docker attach 容器ID
    # attach:直接进入容器启动命令的终端,不会启动新的进程
    # exec:是在容器中打开新的终端,并且可以启动新的进程
    
    # 从容器内拷贝文件到主机上,格式:docker cp 容器ID:容器内路径 目的主机路径
    docker cp 960f553ed428:/tmp/abc.txt tmp/def.txt

    https://docs.docker.com/engine/reference/commandline/docker/

  • 相关阅读:
    hdu 4460spfa用map来实现
    hdu 2579
    hdu 2845
    hdu 4462
    hdu 4557
    hdu 4639
    URAL 2078 Bowling game
    UVA
    HDU 5773 The All-purpose Zero 脑洞LIS
    Codeforces Round #368 (Div. 2) C. Pythagorean Triples 数学
  • 原文地址:https://www.cnblogs.com/jhxxb/p/11413453.html
Copyright © 2020-2023  润新知