当前位置:服务器 > > 正文

docker进入容器的命令(Docker 最常用的镜像命令和容器命令详解)

时间:2022-03-31 16:38:35类别:服务器

docker进入容器的命令

Docker 最常用的镜像命令和容器命令详解

本文列出了 Docker 使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份。熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习 Docker 的镜像构建、备份恢复迁移、镜像仓库、网络、集群等等更多的内容。

镜像相关命令

  官方文档:https://docs.docker.com/reference/

查看镜像

  • [root@localhost ~]# docker images
    REPOSITORY  TAG   IMAGE ID  CREATED  SIZE
    hello-world  latest  bf756fb1ae65 7 months ago 13.3kB
    
  •   这些镜像都是存储在 Docker 宿主机的 /var/lib/docker 目录下。

    搜索镜像

      如果你需要从网络中查找需要的镜像,可以通过以下命令搜索。

  • docker search 镜像名称
    
  • docker进入容器的命令(Docker 最常用的镜像命令和容器命令详解)

    拉取镜像

      拉取镜像就是从中央仓库下载镜像到本地。

  • docker pull 镜像名称
    
  •   假如我要拉取 centos 镜像到本地,如果不声明 tag 镜像标签信息则默认拉取 latest 版本,也可以通过:https://hub.docker.com/ 搜索该镜像,查看支持的 tag 信息。

    docker进入容器的命令(Docker 最常用的镜像命令和容器命令详解)

      通过查看 tag 信息,如果我们要下载 centos7 的镜像。

  • docker pull centos:7
    
  • 删除镜像

      按镜像 ID 删除镜像。

  • # 删除单个镜像
    docker rmi 镜像ID
    # 删除多个镜像
    docker rmi 镜像ID 镜像ID 镜像ID
    
  •   docker images -q 可以查询到所有镜像的 ID,通过组合命令可以实现删除所有镜像的操作。

  • docker rmi `docker images -q`
    
  • 注意:如果通过某个镜像创建了容器,则该镜像无法删除。

    解决办法:先删除镜像中的容器,再删除该镜像。

    容器相关命令

    查看容器

      查看正在运行的容器。

  • [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    
  •   查看停止的容器。

  • docker ps -f status=exited
    
  •   查看所有容器(包括运行和停止)。

  • docker ps -a
    
  •   查看最后一次运行的容器。

  • docker ps -l
    
  • 创建与启动容器

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
  • 创建并进入容器

      下面这行命令的意思就是通过镜像 AA 创建一个容器 BB,运行容器并进入容器的 /bin/bash

  • docker run -it --name 容器名称 镜像名称:标签 /bin/bash
    
  • 注意:Docker 容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为是空闲状态,就会自动退出。

    退出当前容器

  • exit
    
  • 守护式方式创建容器

  • docker run -di --name 容器名称 镜像名称:标签
    
  • 登录守护式容器方式

  • docker exec -it 容器名称|容器ID /bin/bash
    
  • 停止与启动容器

  • # 停止容器
    docker stop 容器名称|容器ID
    # 启动容器
    docker start 容器名称|容器ID
    
  • 文件拷贝

      如果我们需要将文件拷贝到容器内可以使用 cp 命令。

  • docker cp 需要拷贝的文件或目录 容器名称:容器目录
    
  •   也可以将文件从容器内拷贝出来。

  • docker cp 容器名称:容器目录 需要拷贝的文件或目录
    
  • 目录挂载(容器数据卷操作)

      我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器,而且这个操作是双向绑定的,也就是说容器内的操作也会影响到宿主机,实现备份功能。

      但是容器被删除的时候,宿主机的内容并不会被删除,因为底层是通过拷贝实现的。如果多个容器挂载同一个目录,其中一个容器被删除,其他容器的内容也不会受到影响,同理,底层是拷贝实现的。

      但是容器被删除的时候,宿主机的内容并不会被删除。如果多个容器挂载同一个目录,其中一个容器被删除,其他容器的内容也不会受到影响。

      容器与宿主机之间的数据卷属于引用的关系,数据卷是从外界挂载到容器内部中的,所以可以脱离容器的生命周期而独立存在,正是由于数据卷的生命周期并不等同于容器的生命周期,在容器退出或者删除以后,数据卷仍然不会受到影响,数据卷的生命周期会一直持续到没有容器使用它为止。

      创建容器添加 -v 参数,格式为宿主机目录:容器目录,例如:

  • docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
    # 多目录挂载
    docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
    
  • 目录挂载操作可能会出现权限不足的提示。这是因为 CentOS7 中的安全模块 SELinux 把权限禁掉了,在 docker run 时通过 --privileged=true 给该容器加权限来解决挂载的目录没有权限的问题。

    匿名挂载

      匿名挂载只需要写容器目录即可,容器外对应的目录会在 /var/lib/docker/volume 中生成。

  • # 匿名挂载
    docker run -di -v /usr/local/data --name centos7-02 centos:7
    # 查看 volume 数据卷信息
    docker volume ls
    
  • docker进入容器的命令(Docker 最常用的镜像命令和容器命令详解)

    具名挂载

      具名挂载就是给数据卷起了个名字,容器外对应的目录会在 /var/lib/docker/volume 中生成。

  • # 匿名挂载
    docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
    # 查看 volume 数据卷信息
    docker volume ls
    
  • docker进入容器的命令(Docker 最常用的镜像命令和容器命令详解)

    指定目录挂载

      一开始给大家讲解的方式就属于指定目录挂载,这种方式的挂载不会在 /var/lib/docker/volume 目录生成内容。

  • docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
    # 多目录挂载
    docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
    
  • 查看目录挂载关系

      通过 docker volume inspect 数据卷名称 可以查看该数据卷对应宿主机的目录地址。

  • [root@localhost ~]# docker volume inspect docker_centos_data
    [
     {
     "CreatedAt": "2020-08-13T20:19:51+08:00",
     "Driver": "local",
     "Labels": null,
     "Mountpoint": "/var/lib/docker/volumes/docker_centos_data/_data",
     "Name": "docker_centos_data",
     "Options": null,
     "Scope": "local"
     }
    ]
    
  •   通过 docker inspect 容器ID或名称 ,在返回的 JSON 节点中找到 Mounts,可以查看详细的数据挂载信息。

    docker进入容器的命令(Docker 最常用的镜像命令和容器命令详解)

    只读/读写

  • # 只读。只能通过修改宿主机内容实现对容器的数据管理。
    docker run -it -v /宿主机目录:/容器目录:ro 镜像名
    # 读写,默认。宿主机和容器可以双向操作数据。
    docker run -it -v /宿主机目录:/容器目录:rw 镜像名
    
  • volumes-from(继承)

  • # 容器 centos7-01 指定目录挂载
    docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
    # 容器 centos7-04 和 centos7-05 相当于继承 centos7-01 容器的挂载目录
    docker run -di --volumes-from centos7-01 --name centos7-04 centos:7
    docker run -di --volumes-from centos7-01 --name centos7-05 centos:7
    
  • 查看容器 IP 地址

      我们可以通过以下命令查看容器的元信息。

  • docker inspect 容器名称|容器ID
    
  •   也可以直接执行下面的命令直接输出 IP 地址。

  • docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器ID
    
  • 删除容器

  • # 删除指定容器
    docker rm 容器名称|容器ID
    # 删除多个容器
    docker rm 容器名称|容器ID 容器名称|容器ID
    
  • 之前给大家介绍过Docker run 命令的使用方法详解,感兴趣的朋友可以参考下!

    到此这篇关于Docker 最常用的镜像命令和容器命令详解的文章就介绍到这了,更多相关Docker镜像命令和容器命令内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!

    上一篇下一篇

    猜您喜欢

    热门推荐