Docker简介:

  • Docker 是一个开源的应用容器引擎,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。Docker 的主要优势在于其高效的资源利用和快速的部署能力。与传统的虚拟机相比,Docker 容器所需的资源更少,启动速度更快,这使得在同一硬件上可以运行更多的服务,从而降低成本2。此外,Docker 还提供了镜像(Image)和容器(Container)的概念,镜像是容器的模板,通过镜像可以创建多个容器实例,类似于面向对象编程中的类和对象。官网

Docker镜像常用命令

  • docker pull 【镜像名称】从远端拉取镜像 例如 docker pull nginx(不指定版本默认拉取latest)

  • docker search 【镜像名称】搜索镜像

  • docker images 查看本地镜像

  • docker rmi 【镜像名称 || 镜像ID】删除本地镜像

Docker容器常用命令:

  • docker ps 查看当前容器的状态(只展示运行中的容器)docker ps -a 展示全部。

  • docker run --name nginx -d -p 80:80 nginx:latest (最简单的方式启动一个容器,下面会详细介绍)

  • docker start 【容器ID || 名称】 运行停止的容器(运行其中的进程)

  • docker restart 【容器ID || 名称】 重启容器 (通常是更改了配置文件需要重启生效)

  • docker stop 【容器ID || 名称】 停止容器

  • docker stats 容器id或name  查看容器实时的状态

  • docker rm 【容器ID || 名称】删除容器(如果容器运行中不让删除可以使用 docker  rm -f nginx来强制删除)

  • docker logs 【容器ID || 名称】查看容器运行的日志 (-f 参数可以持续流式查看容器的最新日志输出

  • docker exec -it 【容器ID || 名称】  /bin/bash 进入到容器内部并启动bash命令行(本人一般通过映射的方式在Linux中操作因为进入到容器内部有些命令无法使用,如图所示即为进入到容器内部)

Docker数据卷(Volume)

  • 数据卷:他是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁(宿主机的文件系统通过数据卷和容器内部的目录联通) 解释:将docker内的东西创建数据卷同时docker会在宿主机目录中创建一个对应的真实目录 文件存放位置固定: /var/lib/docker/volumes。

  • docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx  安装nginx同时创建数据卷(html如果写成/html则会将数据卷挂载到宿主机的/html目录中,如果:前面没有参数或者不加:则默认是匿名绑定)

    • html:/usr/share/nginx/html  具名绑定,将 数据卷的名称改为html,原先是一大串字符

    • /html:/usr/share/nginx/html bind mount绑定   将docker安装的软件中的/usr/share/nginx/html目录映射到主机的/html目录中,一切文件都以主机目录中的文件为主(如果文件名称相同,则会被替换成/html中的文件)

    • 当然不光能映射目录也能直接映射文件,当需要映射多个东西时再写-v参数

  • 在执行docker run 命令时,使用-v 数据卷:容器内目录 可以完成数据卷的挂载    当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建数据卷

  • docker inspect container_id  查看数据卷在主机的哪个位置

  • docker volume command 查看有关docker volume的命令

  • docker volume create 创建数据卷

  • docker volume ls 查看所有数据卷

  • docker volume rm 删除指定数据卷

  • docker volume inspect 查看某个数据卷的详情

  • docker volume prune 清除数据卷(删除本地没有使用的volume)

Docker实战

  • Nginx安装

  1. docker run -d --name nginx nginx:latest 这个命令的目的是为了将nginx的配置文件copy出来为了接下来的映射。

#创建好准备映射的目录
mkdir -p /data/nginx/html   
mkdir -p /data/nginx/logs
mkdir -p /data/nginx/conf

#将容器内部关于nginx的配置文件以及html目录copy到刚刚创建好的目录中,为下一步的映射做好准备
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf
docker cp nginx:/usr/share/nginx/html /data/nginx/html

#删除傀儡容器
docker rm -f nginx

// 创建nginx容器并将容器内部的文件映射到容器外部,这样我们对nginx.conf的更改就不需要进入到容器内部进行(数据卷的知识)
// 修改了配置文件记得使用docker restart nginx命令让其配置文件生效。
// 可以将下面的代码写到shell脚本中方便下次启动,下图展示内容即为使用shell脚本启动。
#!/bin/bash
docker run -p 80:80 --name nginx \
 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
 -v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
 -v /data/nginx/logs:/var/log/nginx \
 -v /data/nginx/html:/usr/share/nginx/html \
 -d nginx:latest

接下来使用IP+port访问,若出现nginx字样即为安装成功!

总结:

  • 对于Docker命令来说,越用越熟练与Linux命令一样,常用的命令就几个,剩下的需要了再及时查询即可。感谢你的阅读。