Linux--Docker容器(最新)

这里写目录标题

  • 安装Docker
    • 安装指令
    • 配置加速器
  • Docker简介
    • 名词解释
    • 作用
    • run命令解读
  • 操作
    • 常见命令
    • 命令的别名
  • 数据卷
    • 简介
    • 数据卷命令
    • 使用
  • 本地目录挂载
    • 问题发现
    • 问题解决
    • 二级目录
    • 二级目录

安装Docker

安装指令

如下文档
https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBkShcucLZbrn2d

注意因为docker也是一个服务,所以也要启动docker,也可以对Doceker进行开机自启动

配置加速器

仍然在上面文档内
Linux--Docker容器(最新)_第1张图片

Docker简介

名词解释

Linux--Docker容器(最新)_第2张图片
镜像,就是一个包,将应用本身以及应用运行所需要的环境都打包,形成了镜像
容器,镜像的实例,可以理解为镜像运行时所创建的一个隔离环境,容器之间互不干扰
也就是镜像是一个应用,容器是该应用的各个的运行时的隔离环境,可以理解为应用多开,每个容器都在运行同一个应用
(另一种较为好说法是,镜像就是一个类或者模板,而容器就是他们的实例,相当于实例化对象)
镜像仓库,官方会提供镜像仓库,可以理解为类库,里面有着许多应用的镜像,当然,国内大厂也维护了许多镜像仓库,我们上面因为使用的是阿里云的加速,所以就是阿里云的镜像仓库
Docker主机,运行Docker的虚拟机,也称为宿主机

作用

我们在进行团队开发时,如果遇到有人使用的开发工具的版本不一致,那么会造成许多麻烦,而Docker就保证了应用版本的绝对一致,因为只要是同一个镜像实例化出来的容器,那么就一定是同一个版本

运行思路如下所示:
先从仓库(本地或者云)找到需要的镜像并拉取到宿主机、
之后创建该镜像的容器,给容器命名,该容器就是一个实实在在的应用了

run命令解读

Linux--Docker容器(最新)_第3张图片
-d:后台运行
–name 名称 :给容器起个名字
-p :对于-p选项,第一个是宿主机准备开放的端口号,第二个是容器的端口号,其中宿主机端口号可以自定义修改,而容器的端口号轻易不改
-e:设置环境变量,对于mysql来说,必须要设置的环境变量是数据库的密码,具体还有哪些环境变量可以设置可以去官网查阅:hub.docker(访问外网)
最后是指定的运行的镜像的名字

其中,对于p选项:端口映射,
我们可以通过宿主机的ip访问到宿主机,但是无法通过容器的端口访问到容器,所以,如果pc客户端想要访问到容器,可以将容器的端口映射到宿主机的某个端口,通过访问宿主机这个端口,就可以直接访问到容器的端口,也就访问到了容器,如上图

但是镜像完整应该带上版本号,如果不带会默认最新版本:
Linux--Docker容器(最新)_第4张图片

操作

常见命令

Linux--Docker容器(最新)_第5张图片
注意,这里介绍了一种将自己写的镜像给别人使用的方法:
即,将自己的镜像文件上传到镜像仓库(一般是公司的私服),之后同事就可以从镜像仓库拉取到他们的本地进行使用
案例:
Linux--Docker容器(最新)_第6张图片
1、搜索镜像,查看镜像名称,可以进入dockerhub官网进行查文档:
Linux--Docker容器(最新)_第7张图片
2、拉取镜像:
docker pull nginx

3、查看本地镜像列表:(确定是否拉取成功)
docker images
该命令会将本地宿主机所有已经下载的镜像展示出来

补充:4、镜像的保存和下载的一种方式:(可以用于自定义镜像在不同电脑之间的转移)
tip:如果忘了一个命令怎么写,可以使用–help 就会显示帮助文档:
Linux--Docker容器(最新)_第8张图片

在这里插入图片描述
将镜像文件保存到一个tar包内,之后可以将次tar包用U盘拷到另一台电脑并下载
Linux--Docker容器(最新)_第9张图片
Linux--Docker容器(最新)_第10张图片
拿到tar包之后,下载该包,就可以下载里面的镜像到本地仓库了

5、创建并运行容器(注意,每次run一次,就会创建新容器)
docker run -d --name nginx -p 80:80 nginx
(无环境变量,无需-e)
在这里插入图片描述
6、查看容器运行状态
docker ps(只能查看运行中的容器)
Linux--Docker容器(最新)_第11张图片
docker ps -a(查看所有容器,包括停止的容器)
在这里插入图片描述
7、停掉容器(相当于关闭应用)

在这里插入图片描述
注意,这里只是把容器停止,而不是删除容器,容器虽然被停止,但是还存在

8、运行容器(相当于运行应用)
Linux--Docker容器(最新)_第12张图片
9、查看日志
docker logs nginx
docker logs -f nginx(持续访问nginx日志)
在这里插入图片描述
当持续访问nginx日志时,会实时更新nginx的日志,
例如,我们通过pc端的浏览器访问虚拟机的开放映射的端口
Linux--Docker容器(最新)_第13张图片
可以进行访问,这条访问信息就会在控制台进行更新显示
注意,要想访问到虚拟机的本地ip的80端口(不写默认80),需要将虚拟机的防火墙关闭,或者开放80端口的防火墙

10、进入容器
docker exec -it nginx bsah(表示进入容器的命令行窗口)
Linux--Docker容器(最新)_第14张图片
之后就可以在这个界面,进行mysql的一些操作
Linux--Docker容器(最新)_第15张图片
首先登录,可以进入到mysql客户端
Linux--Docker容器(最新)_第16张图片
之后可以执行show databases

输入exit 就退出mysql客户端,到了当前容器命令行
再次输入exit,就退出容器,到了操作系统

11、删除容器

docker rm 容器名
(注意不是rmi rmi是用来删除镜像的)
我们不可以删除正在运行的容器,
第一种方法,将容器停掉,再去删除
第二种方法,强制删除。docker rm -f mysql

命令的别名

在这里插入图片描述
使用vi编辑器,进入到root账户下 ~/.bashrc目录,如下:
Linux--Docker容器(最新)_第17张图片
进来之后,alias 别名=‘原始名’
可以使用此方法,将图示第四个优化显示方法的命令,改为dps
https://b11et3un53m.feishu.cn/wiki/MWQIw4Zvhil0I5ktPHwcoqZdnec

数据卷

简介

Linux--Docker容器(最新)_第18张图片
宿主机中的目录(一般是固定的)与数据卷进行映射,而数据卷与容器中指定目录形成映射,从而也就是宿主机的目录与容器中的指定目录形成双向映射

向宿主机中的目录增删改查,那么映射到的容器的指定目录会实时同步

数据卷命令

Linux--Docker容器(最新)_第19张图片
小tip:使用–help可以直接显示出帮助文档
Linux--Docker容器(最新)_第20张图片

使用

Linux--Docker容器(最新)_第21张图片
在这里插入图片描述
先删除原有容器(因为要再创建一般,当然如果创建不同的容器,则不用再删除)
之后在run命令里,加一个-v 数据卷名字:容器内指定目录
(数据卷名字可以随意起)

创建完之后,可以通过docker volume inspect 数据卷名字
来查看宿主机的哪个目录与数据卷建立了链接,一般这个路径是固定的

可以通过宿主机的ip加上图片路径,访问到图片,具体原因:?
Linux--Docker容器(最新)_第22张图片

Linux--Docker容器(最新)_第23张图片

本地目录挂载

问题发现

Linux--Docker容器(最新)_第24张图片
之前我们使用过docker volume inspect html ,表示查看数据卷的详情
现在不加volume 表示查看容器的详情
Linux--Docker容器(最新)_第25张图片
我们之前已经对容器nginx进行过挂载,所以显示没问题
Linux--Docker容器(最新)_第26张图片
但是我们之前没有对mysql挂载,他这里却显示挂载,说明系统自动进行了挂载,称为匿名挂载(有一些容器会进行自动挂载)
但是这种挂载的数据卷名字很复杂,并且当更新容器版本时,容易造成数据的丢失,所以要使用本地挂载对其进行解决

问题解决

Linux--Docker容器(最新)_第27张图片
当完成挂载之后,我们去宿主机查询data目录,里面会有容器的对应的文件内容
同时,修改宿主机的本地挂载目录,数据库的内容也会被更改

其中mysql容器的数据目录、配置文件目录、初始化脚本目录等等,都需要去官方文档查看

二级目录

二级目录

你可能感兴趣的:(linux,docker)