文章目录
🔥前言
当我们学习一门知识时,都会涉及到哲学三问:(我是谁?)什么是docker?(我为什么在这里?)为何要有docker?(我要去哪里?)docker要做什么?本篇将带你一起解答这些问题。
🚀什么是docker?
在传统的网站部署时,一个linux服务器,部署一个web网站:如下图所示
这种模式下有很多弊端:
1、需要大量的服务器
2、启动速度慢
3、开发、测试、运维环境不一致,导致的bug可能因环境不一致引起
因此docker就运营而生了,只需要一台linux服务器
一个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
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三要素命令思维导图:
发表评论