• Docker手把手教程(二)核心命令


    目录

    一.镜像命令

    二.容器命令

    三.其他命令

    1.日志命令

    2.复制命令

    3.查看容器进程命令


    一.镜像命令

    Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地, Docker 会尝试先从默认镜像仓库下载(默认使用 Docker Hub 公共注册服务器中的仓库 ) ,用户也可以通过配置,使用自定义的镜像仓库。
    镜像下载
    镜像是 Docker 运行容器的前提。
    语法格式
    docker pull 镜像名字:[tag]
    注意:
    如果不指定tag,则下载Docker Hub公共注册服务器中仓库的最新版本。
    tag指定的是版本。
    例如:docker pull centos:7
    查看镜像
    列出本地主机上已有的镜像。
    docker images 
    输入上条指令之后,会显式镜像的几个属性:
    REPOSITORY TAG IMAGE ID CREATED SIZE

    注意其中IMAGE ID是一个东西,代表的是镜像的ID号,注意这里的ID号虽然很长,但是其实前两位即可表示一个ID号了,比如你一个命令中某个参数是ID号,那么你只需要输入这个ID号的前两位即可;而REPOSITORY就是镜像的名字。

    参数:
    • 来自于哪个仓库,比如 ubuntu仓库。镜像的标签信息,比如14.04。
    • 镜像的ID号(唯一)。
    • 创建时间。
    • 镜像大小。
    镜像的ID信息十分重要,它唯一标识了镜像。
    镜像搜索
    搜索远端仓库中共享的镜像 , 默认搜索 Docker Hub 官方仓库中的镜像。
    docker search [镜像名字]
    例如:docker search centos
    参数:
    可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建等。
    删除镜像
    使用镜像的标签删除镜像
    1. docker rmi 源名字
    2. docker rmi image id

    rmi是remove image,即删除镜像的意思。

    举例:

    源名字就是上面跳提到过的REPOSITORY,而image id也在上面提到过。

    二.容器命令

    当我们有了镜像,才可以创建容器, 创建一个centos容器来学习。注意,必须先有镜像才能创建一个容器。

    容器是镜像的运行实例。

    创建容器
    Docker 的容器十分轻量级,用户可以随时创建或者删除容器。
    语法格式
    docker create -it 镜像名字
    -it代表交互式;上面的命令输入之后,如果创建成功会返回一个容器的id号
    注意:
    使用docker create命令新建的容器处于停止状态,可以使用docker start命令来启动它。
    列出容器
    docker ps
    参数:
    -a: 显示未启动容器
    -q:返回容器id号

    如果不加参数则默认显式的是启动的容器。

    如:

    1. docker ps -a
    2. docker ps -q
    3. docker ps -aq

    比如上面的docker ps -aq输出了未启动的容器的id,其中一个容器的id是43f675948db3
    ,而我们现在想启动这个容器,我们可以docker start 43(关于取id的前两位在第一节的查看镜像那里讲过)

    新建并启动容器
    启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态( stopped) 的容器重新启动。所需要的命令主要为docker run ,等价于先执行 docker create 命令 , 再执行 docker start 命令。
    语法格式:
    docker run 镜像名字 /bin/echo 'hello world'
    Docker在后台运行的标准操作包括:
    • 检查本地是否存在指定的镜像,不存在就从公有仓库下载。
    • 利用镜像创建并启动一个容器。
    • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层。
    • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
    • 从地址池配置一个IP地址给容器。
    • 执行用户指定的应用程序(比如上面那个示例命令的/bin/echo 'hello world'就是指定要运行的程序,输出hello world)。
    • 执行完毕后容器被终止。

    下面命令则启动一个bash端,运行用户交互

    docker run -t -i 镜像名字 /bin/bash

     参数:

    其中, -t 选项让 Docker 分配一个伪终端( pseudo-tty) 并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。
    exit 命令退出。
    守护态运行
    更多的时候,需要让 Docker 容器在后台以守护态( Daemonized) 形式运行。用户可以通过添加 -d 参数来实现。即守护态就是在后台运行。
    语法格式:
    docker run -d 镜像名字 /bin/sh -c "while true; do echo hello world ;sleep 1;done"

    上面的命令写了一小段Shell,功能是间歇1s,死循环输出hello world。

    容器启动后会返回一个唯一的 ID ,也可以通过 docker ps 命令来查看容器信息 :
    docker ps
    获取容器输出信息
    docker logs 容器id
    终止容器
    语法格式:
    docker stop 容器id
    处于终止状态的容器,可以通过 docker start 命令来重新启动 :
    docker start 容器id
    此外, docker restart 命令会将一个运行态的容器终止,然后再重新启动
    docker restart 容器id
    进入容器
    在使用 -d 参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach 命令、 docker exec 命令 , 以及 nsenter 工具等。
    比如咱们启动一个centOS容器,结构其实如下

    上图是三个方框,最外层是宿主机,再往里一层是虚拟机,最里层就是容器了,咱们的容器是个操作系统centOS,那么咱们当然可以进入操作系统里玩玩了。

    attach 命令
    语法格式:
    docker attach 容器id

     注意:

    但是使用attach命令有时候并不方便。当多个窗口同时attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作 了。

    但是本来一个正在运行的容器,如果执行了上面的命令, 退出的时候会自动关闭容器(退出执行exit即可),这就是一个缺点,但是下面的命令解决了这个问题,所以一般不用attach命令,一般都用exec命令

    exec 命令
    Docke 1.3 版本起,提供了一个更加方便的工具 exec ,可以直接在容器内运行命令。例如进入到刚创建的容器中, 并启动一个 bash:
    docker exec -it 容器id /bin/bash

    上面这个是一个标准写法,进入容器之后一般要执行一些命令,/bin/bash 

    删除容器
    语法格式:
    docker rm 容器id
    参数:
    • -f, --force=false强行终止并删除一个运行中的容器。
    • -l, --link=false删除容器的连接,但保留容器。
    • -V,--volumes=false删除容器挂载的数据卷。
    退出
    # 如果 docker 容器在启动的时候没有加 -d 参数
    exit # 会直接停止容器并退出
    Ctrt + p + q # 容器不停止并退出

    三.其他命令

    1.日志命令

    遇到容器后动失败不要怕,看报错日志。

    查看日志
    语法格式:
    docker logs 容器id
    参数:
    • -f, --follow 跟踪实时日志
    • --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
    • --tail string 从日志末尾显示多少行日志, 默认是all
    • -t, --timestamps 显示时间戳
    • --until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

    当某条命令参数过多时,可以使用--help来查看有哪些参数,比如:

    1. docker run --help
    2. docker logs --help 

    2.复制命令

    从容器拷贝文件到主机上
    语法格式:
    docker cp 容器id:容器内路径 目录路径

    3.查看容器进程命令

    语法格式:

    docker top 容器id

  • 相关阅读:
    Soundness
    关于“No loop matching the specified signature and casting was found for ufunc lstsq_n”问题的解决
    从零开始搭建Electron项目之运行例程
    Could not find resource src/config/dataConfig.xml错误
    Nginx和Apache的比较、同步异步、高并发
    [附源码]java毕业设计医学季节性疾病筛查系统
    旋转接头安装使用注意事项
    Java的反射机制
    FPGA-1、verilog书写基本格式
    Java easy_trans字典绑定,Java字典注解绑定
  • 原文地址:https://blog.csdn.net/weixin_44593822/article/details/127337032