背景
由于工作需要自己有许多的web应用要部署在云服务器上。然而资金有限每年都要去阿里云,腾讯云,华为云买最便宜的服务器,这就意味着每年都要经历一次痛苦的环境安装项目部署的过程(nginx、mysql、elasticsearch、redis等等)还要同步迁移各种数据
docker介绍
理论的概念不做介绍了。通俗讲就是在docker中部署一下centos操作系统墨迹买云服务器的过程,然后进行一次部署,后面就这个拿着这个容器的镜像实现一次性迁移极大程序上降低工作量
centos7安装docker
- 安装docker环境依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 指定Docker镜像源:默认下载Docker会去国外服务器下载,速度较慢,我们可以设置为阿里云镜像源,速度更快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
成功截图:
- 更新yum缓存(由于重新配置了镜像源所以更新一下)
yum makecache fast
- 安装docker-ce(社区版),这里估计要运行一会
yum -y install docker-ce
成功截图:
- 启动docker
systemctl start docker
可以查看一下docker版本确认一下启动成功:
docker -v
版本号截图:
- 设置docker为开机自启动
systemctl enable docker
docker基础命令
镜像方面命令
下载镜像(以下拉最新版nginx为例,这里各种软件的名字格式要自己百度一下了)
docker pull nginx:lates
查看本地镜像
docker images
效果图:
删除镜像(其中92b11f67642b
是上图的镜像ID,应该也可以是镜像名字)
docker rmi 92b11f67642b
远程仓库查找镜像(以搜索nginx为例)
docker search nginx
效果图:
容器转镜像并生成文件
docker commit centos7 cenots7:v1 #将正在运行的容器打包为镜像
docker save -o centos7v1.tar cenots7:v1 #将此镜像保存为文件
容器方面命令
镜像生成容器
docker run -itd --name centos7 -p 7474:7474 -p 8889:22 -p 8801:80 -p 8802:8802 -p 39253:39253 -p 7575:7575 --restart always --privileged centos:20221011 /usr/sbin/init
- -i和-t :这两个参数一起使用,使容器启动后进入交互式命令行(可以进入容器中敲命令)
- -d :这个参数表示在后台运行容器,并返回容器的ID。
- -p :这个参数用于将容器的端口映射到主机的端口,使得主机可以通过这些端口访问容器中的应用。
- –name :这个参数用于指定容器的名称,方便后续对容器进行操作。
- –restart:设置容器的重启策略。always(白话讲就是docker重启后容器也自动重启)
- –privileged:以特权模式运行容器,具有访问主机系统的权限。
/usr/sbin/init : 容器运行后可以使用systemctl方法
进入容器命令行
docker exec -it <container_id> /bin/bash
查看运行中容器
docker ps
查看所有容器(含停止运行与容器存储信息)
docker ps -a -s
停止运行容器
docker stop 容器名
删除容器
docker rm 容器名
docker安装Centos7(开始套娃)
下拉纯净的centos7镜像
docker pull centos:centos7
这个镜像版本网上查到,有更好的也可选择其他的
生成纯净的Centos7容器
docker run -itd --name centos7 -p 8888:8888 -p 80:80 -p 443:443 -p 3306:3306 --restart always --privileged centos:centos7 /usr/sbin/init
参数参考上面基础命令部分的介绍,实际情况自行添加或修改端口映射关系(一定要先准备好要用到的端口映射不然非常麻烦)
在Centos7容器中安装宝塔
- 进入容器的命令行
docker exec -it centos7 /bin/bash
- 运行宝塔安装脚本(可能会更新自行宝塔官网查询最新版)
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
- 安装成功后记下宝塔的外网访问地址、用户名与密码,截图如下:
- 由于新版本的宝塔安装完成后会自定义一个宝塔面板的端口,所以在运行这个容器做端口映射时要自己事先准备一个,然后使用宝塔面板命令将端口号改为准备好的映射端口,如图:
浏览器访问容器内宝塔面板
那么最后宝塔面板的地址就是将你修改后的端口(我这里是8888)替换掉默认的端口即可,成功访问截图(记得开发云服务器的安全组端口):
接下来就可以通过宝塔配置相应的web应用系统了。
问题整理
- 宝塔在安装Nginx时第一遍安装失败了,第二遍才成功具体原因不清楚多试几次应该就可以了
- 想要增加容器的端口映射,需要先将现有容器报存为新的镜像然后用新的镜像运行新的容器进而增加新的端口映射
- 如果想要删除容器(该容器中之前配置过网站)提示***/.user.ini : operation not permitted
运行一下这个命令再去删除即可(如果不行也可以试试先把文件权限给www用户然后再删除)
chattr -i ***/.user.ini
参考链接
- 使用YUM安装docker
学识尚浅、能力有限、不喜勿喷