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并提供后端服务的主要内容,如果未能解决你的问题,请参考以下文章