• Docker中常用的命令


    1、帮助命令

    [1]、显示docker的版本信息

    docker version
    

    image

    image

    [2]、显示docker的系统信息

    docker info
    

    image

    [3]、查看docker中命令的用法

    docker --help
    

    image

    2、镜像相关命令

    [1]、查看镜像

    # 查看本地主机上的镜像
    docker images [OPTIONS]
    
    # 查看本地所有的镜像
    docker images -a
    

    OPTIONS说明:

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

    image

    各个选项说明:

    • REPOSITORY:表示镜像的仓库源
    • TAG:镜像的标签
    • IMAGE ID:镜像ID
    • CREATED:镜像的最后时间
    • SIZE:镜像的大小

    [2]、搜索镜像

    # 从网络中查找需要的镜像,可以通过以下命令搜索
    docker search [OPTIONS] 镜像名称
    
    # 例如搜索mysql
    docker search mysql
    
    # 搜索镜像并且是官方的
    docker search --filter "is-official=true" mysql
    
    # 搜索镜像并starts大于多少的
    docker search --filter stars=10 mysql
    

    OPTIONS说明:

    • --filter=:过滤
    • --no-trunc:只显示完整的镜像描述
    • --automated:只列出automated build类型的镜像

    image

    各个选项说明:

    • NAME:仓库名称
    • DESCRIPTION:镜像的描述
    • STARS:类似Github里面的Star,表示点赞(热度),反应一个镜像的受欢迎程度
    • OFFICIAL:是否为官方发布的镜像
    • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

    [3]、从DockerHub上搜索

    出了通过上面的docker search来搜索镜像之外,还可以去Docker Hub搜索,包括官方镜像和其它公开镜像。官方网址:https://hub.docker.com/search?type=image

    image


    [4]、拉取镜像

    拉取镜像就是从远程Docker仓库下载镜像到本地。

    # 特别注意:如果版本号不指定则默认最新的版本
    docker pull 镜像名称
    docker pull 镜像名称:版本号
    # 例如下载mysql5.7镜像
    docker pull mysql:5.7
    

    下载一个 nginx 的镜像 , 需要注意:如果下载的时候,不指定版本,会下载最新的版本。

    image


    [5]、删除镜像

    # 按照镜像id删除镜像
    docker rmi 镜像ID
    # 按照镜像id删除镜像,-f强制删除
    docker rmi -f 镜像ID
    #删除多个,按照镜像id
    docker rmi -f 镜像ID 镜像ID 镜像ID
    #删除多个,按照镜像名
    docker rmi -f 镜像名1:TAG 镜像名2:TAG
    #删除全部的镜像
    docker rmi -f $(docker images -qa)
    

    删除刚刚下载的 nginx 镜像。

    image

    3、容器相关命令

    [1]、列出正在运行的容器

    docker ps [OPTIONS]
    

    OPTIONS说明:

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

    [2]、创建与启动容器(重要)

    ① 、什么是宿主机?

    说简单点就是主机,比如我们的虚拟机(Linux)是运行在Windows系统上的,那么相对于虚拟机而言,此时正在使用的计算机就是宿主机。那么我们安装的Docker容器的宿主机则是虚拟机,因为它运行在虚拟机上的。


    ②、创建容器命令:

    #创建容器命令如下
    docker run [OPTIONS] 镜像ID/镜像名称 [COMMAND]
    
    #创建并启动容器的简单举例
    docker run -it --name=mycentos centos:7 /bin/bash
    # /bin/bash:放在镜像名后的是命令,表示容器创建之后执行,这里我们希望有个交互式Shell,因此用的是 /bin/bash
    

    OPTIONS说明(注意:下面的每一个参数都非常重要):

    • -i:以交互模式运行容器,通常与-t同时使用
    • -t:为容器中心分配一个伪输入终端,通常与-i同时使用。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
    • -d:后台运行容器,并返回容器ID,也即启动守护式容器(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)
    • --name=容器新名字(=可以用空格代替):为创建的容器命名。
    • -p:表示端口映射,格式为:主机(宿主)端口:容器端口。前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
    • -h:设置容器主机名hostname。
    • -v 或者 --volume:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
    • -m :设置容器使用内存最大值;
    • -e username="ritchie": 设置环境变量,例如给MySQL设置用户名和密码等;
    • --net="bridge": 指定容器的网络连接类型,支持 bridge(会在主机上创建一个名为docker0的虚拟网桥);host(和宿主机共用);none(拥有自己的Network Namespace,需要自己配置);container(和已经存在的一个容器共享) 四种类型;
    • --restart=unless-stopped:随着docker的启动而启动。docker容器启动策略,有这些参数:no,默认策略,在容器退出时不重启容器;on-failure,只有在非0状态退出时才重新启动容器;no-failure:3,在容器非正常退出时重启容器,最多3次;always,无论退出状态如何都重启容器;unless-stopped,在容器退出时总是重启,但不包括Docker守护进程启动时就已经停止的容器(说简单就是不重启Docker容器中已经停止的容器);
    • --privileged=true:授权,防止容器创建失败

    (1) 交互式方式创建容器

    以交互式方式创建并启动容器,启动完成后,直接进入当前容器。使用exit命令退出容器。需要注意的是以此种方式启动容器,如果退出容器,则容器会进入停止状态。可以理解成交互式容器 是前台容器。

    #简单举例
    docker run -it --name=mycentos centos:7 /bin/bash
    # -it:表示运行容器并进入它的命令行
    # --name=mycentos:给当前的容器命名
    # centos:7:使用该镜像创建容器
    # /bin/bash:放在镜像名后的是命令,表示容器创建之后执行的命令,这里我们希望有个交互式Shell,因此用的是 /bin/bash
    

    image

    创建好容器,并且已经进入到容器内部了,可以直接观察前面中括号里面的内容发现,跟创建容器之前不一样了,并且 通过 ll 命令会发现,其实容器内部也是一个 centos , 我们可以把每个容器都看成一个小电脑或者服务器。

    然后查看刚刚创建的容器是否已经有了,这里要使用docker ps -a才行,因为此时不是后台运行的容器。

    image


    (2) 守护式方式创建容器:

    docker run -id --name=mycentos2 centos:7
    

    查看 docker 容器是否已经运行:

    image


    [3]、进入正在运行的容器

    上面创建的守护式容器可以通过这个命令进入:

    docker exec -it 容器名称或者容器ID /bin/bash
    

    image

    [4]、启动容器、重启容器

    #启动容器
    docker start 容器ID或者容器名
    
    #一次启动多个
    docker start $(docker ps -a -q)
    
    #重启容器
    docker restart 容器ID或容器名
    

    [5]、停止容器

    最好先通过 docker ps 查看正在运行的容器

    #停止容器
    docker stop 容器ID或容器名
    
    #强制停止容器
    docker kill 容器ID或容器名
    
    #一次停止多个
    docker stop $(docker ps -a -q)
    

    [6]、删除容器

    #删除已停止的容器
    docker rm 容器ID或容器名
    
    #强制删除容器(包括运行中的)
    docker rm -f 容器ID或容器名
    
    #一次性删除多个容器
    docker rm -f $(docker ps -a -q)
    

    [7]、容器的其它命令

    #查看容器日志
    docker logs 容器ID或容器名
    
    #查看容器详细信息
    docker inspect 容器ID或容器名
    
    #列出或指定容器端口映射
    docker port 容器ID或容器名
    
    #显示一个容器运行的进程
    docker top 容器ID或容器名
    

    [8]、文件拷贝

    将linux宿主机中的文件拷贝到容器内可以使用命令:

    docker cp 需要拷贝的文件或目录 容器ID或名称:容器内路径
    #例如如下命令: 
    docker cp a.txt mycentos2:/usr/local/
    

    image

    将容器中的文件拷贝到linux宿主机中使用如下命令:

    docker cp 容器名称:容器目录 需要拷贝的文件或目录
    #例如如下命令: 
    docker cp mycentos2:/usr/local/a.txt ./
    

    [9]、目录挂载(重要)

    我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器,这样我们就可以直接在宿主机上操作容器中的文件了,所以一般我们都会进行目录的挂载,对于mysql的存储文件路径,一般都会挂载到容器里,因为容器一旦删除了数据也就不再了,但是宿主机的数据不会被删除。操作:在创建容器时 添加-v参数;后边为 宿主机目录:容器目录,例如:

    # 创建并启动容器mycentos3,并挂载linux中的/usr/local/mytest目录到容器的/usr/local/mytest;
    # 也就是在linux中的/usr/local/mytest操作相当于对容器相应目录操作
    docker run -di --name=容器的名字 -v 宿主机目录:容器目录 --name=容器名称 centos:7
    
    #比如:
    docker run -it --name=mycentos3 -v /usr/local/mytest:/usr/local/mytest  centos:7 /bin/bash
    #这样无论我们在宿主机上还是在容器中,在这个目录下对文件做了增删改操作,那么两边都是同步的。
    

    注意:挂载的目录不用提前创建好,会自动创建。

    4、迁移与备份相关命令

    image

    迁移与备份涉及到的命令有:

    • docker commit 容器名 镜像名:将容器保存为镜像
    • docker save –o tar文件名 镜像名:将镜像备份为tar文件
    • docker load -i tar文件名:根据tar文件恢复为镜像

    [1]、容器保存为镜像

    我们可以通过以下命令将容器保存为镜像

    # 容器为镜像的命令:docker commit 容器名 镜像名
    # 保存nginx容器为镜像
    docker commit mynginx mynginx_i
    

    然后使用 docker images 查看生成的镜像。

    [2]、镜像备份

    我们可以通过以下命令将镜像保存为tar 文件

    # 命令形式:docker save –o tar文件名 镜像名
    # 保存镜像为文件 -o:表示output 输出的意思
    docker  save -o mynginx.tar mynginx_i
    

    通过 save 保存成文件之后,在通过 ls 命令进行查看当前目录是否有 tar文件

    [3]、镜像恢复与迁移

    首先我们先删除掉docker中的 mynginx_i 镜像,然后执行此命令进行恢复

    # 命令形式:docker load -i tar文件名
    #-i:表示input输入的文件
    docker load -i mynginx.tar
    

    执行后再次使用 docker images 查看镜像,可以看到镜像已经恢复。

  • 相关阅读:
    leetcode——832. 翻转图像
    leetcode——830. 较大分组的位置
    leetcode——1089.复写零
    leetcode——86. 分隔链表
    leetcode——387. 字符串中的第一个唯一字符
    leetcode——389. 找不同
    leetcode——61. 旋转链表
    leetcode——24. 两两交换链表中的节点
    leetcode——817. 链表组件
    leetcode——234. 回文链表
  • 原文地址:https://www.cnblogs.com/tanghaorong/p/15059316.html
Copyright © 2020-2023  润新知