02-Docker相关命令

  • 02-Docker相关命令已关闭评论
  • 182 次浏览
  • A+
所属分类:linux技术
摘要

systemctl命令是系统服务管理器指令命令docker imagesPS:这些镜像是我提前拉取的;新安装的docker应该是一个空列表,只有表头


二、Docker相关命令

2.1、Docker 服务相关命令

systemctl命令是系统服务管理器指令

2.1.1、启动docker服务

  • 命令
    • systemctl start docker
  • 02-Docker相关命令

2.1.2、停止docker服务

  • 命令
    • systemctl stop docker
  • 02-Docker相关命令

2.1.3、重启docker服务

  • 命令
    • systemctl restart docker
  • 02-Docker相关命令

2.1.4、查看docker服务状态

  • 命令
    • systemctl status docker
  • 02-Docker相关命令

2.1.5、设置开机启动docker服务

  • 命令
    • systemctl enable docker
  • 02-Docker相关命令
  • 同样的,也可以设置开机不启动docker服务
    • systemctl disable docker
    • 02-Docker相关命令

2.1.6、查看docker概要信息

  • 命令
    • docker info
  • 02-Docker相关命令

2.1.7、查看docker帮助文档

  • 命令
    • docker --help
  • 02-Docker相关命令

2.2、Docker 镜像相关命令

2.2.0、镜像介绍

  • Docker镜像是由文件系统叠加而成(是一种文件的存储形式),是docker中的核心概念,可以认为镜像就是对某些软件运行的环境以及软件安装包。tomcat镜像文件=tomcat的运行环境+tomcat的软件安装包
  • 用户可以从docker仓库中下载基础镜像到本地,比如开发人员可以从docker仓库下载一个只包含centos7系统的基础镜像,把基础镜像运行成为一个容器(容器相当于操作系统),然后在这个容器中安装jdk、mysql、Tomcat、部署war包,最后将容器打成一个新的镜像
  • 开发人员将这个新的镜像提交给测试人员进行测试,测试人员只需要在测试环境下运行这个镜像成一个容器就可以了,这样就可以保证开发环境和测试环境完全一致
  • 02-Docker相关命令

2.2.1、查看镜像

  • 命令

    • docker images

    • 02-Docker相关命令

    • PS:这些镜像是我提前拉取的;新安装的docker应该是一个空列表,只有表头

  • 参数说明

    • REPOSITORY: 镜像名称
    • TAG: 镜像标签 ,镜像版本号 (默认是可以省略的,也就是latest)
    • IMAGE ID: 镜像ID
    • CREATED: 镜像的创建日期(不是获取该镜像的日期)
    • SIZE: 镜像大小
  • 注意事项

    • tag版本号如果是latest为最新版,安装的时候不需要带版本号,如果不是latest这种的版本,安装的时候必须带上版本号

2.2.2、搜索镜像

  • 如果需要从网络中查找需要的镜像,可以通过如下命令搜索
    • docker search 镜像名称
    • 02-Docker相关命令
    • NAME: 镜像名称
    • DESCRIPTION: 镜像描述
    • STARS: 用户评价,反应一个镜像的受欢迎程度
    • OFFICIAL: 是否官方
    • AUTOMATED: 自动构建,表示该镜像由Docker Hub自动构建流程创建的
  • 当然也可以去官网直接搜索,然后按照它的命令直接复制拉取
    • 02-Docker相关命令

2.2.3、拉取镜像

  • 拉取镜像就是从Docker仓库下载镜像到本地,镜像名称格式为名称:版本号,如果版本号不指定则是最新的版本,命令如下
    • docker pull 镜像名称[:版本号]
  • 这里以拉取centos7为例
    • docker pull centos:7
  • 拉取centos最新版本
    • docker pull centos:latest
  • 这里就不演示了,按照命令拉取即可

2.2.4、删除镜像

  • 按照镜像id删除镜像,或者镜像名称:版本号

    • docker rmi 镜像ID | 镜像的名称:版本号
  • 删除所有镜像(谨慎操作)

    • docker rmi `docker images -q` 
  • 这里也不演示了

2.3、Docker 容器相关命令

2.3.1、查看容器

  • 查看正在运行的容器
    • docker ps
  • 查看所有容器
    • docker ps -a
  • 查看最后一次运行的容器
    • docker ps -l
  • 02-Docker相关命令
  • 因为现在还没创建容器,所有这里不会有显示

2.3.2、创建与运行容器

  • 基于已有的镜像来创建容器,创建与运行使用如下命令

    • docker run
  • 参数说明

    • 参数 意义
      -i 表示运行容器
      -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端/bin/bash
      --name 为创建的容器命名(名称必须唯一)
      -v 表示目录映射关系(前者是宿主机目录,后者是容器的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
      -d 在run后面加上-d参数, 则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,并指定终端,创建后就会自动进去容器)
      -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

创建交互式容器

  • 交互式方式创建并运行容器,启动完成后,会直接进入当前容器。使用exit命令退出容器。以此种方式创建并启动容器,如果退出容器,则容器会变成停止状态
    • ①、先拉取一个镜像;这一步不是每次启动容器都要做的,如果没有该镜像再拉取
      • docker pull centos:7
    • ②、创建并启动名称为 mycentos 的交互式容器
      • docker run -it --name=mycentos centos:7 /bin/bash
      • -it:创建容器并进入容器指定命令行
      • --name:指定容器名称(唯一)
      • centos:7:指定镜像文件(可以是镜像名称或者镜像ID)
      • /bin/bash:进入容器命令行的指令
    • 02-Docker相关命令

创建式守护式容器

  • 对于一个需要长期运行的容器来说,退出之后也不会关闭容器,我们可以创建一个守护式容器,命令如下(容器名称不能重复),创建守护容器并不会马上进入到容器里面
    • ①、创建并启动守护式容器
      • docker run -di --name=mycentos2 centos:7
    • ②、进入容器(exit退出的时候,容器不会停止
      • docker exex -it mycentos2 /bin/bash
    • 02-Docker相关命令
  • PS:守护式容器是一直运行的,退出只是退出终端,它还是在后台运行

2.3.3、停止或启动容器

  • 停止正在运行的容器
    • docker stop 容器名称 | 容器ID
  • 启动已运行过的容器
    • docker start 容器名称 | 容器ID
  • 02-Docker相关命令

2.3.4、重启容器

  • 重启正在运行的容器
    • docker restart 容器名称 | 容器ID
  • 02-Docker相关命令

2.3.5、查看容器信息(包括ip)

  • 查看容器信息的原因
    • 02-Docker相关命令
  • 我们可以通过以下命令查看容器运行的各种数据
    • 在Linux宿主机下查看 mycentos2 的ip
    • docker inspect 容器名称 | 容器ID
    • docker inspect mycentos2
  • 02-Docker相关命令

容器之间在一个局域网内,linux宿主机器可以与容器进行通信;但是外部的服务器是不能与容器直接通信的,如果需要则需要通过宿主机器端口的代理

2.3.6、删除容器

删除一个容器的前提是容器必须是关闭状态

  • 删除指定的容器

    • docker rm 容器名称 | 容器ID
    • docker rm mycentos2
    • 02-Docker相关命令
  • 删除所有容器

    • docker rm `docker ps -a -q` 
    • 02-Docker相关命令

2.4、Docker 容器文件拷贝

2.4.1、向内拷贝

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

    • docker cp 需要拷贝的文件或目录 容器名称:容器目录

    • 具体操作如下所示

    • # 1、创建一个文件cpTest.txt touch cpTest.txt  # 2、复制该该文件到 mycentos 容器的 / 目录下 # 格式:docker cp 源文件  容器名称:路径 docker cp cpTest.txt mycentos2:/  # 3、进入 mycentos 容器 docker exec -it mycentos /bin/bash  # 4、查看容器 ~ 目录下的文件是否存在cpTest.txt ls -l 
  • 02-Docker相关命令

2.4.2、向外拷贝

  • 将文件从容器内拷贝出来到Linu宿主机可以使用如下命令

    • # docker cp 容器名称:容器目录 需要拷贝的文件或目录  # 1、进入容器后创建文件cpTest2.txt  # 2、退出容器  # 3、在Linux宿主机执行复制,将容器 mycentos 的/cpTest2.txt文件复制到宿主机的/root目录下  # 格式:docker cp 容器名称:文件路径  linux系统的路径 docker cp mycentos:/cpTest2.txt /root 
  • 02-Docker相关命令

PS:停止状态的容器也是可以进行文件拷贝的,向内向外都可以

2.5、Docker 容器目录挂载

  • 可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器

  • 创建容器时添加-v参数,后边为宿主机目录:容器目录,例如

    • docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7
    • PS:如果要进行目录挂载必须要在创建容器的时候完成目录挂载,已经存在的容器不能挂载
  • 执行如下命令

    • # 创建linux宿主机器要挂载的目录 (不创建也可以,虚拟机会自动创建) mkdir /root/test   # 创建并启动容器mycentos2 # 并挂载 linux中的/roor/test目录到容器的/usr/local/test # 也就是在 linux中的/root/test中操作相当于对容器相应目录操作  docker run -di -v /root/test:/usr/local/test --name=mycentos2 centos:7  # 在linux宿主机下创建文件  touch /root/test.java  # 进入容器  docker exec -it mycentos2 /bin/bash  ls /usr/local/test  
  • 02-Docker相关命令

PS:: 如果你共享的是多级的目录,可能会出现权限不足的提示。 这是因为CentOS7中的安全模块selinux把权限禁掉了,需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题