1. docker run -it ubuntu
2. 进入容器之后, 安装ssh服务:
sudo apt-get install openssh-server
有可能在安装之前需要配置软件源: sudo apt-get update
3.启动 ssh 服务 : /usr/sbin/sshd
4.生成公钥和密钥,用于无密码登陆:
ssh-keygen
一路回车,将会在~/.ssh/文件夹中生成 : id_rsa、id_rsa.pub
将id_rsa.pub 通过scp传送到本机: scp ~/.ssh/id_rsa.pub [email protected]:~/pub_key_from_docker
5.切换回物理机, 将刚才传送的 pub_key_from_docker 写入 登陆用户的~/.ssh/authorized_keys 中
root: sudo cat pub_key_from_docker /root/.ssh/authorized_keys
6.通过上面的设置 docker容器可以无密码登录到 物理机上面, 接下来可以将物理机中的java scp 到容器中
7.在物理机中, 默认的jdk位置可以通过 查看whereis java ,结合 ls -l 一层一层找出 jdk的位置,
在我的电脑中,jdk的位置在 /usr/lib/jvm/java-7-openjdk-amd64
8.切换回容器,将物理机中的jdk复制到容器中:
scp -r [email protected]:/usr/lib/jvm/ /opt/
9.在容器中设置JAVA_HOME, PATH,等环境变量:
sudo vi /etc/profile
在文件的最后添加
export JAVA_HOME=/opt/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
:wq 保存退出
source /etc/profile 使得环境变量立即生效
10.问题来了,当我使用测试的时候,java报错:
大致的意思是找不到共享的库文件(*.so文件) libjli.so
11.原因是,ubuntu在查找库文件的时候会根据/etc/ld.so.conf 文件中 的路径位置查找 库文件,不被路径包含的库文件,是不会被查找到的
通过命令: find / -name "libjli.so"
查找到了 该文件位于 jdk中的lib 中
即: /opt/jvm/java-7-openjdk-amd64/jre/lib/amd64/jli/libjli.so
12. 要解决上面的问题,需要将11 中查找到的路径添加到 配置文件 /etc/ld.so.conf 文件中
使用vi 添加 /opt/jvm/java-7-openjdk-amd64/jre/lib/amd64
到文件的末尾
13.最后使用 /sbin/ldconfig -v 更新设置
然后 java 就可以运行了