day103 dockerfile的实践

day103 dockerfile的实践

前言

1.基于官方的镜像,构建一个python代码运行的环境

运行镜像,开一个读写的容器空间(制定你的操作,开发代码xx,运行调试程序)


3,提交这个变化容器层的数据,提交为新的镜像

运行这个新的镜像,且加入参数,运行容器,进行端口的映射,最后访问页面

python容器化的迁移,调试小的项目。

1. 创建一个启动的脚本
[root@13a3fbff437d myblog]# vi start-django.sh
[root@13a3fbff437d myblog]# cat start-django.sh 
python /opt/myblog/manage.py  runserver 0.0.0.0:8000



# 2. 提交这个容器
docker commit 容器id  起个名


[root@docker-100 ~]# docker commit 13a welcome-linux-python
sha256:7374e013aef0ead0ba864d4e3c5bbdeb561f69ce0b3ba88ae2963a9c6060d4ae


# 3.基于镜像,创建容器实例,运行这个代码程序
# - 不用脚本启
docker run -d -p 8000:8000 welcome-linux-python python /opt/myblog/manage.py runserver 0.0.0.0:8000



        
        
        
# - 用脚本启该怎么办(容器里没这个脚本)

# 想办法,脚本放入容器
#  -v 更省事

docker run -d -v /my-django/:/my_django   -p 8000:8000 welcome-linux-python bash /my_django/start-django.sh

这是你刚才的提交,新的容器记录
现在被提交为一个镜像为一个新的层


镜像的逻辑是可以改变的

都是基于数据的维护b

因此镜像应该是无状态的

镜像,只提供一个运行的环境,(也就是为什么dockerfile只有环境 )

说明叫做无状态:
镜像文件不做存储

1.代码打包在镜像里面。生成容器,看到python的应用。

2.镜像只提供一个运行的环境,不应该放在代码里,以及配置的文件
都应该以数据映射的方式去管理话维护。

3.数据映射的关系,是最合理的方式。

镜像只提供运行的环境,代码,配置放在外面。

1. 准备好一个纯净的环境。

# 能运行python的代码。
# 并且这个代码要求按照django的模块。


[root@docker-100 ~]# docker images test-django
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
test-django   latest    d839f0ae677a   22 hours ago   349MB

2.把源码数据拿出来
[root@docker-100 ~]# docker cp 734:/opt/myblog /opt

[root@docker-100 ~]# ls /opt/myblog
db.sqlite3  manage.py  myblog  start-django.sh


---------------
3.优化启动的方式,做一个数据的映射
修改启动脚本
[root@docker-100 myblog]# cat start-django.sh 

python ./manage.py runserver  0.0.0.0:8000


# 启动的命令
docker run -d -p 8000:8000 -v /opt/myblog:/opt/myblog  test-django  bash /opt/myblog/start-django.sh

ok

无没有状态的容器是:

容器运行后,产生的数据不是很重要,可以随意地删除,创建地容器

那些软件是这样的特性,
nginx是 最大的无状态地app

nginx 镜像,流量地转发,代理软件,日志,。

docker run nginx:latest
docker run nginx:latest
docker run nginx:latest

# 在写无状态应用类地容器地部署,都写得是dockeffile一般是

FROM CENTOS

LABEL

ENV
RUN
CMD	



有状态得容器时☞:

有状态得docker file
主要时 VOLUME得数据映射数据
dockerfile 是为了防止运维忘记 -v 数据得映射
例如
docker run -d -v /var/lib/mysql:/var/lib/mysql mysql:5278



也就是持久化容器

wordpress ,dockerfile

镜像只提供运行环境,源码数据要从外面映射

源码数据直接打包到镜像里,以镜像作为交付的标准

1.构建镜像

docker build -t my-wordpress .
#当前目录下找到Dockerfile 去构建

# 在生产下,不需要环境下载最新的数据。
docker build --no-cache -t my-wordpress .

# 如何用

posted @ 2025-05-19 15:08  国家一级冲浪yzk  阅读(5)  评论(0)    收藏  举报