• Docker常用命令(五)


    一、帮助命令

    docker version
    docker info
    # 重要
    docker --help

    可以使用docker COMMAND --help 查看某个命令具体如何使用。

    二、镜像命令

    1. docker images:列出本地主机上的镜像

    各个选项说明:
      REPOSITORY:表示镜像的仓库源
      TAG:镜像的标签
      IMAGE ID:镜像ID
      CREATED:镜像创建时间
      SIZE:镜像大小

    同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

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

    2. docker search 某个XXX镜像名字

    注:从镜像仓库 https://hub.docker.com 搜索

    # docker search [OPTIONS] 镜像名字
    
    # 显示完整的镜像描述
    docker search --no-trunc tomcat 
    
    # 较为重要:列出收藏数不小于指定值的镜像。
    docker search -s 30 tomcat 
    
    # 只列出 automated build类型的镜像
    docker search --automated tomcat 

    3. docker pull 某个XXX镜像名字

    下载镜像

    docker pull 镜像名字[:TAG]

    如果不加TAG,默认拉取的是镜像名字:latest(即最新版本)

    4. docker rmi 某个XXX镜像名字ID

    删除镜像

    (1) 删除单个

      docker rmi -f 镜像ID

    注:不加:TAG,默认删除的是:latest

    (2) 删除多个

      docker rmi -f 镜像名1:TAG 镜像名2:TAG 

    (3) 删除全部

      docker rmi -f $(docker images -qa)

    三、容器命令

    有镜像才能常见容器,拉取镜像测试:docker pull centos

    1. 新建并启动容器

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

    启动交互式容器:

    “root@1b7d3abdedd8”说明已进入到容器ID为1b7d3abdedd8的一个终端。

    较为完整的 docker run 选项:
    
         --add-host list                  添加自定义主机到IP映射(主机:IP)
     -a, --attach list                    连接到stdin、stdout或stderr
         --blkio-weight uint16            块IO(相对权重),介于10到1000之间,或0到禁用(默认为0)
         --blkio-weight-device list       块IO权重(相对设备权重)(默认值[])
         --cap-add list                   添加Linux功能
         --cap-drop list                  放弃Linux功能
         --cgroup-parent string           容器的可选父cgroup
         --cidfile string                 将容器id写入文件
         --cpu-period int                 限制CPU CFS(完全公平调度程序)周期
         --cpu-quota int                  限制CPU CFS(完全公平调度程序)配额
         --cpu-rt-period int              限制CPU实时周期(微秒)
         --cpu-rt-runtime int             限制CPU实时运行时间(微秒)
     -c, --cpu-shares int                 CPU共享(相对权重)
         --cpus decimal                   CPU数量
         --cpuset-cpus string             允许执行的CPU(0-301--cpuset-mems string             允许执行的微机电系统(0-301-d, --detach                         在后台运行容器并打印容器ID
         --detach-keys string             重写用于分离容器的键序列
         --device list                    将主机设备添加到容器
         --device-cgroup-rule list        将规则添加到cgroup allowed devices列表
         --device-read-bps list           限制设备的读取速率(字节/秒)(默认为[])
         --device-read-iops list          限制设备的读取速率(IO/秒)(默认值[])
         --device-write-bps list          限制对设备的写入速率(字节/秒)(默认值[])
         --device-write-iops list         限制设备的写入速率(IO/秒)(默认值[])
         --disable-content-trust          跳过图像验证(默认为true)
         --dns list                       设置自定义DNS服务器
         --dns-option list                设置DNS选项
         --dns-search list                设置自定义DNS搜索域
         --domainname string              容器NIS域名
         --entrypoint string              覆盖图像的默认入口点
     -e, --env list                       设置环境变量
         --env-file list                  读取环境变量文件
         --expose list                    公开一个或一系列端口
         --gpus gpu-request               要添加到容器的GPU设备(“all”用于传递所有GPU)
         --group-add list                 添加要加入的其他组
         --health-cmd string              运行以检查运行状况的命令
         --health-interval duration       运行检查之间的时间(m s s m h)(默认为0s)
         --health-retries int             需要连续失败才能报告不正常
         --health-start-period duration   开始运行状况重试倒计时之前容器初始化的开始时间
                                          (m s s m h)(默认为0)
         --health-timeout duration        允许一个检查运行的最大时间(ms s m m h)(默认值0)
         --help                           打印使用
     -h, --hostname string                容器主机名
         --init                           在转发信号和获取进程的容器中运行init
     -i, --interactive                    即使没有连接,也保持stdin打开
         --ip string                      IPv4地址(例如172.30.100.104--ip6 string                     IPv6地址(例如,2001:db8::33--ipc string                     要使用的IPC模式
         --isolation string               集装箱隔离技术
         --kernel-memory bytes            内核内存限制
     -l, --label list                     在容器上设置元数据
         --label-file list                读取以行分隔的标签文件
         --link list                      将链接添加到另一个容器
         --link-local-ip list             容器IPv4/IPv6链路本地地址
         --log-driver string              容器的日志驱动程序
         --log-opt list                   日志驱动程序选项
         --mac-address string             容器MAC地址(例如92:d0:c6:0a:29:33-m, --memory bytes                   记忆极限
         --memory-reservation bytes       存储器软限制
         --memory-swap bytes              交换限制等于内存加交换:'-1'以启用无限制交换
         --memory-swappiness int          调整容器内存交换(0到100)(默认-1--mount mount                    将文件系统装载附加到容器
         --name string                    为容器指定名称
         --network network                将容器连接到网络
         --network-alias list             为容器添加网络范围的别名
         --no-healthcheck                 禁用任何容器指定的运行状况检查
         --oom-kill-disable               禁用OOM杀手
         --oom-score-adj int              调整主机的OOM首选项(-1000到1000)
         --pid string                     要使用的PID命名空间
         --pids-limit int                 调整容器PIDS限制(设置-1表示无限制)
         --privileged                     授予此容器扩展权限
     -p, --publish list                   将容器的端口发布到主机
     -P, --publish-all                    将所有公开的端口发布到随机端口
         --read-only                      将容器的根文件系统装载为只读
         --restart string                 重新启动策略以在容器退出时应用(默认为“否”)
         --rm                             容器退出时自动拆卸
         --runtime string                 用于此容器的运行时
         --security-opt list              安全选项
         --shm-size bytes                 /dev/shm的大小
         --sig-proxy                      代理接收到进程的信号(默认为true)
         --stop-signal string             停止容器的信号(默认为“sigterm”)
         --stop-timeout int               停止容器超时(秒)
         --storage-opt list               容器的存储驱动程序选项
         --sysctl map                     sysctl选项(默认映射[])
         --tmpfs list                     装入tmpfs目录
     -t, --tty                            分配一个伪tty
         --ulimit ulimit                  ulimit选项(默认值[])
     -u, --user string                    用户名或uid(格式:<name uid>[:<group gid>])
         --userns string                  要使用的用户命名空间
         --uts string                     要使用的uts命名空间
     -v, --volume list                    绑定装入卷
         --volume-driver string           容器的可选卷驱动程序
         --volumes-from list              从指定容器装入卷
     -w, --workdir string                 容器内的工作目录

    2. 列出当前所有正在运行的容器

    docker ps [OPTIONS]
    # OPTIONS说明(常用):
    # -a :列出当前所有正在运行的容器+历史上运行过的。 eg: docker ps -a # -l :显示最近创建的容器。 eg: docker ps -l # -n:显示最近n个创建的容器。 eg: docker ps -n 3 # -q :静默模式,只显示容器编号。 eg: docker ps -q # --no-trunc :不截断输出。 eg: docker ps --no-trunc

    CONTAINER ID:容器ID,如上面启动交互式容器的那一个字符串

    IMAGE:镜像ID

    CREATED:创建时间

    STATUS:状态,Up表示正在运行,Exited表示已停止退出

    PORTS:映射端口

    NAMES:容器名字,可以自己指定

    3. 退出容器

    # 两种退出方式
    # 第一种:容器停止退出,在容器终端输入exit
    # 第二种:容器不停止退出,在容器终端按Ctrl+P+Q

    第二种退出方式:

    4. 启动容器

    # docker start 容器ID或者容器名
    docker start 1b7d3abdedd8

    原因:docker服务启动时定义的自定义链DOCKER由于某种原因被清掉,重启docker服务即可重新生成自定义链DOCKER。

    # 重启docker服务后再启动容器
    systemctl restart docker
    docker start 1b7d3abdedd8

    5. 重启容器

    # docker restart 容器ID或者容器名
    docker restart 1b7d3abdedd8

    6. 停止容器

    # docker stop 容器ID或者容器名
    docker stop 1b7d3abdedd8

    7. 强制停止容器

    # docker kill 容器ID或者容器名
    docker kill 1b7d3abdedd8

    8. 删除已停止的容器

    # docker rm 容器ID
    docker rm 1b7d3abdedd8
    
    # 强制删除
    docker rm -f  1b7d3abdedd8
    
    # 一次性删除多个容器
    docker rm -f $(docker ps -a -q)
    docker ps -a -q | xargs docker rm

    9. 启动守护式容器

    docker run -d 容器名

    问题:docker ps -a 进行查看, 会发现容器已经退出

    很重要的要说明的一点:Docker容器后台运行,就必须有一个前台进程。

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

    这是docker的机制问题,容器后台启动后,会立即自杀,因为他觉得他没事可做了。

    所以,我们只要不让容器自动退出就行。

    # 以后台模式运行centos:docker run -d centos
    # /bin/bash -c "while true;do echo hello zzyy;sleep 2;done" 循环打印
    # eg:docker run -d tomcat /bin/bash -c "while true;do echo hello linhw;sleep 2;done"
    docker run -d centos /bin/bash -c "while true;do echo hello linhw;sleep 2;done"

    10. 查看容器日志

    # docker logs -f -t --tail 容器ID
    # 选项说明
    # -t 是加入时间戳
    # -f 跟随最新的日志打印
    # --tail 数字 显示最后多少条
    docker logs -f -t --tail 3 1b652326460e

    11. 查看容器内运行的进程

    docker top 容器ID

    12. 查看容器内部细节

    docker inspect 容器ID

    13. 进入正在运行的容器并以命令行交互

    # 第一种:docker exec -it 容器ID bashShell
    # 进入容器:docker exec -it 1b652326460e # 执行命令: ls -l /tmp/,这种不会进入容器终端命令行 docker exec -it 1b652326460e ls -l /tmp/ # 会进入到容器终端命令行 docker exec -it 1b652326460e /bin/bash
    # 第二种:docker attach 容器ID
    docker attach 1b652326460e

    两者的差别:

    • attach 直接进入容器启动命令的终端,不会启动新的进程
    • exec 是在容器中打开新的终端,并且可以启动新的进程

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

    # docker cp  容器ID:容器内路径 目的主机路径

    15. 从主机上拷贝到容器内

    #docker cp 本地文件路径 容器ID:容器内路径
    docker cp /var/fdfs/01.jpg e06f2fd36ee4:/var/fdfs/

    四、命令总结

    attach    # 当前 shell 下 attach 连接指定运行镜像
    build     # 通过 Dockerfile 定制镜像
    commit    # 提交当前容器为新的镜像
    cp        #从容器中拷贝指定文件或者目录到宿主机中
    create    # 创建一个新的容器,同 run,但不启动容器
    diff      # 查看 docker 容器变化
    events    # 从 docker 服务获取容器实时事件
    exec      # 在已存在的容器上运行命令
    export    # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
    history   # 展示一个镜像形成历史
    images    # 列出系统当前镜像
    import    # 从tar包中的内容创建一个新的文件系统映像[对应export]
    info      # 显示系统相关信息
    inspect   # 查看容器详细信息
    kill      # kill 指定 docker 容器
    load      # 从一个 tar 包中加载一个镜像[对应 save]
    login     # 注册或者登陆一个 docker 源服务器
    logout    # 从当前 Docker registry 退出
    logs      # 输出当前容器日志信息
    port      # 查看映射端口对应的容器内部源端口
    pause     # 暂停容器
    ps        # 列出容器列表
    pull      # 从docker镜像源服务器拉取指定镜像或者库镜像
    push      # 推送指定镜像或者库镜像至docker源服务器
    restart   # 重启运行的容器
    rm        # 移除一个或者多个容器
    rmi       # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
    run       # 创建一个新的容器并运行一个命令
    save      # 保存一个镜像为一个 tar 包[对应 load]
    search    # 在 docker hub 中搜索镜像
    start     # 启动容器
    stop      # 停止容器
    tag       # 给源中镜像打标签
    top       # 查看容器中运行的进程信息
    unpause   # 取消暂停容器
    version   # 查看 docker 版本号
    wait      # 截取容器停止时的退出状态值
  • 相关阅读:
    Android-自定义meta-data扩展数据
    (转载)【Android】ViewGroup全面分析
    小问题记录
    Gson使用 .Net中的日期序列化成带字母T的格式,Gson发序列化问题
    Android中自定义textview可以进行自体设置
    .Net版的BeanUtils
    Ksoap2-android 添加网络超时的实现
    Html5 viewport 解释
    计算两个日期之间相差的月数
    Android中的Adapter内,有getView方法
  • 原文地址:https://www.cnblogs.com/myitnews/p/11509214.html
Copyright © 2020-2023  润新知