admin管理员组文章数量:1337141
开发十年,就只剩下这套Java开发体系了 >>>
前面尝试安装docker服务成功后,本次主要是在docker中安装镜像+在镜像中安装软件。
1.直接从repository中拉取centos7的镜像
docker pull centos:7.2.1511
2.启动容器,同时共享宿主机的文件目录
docker run --privileged -it -v /opt:/opt 02abcd2234 /usr/bash #linux指令
docker run --privileged -it -v /F/project:/opt 02abcd2234 /usr/bash #windows指令(备注,windows上回弹出是否允许共享,点击确定,并输入电脑密码即可。)
参数解读:-v /opt:/opt 前面的opt为主机目录,后面的opt为centon7容器目录
02abcd2234 为镜像id
备注:由于有些东西可以不用直接从网上安装,可以直接将需要安装的文件放入容器与宿主机共享的目录即可。容器启动后,完全是按照linux系统操作指令即可。
3.本次主要安装jdk1.8,tomcat9,matlab。将文件拷贝至共享目录:
apache-tomcat-9.0.1.tar.gz MCR_R2016a_glnxa64_installer.zip jdk-8u151-linux-x64.tar.gz
4.安装jdk
创建该文件夹:mkdir /usr/java 解压jdk安装包: tar -xvf jdk*.tar.gz -C /usr/java/ 创建jdk软连接: ln -s /usr/java/jdk* /usr/java/default 配置环境变量/etc/profile,增加一下3行 export JAVA_HOME=/usr/java/default export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin 调用命令使修改生效:source /etc/profile 调用 java –version 查看jdk是否安装成功
编辑环境变量文件的时候,发现没有vim,安装vim
yum -y install vim
因为该容器很纯净,安装wget指令
yum -y install wget
5.安装tomcat(修改:因为是当时开启centos镜像的时候使用的是与主机共享opt目录,所有最好安装的时候吧软件不要安装到opt下。不然保存为镜像的时候就,与主机共享目录opt下面就没有tomcat了,谨记!)
cd /opt tar -zxvf apache-tomcat-9.0.1.tar.gz mv apache-tomcat-9.0.1 tomcat-8080
修改:
mkdir /usr/local/tomcat
cd /opt
tar -zxvf apache-tomcat-9.0.1.tar.gz -C /usr/local/tomcat
cd /usr/local/tomcat
mv apache-tomcat-9.0.1 tomcat-8080
6.安装matlab
mkdir -p /home/jyapp/matlab/ cd /opt unzip MCR_R2016a_glnxa64_installer.zip -d /home/jyapp/matlab/ cd /home/jyapp/matlab/ ./install -mode silent -agreeToLicense yes
vi /etc/profile export MCR_HOME=/usr/local/MATLAB/MATLAB_Runtime export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$MCR_HOME/v901/runtime/glnxa64:$MCR_HOME/v901/sys/os/glnxa64:$MCR_HOME/v901/sys/java/jre/glnxa64/jre/lib/amd64/headless:$MCR_HOME/v901/sys/java/jre/glnxa64/jre/lib/amd64/server:$MCR_HOME/v901/sys/java/jre/glnxa64/jre/lib/amd64"
source /etc/profile
7.安装redsi----本次使用在线安装
由于redis在第三方库,所以需要给yum添加源 yum添加epel源的命令为:yum install epel-release yum -y install redis 修改配置文件:vi /etc/redis.conf 开启远程访问需要修改如下地方: 注释掉127.0.0.1 修改daemonize no变成yes protected-mode yes 改为no
8.mysql安装
问题:由于容器只是虚拟出的系统,并不是真正的linux,所以有很多权限问题,比如最大的就是不能使用systemctl指令启动服务,虽然网上说了很多方法解决,但目前我尝试了几次都没有成功。有一个方法安装成功了,但是不会开启开机启动指令。建议目前的解决办法就是mysql单独为一个容器,直接使用
docker pull mysql:5.6 就直接安装为镜像,再开启开容器即可。
#启动mysql容器
docker run --name=mysql -it -v /usr/app/drg_fz/database_drg/mysql:/var/lib/mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql-5.6
#开启并进入容器
docker exec -it mysql bash
#备注
linux下的mysql默认区分大小写的,所以修改配置文件后再次提交镜像
--将mysql容器中的mysql配置文件copy到宿主机进行修改
docker cp mysql:/etc/mysql/mysql.conf.d /opt 或者填写容器id
--将mysql.conf.d下的mysqldf文件追加一行
lower_case_table_names=1
--再将修改后的配置文件copy到容器中覆盖之前的
docker cp /opt/mysql/mysql.conf.d mysql:/etc/mysql/mysql.conf.d
--再保存为新的镜像即可
docker commit 容器id mysql-5.6-cnf
--输出镜像
docker save -o /opt/mysql-5.6-cnf.tar 镜像名称:latest
9.最后一步安装以上软件后,千万要记得提交保存为新的镜像。
使用指令查看当以我们在运行的容器的id
docker ps -l
找到你运行的容器id,输入指令保存为新的镜像
docker commit xxxxxx centos/matlab
使用指令查看保存后的镜像
10.环境搭建完毕,接下来便是启动容器,测试效果。
docker run --privileged=true -t -i -v /F/project:/opt -p 8081:8080 -p 6379:6379 02abcd2234 /bin/bash
参数解读:-v /F/project:/opt 挂载共享目录(本次用的是window是上的docker)
-p 8081:8080表示端口转发,将centos/matlab 容器内的8080端口,映射到宿主机的8081端口上(也就是穿墙操作)
02abcd2234:表示centos/matlab镜像的id
启动成功后,由于每次进入重新启动镜像容器后,之前在容器中配置的环境变量好像没有生效了,所有保险起见,进入容器后首先执行 source /etc/profile,然后输入java -version查看环境变量是否生效,生效则继续下步操作:
启动tomcat
cd /opt/tomcat-8080 cd /bin ./start.sh
测试用浏览器访问localhost:8081
还可以再开启redis:
redis-server /etc/redis.conf
通过本地测试客户端可以读到redis的database。
表示我们的容器软件都安装成功,端口转发也能正常运行,此时只要把我们的项目放入tomcat中就能跑啦。
测试容器通过后,表示我们保存的最新镜像就是完整的一套环境啦,此时只需要把它存储出来,可以在其他任意的docker环境都能直接使用,不用在麻烦的重复部署jdk,tomcat,matlab,redis环境啦。
将安装了最新软件的镜像centos/matlab存储出来
docker save –o f:/centos-matlab.tar centos/matlab:latest(windows指令)
docker save –o /opt/centos-matlab.tar centos-matlab:latest(linux指令)
在其他平台安装了docker环境的话,直接将该镜像载入进去就可以运行为新的容器啦
docker load --input /opt/testimage.tar
查看载入的镜像 docker images
备注:
要是有时候中途退出了正在操作的容器,可以使用如下指令再次进入
docker start -ia xxxxx 参数:xxxxx表示之前操作的容器的id,可以使用 docker ps -a 查看
也可以:docker exec-it xxxxx 参数:xxxxx表示之前操作的容器的id,可以使用 docker ps -a 查看
如果因为退出了,就通过docker run重新来启动一个容器的话,就相当于是重新创建,之前在哪个容器里面安装软件的都不会有的。
假如有些容器不需要了,可以删除,不然内存储空间
docker ps -a #查看容器列表和状态
docker rm 容器id(windows)
docker rm $(docker ps -qf status=exited) #linux指令,删除处于退出状态的容器
--docker容器与宿主机文件相互拷贝
doceker cp 容器名称:文件路径 宿主机路径(容器--宿舍机)
doceker cp 宿主机路径 容器名称:文件路径(宿舍机--容器)
正常退出容器界面不关闭容器:Ctrl+P+Q
版权声明:本文标题:在docker镜像中安装软件windows+liux版 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1740401396a2271615.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论