目录
1. 封装docker流程
1.1 本文中不涉及拉一个全新镜像。
1.2 镜像实例化
1.2.1 查看镜像
在服务器上找到想要使用的镜像,使用命令
docker images
如果要查看所有的镜像,使用
docker images -a
列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)。
找到了我们想要使用的镜像。
1.2.2 创建容器
使用如下命令创建了容器。
sudo docker run -d -it -p9300:1022 --name imageCaption tensorflow-pytorch-gpu
其中的参数:
docker run
:创建一个新的容器并运行一个命令
-d
, 也就是--detach='True'
表示在后台运行容器并打印容器ID,--detch='False'
是默认值,表示在前台运行容器并且不打印容器ID;
-i,
表示以交互模式运行容器;
-t,
表示为容器重新分配一个伪输入终端;
-p,
表示端口映射,-p 9300:1022
表示主机的9300端口映射到容器的1022 端口;
--restart=‘always’
表示容器退出时总是重启;
-v,
表示目录挂载,-v /data/gitlab/config:/etc/gitlab
表示主机目录/data/gitlab/config
映射到容器目录/etc/gitlab
;
--name,
表示容器的名字;tensorflow-pytorch-gpu表示镜像名。
通过上述命令,我们将镜像
tensorflow-pytorch-gpu
实例化为容器imageCaption
。
例如,
docker run \
-d \
-it \
-p 9300:1233 \
-p 9200:1235 \
--restart='always' \
-v /data/gitlab/config:/etc/gitlab \
-v /data/var/log/gitlab:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
--name gitlab \
gitlab/gitlab-ce:8.16.7-ce.0 \
python app.py
python app.py
表示容器运行的时候执行该命令,可根据自己的需求进行添加;
1.2.3 查看容器
使用如下命令查看创建的容器
docker container ls
1.3 搭建环境
1.3.1 运行容器
docker exec -it imageCaption /bin/bash
docker exec
表示在运行的容器中执行命令;
-i,
表示以交互模式运行容器;
-t,
表示为容器重新分配一个伪输入终端;
imageCaption
是容器的名字;
/bin/bash
是在容器中执行的命令。
1.3.2 部署代码
进入容器后,就可以安装各种包,比如python,pytorch,并部署代码。
1.4 将容器重新提交为镜像
sudo docker commit -a "sop" -m "image caption" 18920dfceaa9 image_caption:v2
参数说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
例如,
image_caption:v2
是提交的本地镜像名,18920dfceaa9
是容器ID。
可以看到新建了一个名为“image_caption”的镜像。
1.5 导出为镜像
docker save -o caption_v2.tar image_caption:v2
参数说明:
-o :输出到的文件。
例如,
caption_v2.tar
是导出的镜像包的名字,image_caption:v2是镜像名字。
此时,可以将镜像拷到其他的服务器上了。
2. 加载镜像
将打包后的镜像载入进来使用docker load,例如:
docker load -i caption_v2.tar
其中,caption_v2.tar
是导出的镜像包的名字。
3. 在容器中安装jdk步骤
在18920的容器中创建文件夹package
mkdir package
在物理服务器上将jdk安装包拷贝进容器中
sudo docker cp /home/jdk-8u281-linux-x64.tar.gz 18920:/home/package
在容器中进入package目录,解压文件并更改文件名为jdk
tar -zxvf jdk-8u281-linux-x64.tar.gz
mv jdk1.8.0_281 jdk
配置环境变量,
编辑/etc/profile
vi /etc/profile
新增:
# set java jdk1.8.0_191 environment
JAVA_HOME=/home/package/jdk
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JAVA_HOME JRE_HOME CLASS_PATH PATH
编辑:/root/.bashrc(防止重启时环境变量失效)
vi /root/.bashrc
新增内容如上。
刷新环境变量:
source /etc/profile
source /root/.bashrc
查看 java 版本:
java -version
查看 javac 版本:
javac -version
退出 docker 中的容器:
exit