docker 制作自己的项目镜像

1、下载centos镜像

2、查看镜像

docker images:查看镜像

镜像名称   镜像版本 镜像id

centos                                          7.6.1810            f1cb7c7d58b7

3创建容器:

docker run -d -it --privileged -p 5555:8888 -p 5452:7472 --name fenzhen -e LANG=zh_CN.utf8 f1cb7c7d58b7 /usr/sbin/init

说明:

–privileged /usr/sbin/init 这两行主要解决容器中使用systemctl去启动服务时出现D_Bus错误的问题

-d: 后台运行

-it: 组合使用,创建一个伪终端

-p: 端口映射,本机端口:容器端口

–name: 容器名,(需要注意命名规范,可自己定义 ,only [a-zA-Z0-9][a-zA-Z0-9_.-])

-e:防止乱码,编码格式

f1cb7c7d58b7 :镜像id

4进入fenzhen容器:

docker exec -it 4eeb0eb94277 /bin/bash

或者:docker attach 4eeb0eb94277

5、为容器配置运行环境

(1)下载jdk

不下载了,把宿主机的jdk复制到容器中:

docker cp jdk1.8.0_171/ 4eeb0eb94277:/opt

vim /etc/profile

export JAVA_HOME=/opt/jdk1.8.0_171

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/binAnaconda3-2019.10-Linux-x86_64.sh

source /etc/profile

(2)下载Anconda

不下载了,把宿主机的Anconda复制到容器中:

docker cp Anaconda3-2019.10-Linux-x86_64.sh 4eeb0eb94277:/opt

运行sh Anaconda3-2019.10-Linux-x86_64.sh

vim /etc/profile

export PATH="/root/anaconda3/bin:$PATH"

source /etc/profile

(3)复制图谱

docker cp neo4j-community-3.4.7 4eeb0eb94277:/opt

(4)复制项目

docker cp fenzhen/ 4eeb0eb94277:/opt

(5)运行neo4j

bin/neo4j start

本地访问:

(6)运行项目

把本地的python环境复制到容器中的anconda envs中:

docker cp /root/anaconda3/envs/py365 4eeb0eb94277:/root/anaconda3/envs

# 激活 anaconda 环境

source activate

# 如果退出 anaconda 环境

source deactivate

把项目中flask访问地址和访问neo4j的配置修改一下:

运行项目:

conda activate py365

python triage_server.py

访问接口:

(7)退出容器

conda deactivate

(8)根据容器创建镜像

docker commit -a "kwz" -m "my first image for fenzhen" 4eeb0eb94277 fenzhen_image:v1

OPTIONS说明:

-a :提交的镜像作者;

-c :使用Dockerfile指令来创建镜像;

-m :提交时的说明文字;

-p :commit时,将容器暂停。

(9)把制作好的镜像打成tar

格式:docker save -o tar包的名字 镜像名

例子:docker save -o /opt/soft/fenzhenImage.tar fenzhen_image:v1

(10)别人接收到tar包之后,怎么使用

格式:docker load < /opt/soft/fenzhenImage.tar

docker images

 

原文地址:https://www.cnblogs.com/kwzblog/p/14026586.html