在docker镜像中安装软件windows+liux版

前面尝试安装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下的mysqld.cnf文件追加一行
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

163338_QGfQ_3347252.png

找到你运行的容器id,输入指令保存为新的镜像

docker commit xxxxxx centos/matlab

使用指令查看保存后的镜像

163606_69sv_3347252.png

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

164638_ZOic_3347252.png

还可以再开启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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值