写在前面

       本文章作为一次实践的记录,可作为经验参考,只记录了大的步骤,及一些问题的解决方案。涉及到的容器中的组件的安装详细步骤没有,可自行搜索,后续会继续补充完善。

基础:本项目用的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容器 内部的服务自动启动设置

两种方式:

  1. 参考文章:https://blog.csdn.net/wang_magento/article/details/100763622   未验证
  2. 参考文章: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的环境有问题

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐