Docker的使用 Docker的常用命令

Docker和Docker的使用

Docker架构

image

  • Docker daemon( Docker守护进程):Docker daemon是一个运行在宿主机( DOCKER-HOST)的后台进程。可通过 Docker客户端与之通信。
  • Client( Docker客户端):Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon通信。图中, docker build等都是 Docker的相关命令。
  • Images( Docker镜像):Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜像中的程序。
  • Container(容器):容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过 Docker API或者 CLI命令来启停、移动、删除容器。
  • Registry:Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在当前宿主机上运行。Docker Hub上存放着大量优秀的镜像, 我们可使用Docker命令下载并使用。

Docker常用命令

基本命令

命令 作用
docker version 可以查看docker的版本信息
docker info 查看docker 的系统信息,镜像和容器数量
docker --help 查看所有的docker命令
docker 命令 --help 查看当前命令的帮助信息
docker system df 显示docker详情
docker volume rm 数据卷的文件夹 删除docker的数据卷文件夹
docker volume prune 删除没用的数据卷
docker volume ls 查看docker 的volume
docker network ls 查看docker的网络

镜像命令

命令 作用 参数 示例 & 解释
docker run [参数] 镜像名 启动镜像 -d 后台运行 --rm 用完即删 docker run -p 8080:8080 -d tomcat
docker images 查看本地所有的镜像 -a 显示所有 -q 只显示id 名称为镜像为虚悬镜像:只是显示镜像信息但是其实并没有在容器中
docker search 镜像名 搜索镜像列表 --filter 过滤 建议直接去dockerHub docker search mysql --filter=STARS=5000 过滤STARS大于5000的镜像
docker pull 镜像名 从远端获取镜像 docker pull tomcat 默认为 lastest版本
docker rmi 名字或id 删除指定镜像 -f $(docker images -aq) 删除所有镜像 docker rmi tomcat 可以通过空格删除多个镜像
docker image prune 删除虚悬镜像 可能由 docker pull 或 docker build 触发
docker tag 镜像id 新的镜像名称:版本 更改镜像的信息

docker run 说明

参数说明

  • –name 给容器指定名称 --name tomcat1
  • -d 让容器在后台运行 (守护态运行)
  • -it 使用交互方式运行 进入容器 docker run -it centos /bin/bash /bin/bash 使用bash进行交互
  • -p 8080:8080 指定端口 左边为宿主机端口 右边为容器端口
  • -P 随机指定端口
  • -v ./webapps/ROOT/:/usr/tomcat/webapps/ROOT/ 数据卷 左边宿主机的映射路径 右边容器的映射路径 中间以 :冒号隔开 如果目录不存在会自动创建
  • -e 配置环境变量
  • 如果没有使用 -d 启动容器 想要退出容器的话 按 CTRL+P+Q 可以不退出容器 退出到容器外

docker run -v 说明
  • 挂载分为 具名挂载匿名挂载

匿名挂载

  • docker run -v /etc/nginx/conf 这个是匿名挂载 只指定容器内目录 不指定宿主机目录
    • 这种情况下 docker 会为该容器 随即创建一个目录

具名挂载

  • docker run -v conf:/etc/nginx/conf 这个是具名挂载 指定卷名称和容器内目录
    • 这种情况下docker会根据你指定的名称生成目录

这两种挂载方式生成的目录在 docker的核心目录

/var/lib/docker/volumes # docker存放数据卷的目录
# 进入目录 可以查看 所有的数据卷
root@yufire:/var/lib/docker/volumes# ls
33c1fdb0df03784e20d585bce84266e40a032ce3bb4d26b9f2467c521f3b2d21  ecc57ad17f08d760aab21286e28eb6da56bb8d483d1f43e3fc5d5293d0263824  redis.conf
5c061cd30891f00fb7e44e02f8309cb982083c04ce03050b32a8b11d4f4fa38c  metadata.db

指定目录挂载

  • docker run -v /etc/nginx/conf:/etc/nginx/conf - 这个是指定目录挂载 容器和宿主机目录共享 自动同步

docker run --volumes-from 说明

容器间数据同步 (共享)

docker run -d --name nginx01 nginx  # 运行主容器

docker run -d --name nginx02 --volumes-from nginx01  # 使用子容器继承父容器
# 两个容器之间的数据就可以胡互通了
  • 如果被继承的父容器关闭了 数据还在吗?
  • 答案是还在: 任意子容器在运行的话 即使只有一个 数据也不会丢失
  • 挂载的容器之间 会进行数据同步 会互传数据

结论

  1. 这种方法可以用作集群之间的配置共享以简化配置

docker pull 说明

如果您下载的镜像本地已经存在低版本的话 docker pull 会进行 分层

分层即: 可以使用本地已经有的低版本与高版本共用的地方 直接使用本地的 在下载其他不一样的地方

  • 好处: 大大节省了存储空间

容器命令

命令 作用 参数 示例
docker rm 名字或id 删除指定容器 -f 强制删除 $(docker ps -aq) 删除全部容器 docker rmi tomcat docker rim -f tomcat
docker ps 查看正在运行的容器 -a 查看所有的容器 包括没运行的 -q 只查看容器的id
docker stats id 查看容器占用宿主机的资源情况
docker start id 启动已停止的容器 docker start 容器id
docker restart id 重启已经停止的容器
docker stop id 停止正在运行的容器 docker stop 容器id
docker kill id 杀死容器 docker kill 容器 id 容器报错的话可以使用该命令
docker exec -it name或id /bin/bash 进入正在运行的指定容器 /bin/bash 为怎么交互 Ctrl+D 或 exit 退出
docker attach 容器id 进入容器 第二种方式 直接进入
docker container prune 删除所有已停止的容器
docker build -t name . 构建Dockerfile -t 指定构建镜像的名称 .代表上下文
docker cp 宿主机目录 容器ID:/容器路径 从宿主机拷贝文件到容器里 docker cp /usr/local/tomcat 96f7f14e99ab:/usr/local/tomcat
docker cp 容器ID:/容器路径 宿主机路径 从容器拷贝文件到宿主机 docker cp 96f7f14e99ab:/usr/local/tomcat /usr/local/tomcat
docker logs id 查看容器启动的日志 -tf --tail 10 显示10条日志 docker logs tomcat或者id
docker top id 查看容器的进程 docker top 96f7f14e99ab
docker inspect id 查看容器的详细信息(元数据)
docker history id 查看镜像是怎么构建出来的

docker exec 命令说明

  • docker exec -it 容器id /bin/bash 以交互模式进入容器 使用 bash进行交互

docker命令大全

猜你喜欢

转载自blog.csdn.net/weixin_43420255/article/details/106495104