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 .
# 如何用
浙公网安备 33010602011771号