4.Linux虚拟机创建自己的docker image并提供后端服务

Posted _less is more

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.Linux虚拟机创建自己的docker image并提供后端服务相关的知识,希望对你有一定的参考价值。

1、下载nodejs(这个暂时没用到,先记下来)

curl -sL https://deb.nodesource.com/setup_18.x | sudo bash -
sudo apt-get update
sudo apt-get install nodejs

重装nodejs@14

sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt-get update
sudo apt-get install nodejs

2、手动创建一个docker image
创建名为Dockerfile的文件(无任何后缀),添加如下代码

FROM python:3.8 # 拉取python3.8的镜像,以其为基准构建自己的image

RUN mkdir -p /usr/src/app  # 在image里创建directory

WORKDIR /usr/src/app  # 改变image当前路径到新建的路径

ADD server.py .  # 添加Linux当前路径下的server.py到image里的当前路径,即/usr/src/app

CMD ["python3", "server.py"] # 实例化image为container时运行该命令

构建docker image

docker build -t tag .

server.py文件

# server.py 
from http.server import HTTPServer, BaseHTTPRequestHandler 
class MyHTTPRequestHandler(BaseHTTPRequestHandler): 
	def do_GET(self): 
	self.send_response(200) 
	self.end_headers() 
	self.wfile.write(b'Hello world! Sincerely, Python.') 
# note: localhost only accessible within vm/container 
# use '' to bind to all interfaces 
httpd = HTTPServer(('', 8000), MyHTTPRequestHandler) 
httpd.serve_forever()

3、运行docker

docker run --name my-container -p 8088:8000 -v /home/user/my-html:/usr/share/nginx/html:ro --restart always -d -e NGINX_PORT=3000 tag:latest

上面参数解释
–name my-container
实例化image为container,其名字为my-container

-p 8088:8000
映射container的8000端口为Linux的8088端口

-v /home/user/my-html:/usr/share/nginx/html:ro
把Linux的/home/user/my-html目录挂载到container的/usr/share/nginx/html目录,ro表示read only

–restart always
设置container重启规则,always表示总是会重启而不管exit的状态,除非是手动docker stop

-d
表示detach,这样docker run启动后不会停留在这个命令,而是让container后台运行,因此你可以用terminal继续用其他命令

-e NGINX_PORT=3000
设置container的环境变量

tag:latest
表示要实例化的image的名字

当然大部分命令都不需要,我们可以只用几个argument来启动

docker run --name my-container -p 8088:8000 -d tag:latest

仅仅映射端口,这样可以从Linux访问container里的server.py提供的后端服务
-d用来detach,这样我们能继续使用terminal

4、访问server.py提供的接口

curl http://localhost:8088/

这样我们就能在命令行看到Hello world! Sincerely, Python.

5、添加更多文件到docker image

FROM python:3.8 

RUN mkdir -p /usr/src/app 

WORKDIR /usr/src/app 

ADD ./hw1p2/* ./  # 可以看到,直接把一个目录下所有文件添加到/usr/src/app目录下

CMD ["python3", "hw1p2.py"]

以上是关于4.Linux虚拟机创建自己的docker image并提供后端服务的主要内容,如果未能解决你的问题,请参考以下文章

将虚拟机打包到Docker中

docker学习笔记1

物理机已经虚拟化了,那么虚拟机中使用docker和再创建一个虚拟机性能上有什么区别

docker和vmware的冲突解决

安卓开启kvm

云原生之Docker实战在KVM虚拟机下安装Docker