深入解析:docker基础入门

docker基础入门

  • docker是一个容器化部署工具,配置各种环境变量,配置各种东西,比如麻烦的要死的tomcat、mysql等,docker把所有你配置的全部打包给生产,直接跑就行。

前言

  • 学习分布式docker必不可少,快速部署项目的首选。建议先去入门Linux后学习会非常快。如果没有学过建议看看我的另一篇博客,适合有一定编程基础的学生看的。
  • 本文章关于docker的安装、基本命令、两种挂载方式。

1.安装docker

  • 1.准备好vmware和centos,准备好linux虚拟机。
  • 2.安装yum管理工具,命令:
yum install -y yum-utils # 注意:需要root权限。
  • 3.添加docker软件源,命令:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 注意:需要root权限。
  • 4.安装docker引擎,命令:
yum install -y docker-ce docker-ce-cli containerd.io
  • 5.验证docker,命令:
systemctl status docker

命令集:

在这里插入图片描述

  • 6.在阿里云配置镜像,在这里,根据提示复制粘贴命令即可。

在这里插入图片描述

2.镜像和容器

  • 镜像:当我们利用docker安装应用的时候,docker会自动搜索并下载应用镜像,不需要手动解压了,下载好就可以直接使用。
  • 容器:docker在运行时会创建一个隔离环境,称之为容器,各个服务之间互不影响。
  • 镜像仓库:存储和管理镜像的平台,能够让docker直接下载镜像的平台。

3.部署MySQL

  • 暂时看不懂可以往后看。
  • 1.命令:
docker run -d # 创建并运行一个容器 -d是让容器自动后台运行
--name mysql # 容器的名字 必须唯一
-p 3306:3306 # 设置端口映射,意思是把外部端口映射到内部实际mysql服务的端口
-e TZ=Asia/Shanghai # e是environment的缩写,设置环境变量
-e MYSQL_ROOT_PASSWORD=123
mysql
  • 2.好像阿里云的镜像源还是会超时,作者卡了1个小时,超时是很正常的,国外的已经限制了访问,所以建议这样配置/etc/docker/daemon.json:

在这里插入图片描述

  • 配置好完成后需要重启docker服务,
  • 命令:
systemctl daemon-reload
systemctl restart docker
  • 下载中:

在这里插入图片描述

  • 下载成功后查看docker启动的进程:
  • 语法:
docker ps -a

在这里插入图片描述

4.常用命令

  • 官方网站太卡了,找到一个菜鸟教程的:命令大全:命令大全

4.1 镜像操作

4.1.1 查看本地镜像
  • 1.语法:docker images
  • 2.功能:查看所有本地镜像。

在这里插入图片描述在这里插入图片描述

4.1.2 拉取镜像源
  • 1.语法:docker pull + 镜像名,不写版本号就是最新版本。
  • 2.功能:从网上拉取一个镜像。
  • 我的已经拉取过了:

在这里插入图片描述

4.1.3 打包镜像
  • 1.语法:docker save [-o] 文件名 镜像:版本号
  • 2.功能:将镜像打包成一个压缩包。

在这里插入图片描述

4.1.4 删除镜像
  • 1.语法:docker rmi 镜像:版本号
  • 2.功能:删除本地镜像。
  • 3.含义:rmi表示remove images 就是删除镜像的意思。
    在这里插入图片描述
4.1.5 读取镜像
  • 1.语法:docker load [-i -q] 压缩包名
  • 2.功能:读取镜像文件,压缩包直接load打开即用。
  • 3.选项:-i表示指定需要的压缩包,是必须的,不用管就行,无脑加。
  • -q表示静默模式,不输出下载信息。

在这里插入图片描述

4.2 容器操作

4.2.1 创建容器
  • 1.语法:docker run -d --name 容器自定义命名 -p 外部端口:容器内端口 -e 环境变量 镜像名称
  • 2.功能:创建并运行容器。

在这里插入图片描述

4.2.2 查看容器运行状态
  • 1.语法:docker ps [-a]
  • 2.功能:查看容器的运行状态,选项可以查看命令大全看太多了,-a这里表示显示全部的容器状态,包括已启动和未启动的。不加就只显示正在运行的容器。

在这里插入图片描述

4.2.3 停止运行的容器
  • 1.语法:docker stop 容器名/容器ID
  • 2.功能:停止docker中运行的容器。

在这里插入图片描述

4.2.4 启动未启动的容器
  • 1.语法:docker start 容器名
  • 2.功能:启动未启动的容器,比如我们刚刚停止的nginx容器,它并没有删除,而是停止了。

在这里插入图片描述

4.2.5 查看容器日志
  • 1.语法:docker logs [-f] 容器名
  • 2.功能:查看容器的日志。
  • 3.-f表示持续跟踪日志,按ctrl + c退出。

在这里插入图片描述

4.2.6 进入容器内部
  • 1.语法:docker exec [-i -t] 容器名 COMMAND
  • 2.功能:在容器内部使用COMMAND命令。
  • 3.含义:容器内部其实也是一个模拟的虚拟机,里面也是具有Linux目录的一个伪操作系统,所以我们也可以通过如图命令进入容器的命令行终端进行更精细的操作。-i, --interactive: 保持标准输入打开。-t, --tty: 分配一个伪终端。更多选项看命令行大全。注意,这个模拟的虚拟机它只会包含能够运行该镜像的必备库函数,所以有些命令会没有,比如vim。
  • 可以观察到我们的用户已经变成了容器ID,说明我们正在容器内部进行操作。

在这里插入图片描述

4.2.7 删除容器
  • 1.语法:docker rm 容器 [-f]
  • 2.功能:删除容器,-f表示强制删除。
  • 如果不能够删除要先停掉容器或者直接强制删除。

5.容器和镜像的关系

  • 这里只做简单理解:一个镜像可以生成多个容器,镜像就相当于容器的工厂,生产相同标准的容器,镜像里你配的什么,那么容器就生成什么,且同一镜像生成的容器互不影响。

6.数据卷挂载

  • 什么是数据卷?
  • 数据卷​​ 是 Docker 中用于持久化存储容器数据的一种机制,它允许容器与宿主机或其他容器共享数据,同时避免因容器删除而丢失数据,说白了一句话:使用数据卷这个中介,实现宿主机和容器的双向绑定。
  • 场景:我们需要修改容器内部的nginx中的index.html,发现进入容器后,不存在vim命令,是因为容器只会包含它能够运行的库函数,所以有些命令根本不存在。
  • 这个时候就需要通过数据卷来双向绑定宿主机和容器的文件。实时修改宿主机就能实现修改容器机,非常方便。

在这里插入图片描述

6.1 创建并绑定数据卷

  • 1.语法:docker run -d --name 容器名 -p 外端口:内端口 -v 数据卷名:容器文件地址 镜像名称
  • 2.功能:能够直接创建一个容器,这个容器具有和宿主机双向绑定的数据卷。
  • 一句话:我创建了一个数据卷,双向绑定了我指定的文件,我修改宿主机,容器内也自动跟着更改,就这么方便。

在这里插入图片描述

6.2 查看创建的数据卷

  • 1.语法:docker volume ls
  • 2.功能:查看数据卷的列表。

6.3 查看创建的数据卷详细信息

  • 1.语法:docker volume inspect 数据卷名
  • 2.功能:查看数据卷名的详细信息。可以看到它挂载的文件地址。

在这里插入图片描述

6.4 举例

  • 我们刚才创建了index的数据卷,那么我们可以直接修改宿主机中的nginx的index.html就可以实现容器的实时同步。通过虚拟机端口访问nginx的index页面:
    在这里插入图片描述
  • 通过vim在宿主机修改了index.html后:修改了中文会出现乱码,记得加上字符集即可,meta那一行,html的知识。

在这里插入图片描述

  • 神奇的是真的实时响应了:

在这里插入图片描述

7.绑定挂载

7.1 实例

  • 直接在宿主机挂载容器的目录。
  • 添加了-v选项,前面的地址是宿主机挂载的文件地址,后面的地址是容器内部需要挂载的文件地址,这样以来我们直接把mysql的三个文件直接挂载到宿主机,同样能够实现双向绑定。

在这里插入图片描述

7.2 如何选择数据卷挂载还是绑定挂载

  • 一句话:​​需要直接与宿主机交互文件(读、写、改),用绑定挂载;只需要数据不丢失,让Docker自动管理,用数据卷。​实在不行,问运维。
posted @ 2025-11-04 20:16  gccbuaa  阅读(9)  评论(0)    收藏  举报