打包Centos镜像,其中含有jdk,mysql,redis,ftp,nginx,rabbitmq组件
写在前面:本文章作为一次实践的记录,可作为经验参考,只记录了大的步骤,及一些问题的解决方案。涉及到的容器中的组件的安装详细步骤没有,可自行搜索,后续会继续补充完善。1.后台启动容器:docker run -itd --name centos-xxx--privileged eeb6ee3f44bd /usr/sbin/init2.进入容器:docker exec -it 6b5 /bin/bash
写在前面:
本文章作为一次实践的记录,可作为经验参考,只记录了大的步骤,及一些问题的解决方案。涉及到的容器中的组件的安装详细步骤没有,可自行搜索,后续会继续补充完善。
基础:本项目用的Centos7作为基础容器,
构建Centos7容器
docker pull centos:centos7
1.后台启动容器:
docker run -itd --name centos-xxx--privileged eeb6ee3f44bd /usr/sbin/init
2.进入容器:
docker exec -it 6b5 /bin/bash
3.安装jdk 1.8
安装前修改repo的文件,baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
yum install java-1.8.0-openjdk* -y
4.安装mysql5.6(http://repo.mysql.com/)
提示:确保在镜像中没有安装过mysql,同时确保wget命令可用(yum install wget -y)
无法安装mysql5.6版本,可参考文章:https://www.jianshu.com/p/c0b7a2b1f981
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
#查看可安装的mysql
yum repolist all| grep mysql
yum install mysql-server
rpm -qa | grep mysql
#启动 mysql
systemctl start mysqld.service
#设置 mysql 开机启动
systemctl enable mysqld.service
mysql5.6 修改密码:update user set password=password('123456') where user='root';
5. 安装redis
安装过程出错,可参考文章:https://blog.csdn.net/shursulei/article/details/79416972
启动报错:Authorization not available. Check if polkit service is running or see debug message for more information.
提示polkit服务未启动,可参考文章:https://blog.csdn.net/henni_719/article/details/99689411
6.安装vsftpd
参考文章 :https://www.cnblogs.com/huixuexidezhu/p/6560031.html
#添加ftp用户及文件路径
useradd ftpuser -d /usr/local/ftp
#设置密码
passwd ftpuser
7.安装nginx
参考文章:https://www.cnblogs.com/pxstar/p/14808244.html
#设置nginx开机自启动
修改/etc/rc.d/rc.local,在末尾增加:/usr/local/nginx/sbin/nginx
执行以下命令,使/etc/rc.d/rc.local变成可执行文:chmod +x /etc/rc.d/rc.local
8.安装rabbitmq
根据有道云笔记安装完erlang 20.3版本
根据有道云笔记安装完rabbitmq 3.6.11
#设置开启自启动
新增my-rabbitmq-start.sh文件
#!/bin/bash
export PATH=$PATH:/usr/local/erlang/bin
export HOME=/usr/local/rabbitmq/
/usr/local/rabbitmq/sbin/rabbitmq-server -detached
执行指令:chmod +x my-rabbitmq-start.sh
9.Docker镜像制作并导入另一个Docker
#把容器打成镜像
docker commit -a="xxx/guoq" -m="docker container inner service self up" 92485ac34454 xxx-base:2.1
命令为 commit
-a 为作者
-m 为描述信息
5b8b5b58e6a7 运行中的容器的ID
xxx-base镜像名
2.0 版本号
#把镜像导出成tar包
docker save -o /myextra/xxx-base.tar 44be4094e7ec
报错:write xxxx: no space left on device
解决方案 增加磁盘容量或者删除无用的文件
增加磁盘参考文章:https://blog.csdn.net/hanpengyu/article/details/7475645
#导入镜像tar
docker load < /myextra/xxx-base.tar
10.#启动容器 暴漏端口
docker run -dit -p 80:80 -p 6379:6379 -p 15672:15672 -p 3306:3306 -p 21:21 --name xxx-instanceV3.0 --privileged=true --restart=always cc317f58c75d /usr/sbin/init
#对外暴漏 可正常访问
11.#启动docker容器 内部的服务自动启动设置
两种方式:
- 参考文章:https://blog.csdn.net/wang_magento/article/details/100763622 未验证
- 参考文章:https://blog.csdn.net/sinat_35555240/article/details/107410123
方法二已经验证,可行。
a.在容器root目录下的.bashrc中将服务的启动命令写进该文件中,并执行source .bashrc
增加以下两句
/usr/local/nginx/sbin/nginx
/usr/local/rabbitmq/sbin/my-rabbitmq-start.sh
export PATH=$PATH:/usr/local/erlang/bin
export HOME=/usr/local/rabbitmq/
/usr/local/rabbitmq/sbin/rabbitmq-server -detached
b.docker服务和容器随服务器开机而自启动
docker服务开机自启动:systemctl enable docker.service
容器开机自启动:--restart=always创建容器时加入该选项即可实现容器开机启动
遇到的问题,待有时间继续解决:
nginx服务可以自启动 ,rabbitmq一开始可以访问15672,运行一会无法继续打开,估计是elrang的环境有问题
更多推荐
所有评论(0)