读者大大们好呀!!!☀️☀️☀️
👀期待大大的关注哦❗️❗️❗️
🚀欢迎收看我的主页文章➡️木道寻的主页
文章目录
🔥前言
当我们学习一门知识时,都会涉及到哲学三问:(我是谁?)什么是docker?(我为什么在这里?)为何要有docker?(我要去哪里?)docker要做什么?本篇将带你一起解答这些问题。
🚀什么是docker?
docker :应用容器引擎,产出各种容器(相当于小Linux)
为什么要有docker呢?
在传统的网站部署时,一个Linux服务器,部署一个web网站:如下图所示
这种模式下有很多弊端:
1、需要大量的服务器
2、启动速度慢
3、开发、测试、运维环境不一致,导致的bug可能因环境不一致引起
因此docker就运营而生了,只需要一台Linux服务器
docker要做什么呢?拿到源代码,在不同环境中发布网站
一个web网站需要什么?web服务需要:
1、接收客户端数据
2、连接数据库
3、调度开发网页
🚀docker三要素
1️⃣ 仓库 – repository ----网站docker提供各种镜像
命令:
docker search 镜像名字
在仓库查找
docker pull 镜像名字
下载镜像docker run 镜像名字
执行镜像,没有镜像会自动下载
2️⃣镜像–images -----文件----》产生容器
对比传统的服务,比如lamp服务,NGINX服务,mysql服务等产生,对应的就是docker中的lamp镜像,MySQL镜像 ----》docker的镜像强调复制出大量的容器,镜像与容器是是一对多的关系。
3️⃣容器----container ----进程-----运行开发的代码与编程网站
镜像(Image)和 容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。
容器内的进程是运行在一个隔离的环境里的,就像独立于宿主机的另一台机器。
所有容器的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录。
🚀linux系统下docker的基本命令
前期准备
1、linux | docker软件
curl -fsSL https://get.docker.com/ | sh
2、web服务(lamp/nginx/tomcat/php-apache)+数据库服务
拉取镜像
docker pull php
在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果想预先下载这个镜像,可以使用这个命令。不指定版本, 会获取latest 镜像。
docker pull 镜像名:版本号
拉取指定版本的镜像
除了在有网的环境下进行镜像的拉取,还可以在离线的条件下预先下载了镜像文件
docker save 镜像tar包
1、导入镜像
docker load < 文件地址
其中image ID:为镜像的唯一编号,可以为其取别名,便于识别使用
先用docker images
命令查看镜像。再根据编号取别名:
再输入下列命令:
docker tag 前四位编号 别名(:描述)括号中如果没有描述则为默认latest版本
2、启动容器
命令:docker run -d 镜像别名
-d 守护,后台运行。
每执行一次就会创建一个容器!!!
3、查看容器状态
命令:docker ps -a
4、进入容器
命令:docker exec -it 容器id /bin/bash
5、退出容器
快捷键Ctrl+p再Ctrl+q
6、停止容器
命令:docker container stop 容器id
7、重启容器
命令:docker container start 容器id
(启动容器)docker container restart 容器id
(终止容器运行,再启动)
8、删除容器
命令:docker container rm 容器ID(只能删除已经停止的容器)
9、docker 命令帮助
docker command --help
🚀docker实例:lamp部署网站
docker数据卷项目
数据卷的概念
数据卷,是一个可供一个或多个容器使用的特殊目录,特性有:
1️⃣数据卷可以在容器之间共享和重用
2️⃣对数据卷的修改会立马生效
3️⃣对数据卷的更新,不会影响镜像
4️⃣数据卷被设计用来持久化数据的,她的生命周期独立于容器
数据集的基本操作
创建数据卷
docker volume create 数据卷名
查看数据卷信息
docker volume inspect 数据卷名
查看所有的数据卷
docker volume ls
删除数据卷
docker volume rm 数据卷名
清理无主的数据卷
先创建几个数据卷,再进行清理docker volume prune
挂载volume数据卷(此操作在下面部署时展示)
docker run -d -p 宿主机端口:容器内端口 -v 数据卷名:容器内路径 镜像名
lamp镜像实现论坛部署
根据lamp镜像构建网站的基础环境
操作步骤
环境解释:lamp----->Linux、Apache、mysql、PHP
命令执行:
1、准备需要的镜像
docker load < /home/centos-lamp.tar docker images docker tag 0b8d mdxcentos-lamp
2、当前目录中,新建一个lamp目录mkdir lamp
3、将源码压缩包拷贝到lamp目录下,并解压cp 源码压缩包位置 lamp
cd lamp
unzip 压缩包名
4、建立lamp项目需要的数据卷,并查看数据卷的存放路径
5、解压的目录中有一个upload目录(包含主页面的代码目录),将其复制到数据卷中,并给该目录授予读写执行的权限。
6、生成临时容器,查看容器的端口与发布的目录,删除临时容器
命令:docker run -it docker.io /mdxcentos-lamp /bin/bash
cd /etc/httpd/conf
cat httpd.conf |greap DocumentRoot
cat httpd.conf |greap Listen
退出删除容器exit
docker container stop 容器ID
docker container rm 容器ID
7、正式生成容器
docker run -d -p 8082:80 -v lampcvol:/var/www/html mdxcentos-lamp
-p :将宿主机的8082端口映射到容器的80端口中 -v :将数据卷lampcvol挂载到容器中的发布目录/var/www/html
8、浏览器访问http://localhost:8082/upload进行安装,按照提示安装完成后,在浏览器输入http://localhost:8082/upload/forum.php显示该画面则安装完成。
9、不同路径发布,多个目录存放对应的开发源码,修改端口号
mkdir lamp1 mkdir lamp2 cp 源码文件路径 /lamp1 cp 源码文件路径 /lamp2 cd lamp1 unzip 目录下源码压缩包 chmod 777 -R . docker run -d -p 8081:80 -v lampcvol:/var/www/html mdxcentos-lamp docker run -d -p 8083:80 -v lampcvol:/var/www/html mdxcentos-lamp
通过访问不同的端口,为不同的用户提供环境(开发环境|运维环境|测试环境)
⭐️⭐️⭐️总结
docker三要素命令思维导图:
✈️✈️✈️如果喜欢这篇文章的话
🙏大大们可以动动发财的小手: 👉👉👉 点赞:👍收藏:⭐️评论:✍️👈👈👈