build_docker.md 2.6 KB

Docker重要概念:镜像vs容器

镜像可以理解为软件压缩包,容器为运行中或未运行的软件。需要先通过Dockerfile构建镜像,再通过镜像创建并运行容器。

调试服务器:

root@47.110.247.58

8Ngsmu~bPmUgN7w

step1:编写后端Dockerfile(端口换掉,避免冲突)

img.png

step2:编写后端容器启动命令,flask服务的启动命令有所区别

img.png

step3:编写nginx镜像

nginx镜像用于消息路由,将前端请求转发到后端。其Dockerfile在frontend文件夹,不需要修改,因为只需要使用nginx提供的服务即可

只需要修改nginx.conf配置文件

对于后端的ip地址,可以先使用调试服务器的ip地址,给我的时候,ip改成如下:

2.20.208.159

img.png

step4:将前端dist文件夹放到frontend文件夹中,和前端的Dockerfile同一个目录。

step5:构建镜像(需要构建两个镜像,nginx镜像构建时需要先cd到frontend目录下)

docker build -t(指定镜像名称和标签) image_name:tag .(当前目录)

docker build -t  privacy_retrieval_web:latest .

step6:通过镜像创建并运行容器

docker run --name container_name -d(后台运行,不加即调试运行) -p(端口映射) 主机端口:容器端口 -v(挂载) 宿主机目录:容器目录 镜像名

docker run --name privacy_retrieval_web -d -p 9360:9360 -v /root/PrivacyRetrieval:/code privacy_retrieval_web:latest

nginx镜像和后端镜像类似,注意两个镜像端口不能重复。

step7:导出镜像

docker save -o privacy_retrieval_web.tar privacy_retrieval_web:latest

常见docker指令:

列出所有镜像:

docker images

列出所有运行中容器:

docker ps

列出所有容器:

docker ps -a

停止运行中的容器:

docker stop container_id

删除容器:

docker rm container_id

删除镜像

docker rmi image_id

以下两个命令可以经常使用,调试过程中可能会创建多个镜像或容器,占用系统存储空间。

条件删除:删除所有已经退出的容器

docker rm $(docker ps -a|grep Exited|awk '{print $1}')

删除无用镜像

docker rmi -f $(docker images -f "dangling=true" -q)

docker-compose

容器编排工具,用于一键启动多个容器。这个项目用不到。