趁着51又把docker基础重新学习了一遍,之前都是看课程,很少动手实践,看着像会了,其实提笔忘字,现在记忆力不行了,很多东西不练一练,基本看完就忘了,linux学习其实没那么难,多练练就好了~
最近的docker是跟于超哥学习的,大家可以到B站搜下课程支持一下,下边自己实践一下~
大概思路就是利用Python的flask框架,简单写一个Python文件跟docker的Dockerfile文件构建出一个images镜像,然后通过容器的8080端口映射到宿主机的8080端口跑起来,通过宿主机改端口来验证试验是否成功,并且介绍两种容器修改文件内容方式~
这是我提前写好的,简单介绍一下~
vim xuyuhan_flask.py #编写一个Python文件,名字可以自定义,Python文件后边后缀必须是.py结尾,自己打一下印象深一点,解释可能不太正确,自己也是小白
#xuyuhan:utf8 #指定UTF8格式,使中文不会出现乱码
from flask import Flask #这是Python中的包导入,意思是从flask框架中导入flask模块
app=Flask(__name__) #相当于shell中定义一个变量赋值
@app.route("/") #写一个访问路由,此处的访问地址为 http://192.168.230.210/ 的意思
def web(): #定义一个函数,如果上边的访问路由为/hello,那么此处可以写成 def hello
return "hello docker, i am xuyuhan" #return返回值,相当于shell中的echo
if __name__=="__main__":
app.run(host='0.0.0.0',port=8080) #0.0.0.0相当于绑定该容器所有网口,对外暴露8080端口
2、创建Dockerfile文件
vim Dockerfile #编写一个Dockerfile文件,记得第一个字母必须大写,不懂得可以学习下docker镜像构建,相当于自己写一个镜像构建脚本而已
FROM centos:7.2.1511 #镜像使用时优先在本地查找,没有再到网上下载,我这里本地已经有这个版本了
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #更改该容器源为阿里云源
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #更改该容器源为阿里云源
RUN yum makecache fast #清除原先的缓存
RUN yum install python3-devel python3-pip -y #下载Python3依赖,必须是Python3才不会报错
RUN pip3 install -i https://pypi.douban.com/simple flask # -i参数为指定下载源地址为豆瓣差不多的意思
COPY xuyuhan_flask.py /opt #复制我当前目录的xuyuhan_flask.py文件到容器内/opt这里的意思
WORKDIR /opt # WORKDIR相当于cd命令的意思,就是进入容器后默认切换到到/opt这里
EXPOSE 8080 #暴露该容器8080端口
CMD ["python3","xuyuhan_flask.py"] #CMD相当于执行命令的意思,默认用Python3执行xuyuhan_flask.py的意思,这里的每一个命令后边必须写上,号,比较长
写好以上两个文件,检查没问题就可以开始构建了~
3、构建docker images[root@docker ~]# docker build -t 'centos7.2web:xuyuhan' . # -t指定'容器名:tag标签 --no-cache 不使用之前产生的缓存进行构建,后边的点表示构建当前目录下的Dockerfile文件,记得要跟前边有个空格
构建过程大概3分钟,因为有些东西要在线下载,所以也看网速,过程涉及链接啥的会出现红色标识,只要不出现error报错,都是小事情可以忽略,直到看到successfully,然后查看本地镜像~
4、使用新docker images创建容器接下来试下运行该镜像
[root@docker ~]# docker run -d --name xuyuhanweb -p 100:8080 centos7.2web:xuyuhan
e69668f3db0c901c631a1f25f2320e4c264ab6d2e75c6716a2962dffd3680a55
# run表示启动并运行 -d表示后台运行 --name 指定容器生成名字 -p 100:8080 前边100端口是宿主机的,后边8080是该容器的 在后边centos7.2web:xuyuhan 镜像名:指定tag的意思
#生成一串ID表示创建成功
[root@docker ~]# docker ps #查看docker运行的容器
5、访问该容器web页面
访问网页:宿主机IP:100端口,实验成功~
[root@docker ~]# docker exec -it e69668f3db0c /bin/bash
[root@e69668f3db0c opt]#
#通过 exec -it 容器ID /bin/bash 进入容器内,输入exit退出,不影响该容器此时后台运行
6、docker特殊命令
一些用起来比较爽的暴力命令,生产环境慎用!!!
[root@docker ~]# docker ps -aq #列出所有存活或死去的docker容器
[root@docker ~]# docker stop `docker ps -aq` #强制所有正在运行的容器
[root@docker ~]# docker rm -f `docker ps -aq` #强制删除所有存活或死去的docker容器,慎用指数三颗半星
7、增删、修改容器内文件
有很多种方式
一种是直接修改Dockerfile文件内ADD 或 COPY 指令内容,重新构建镜像。。。
或者exec -it 进入容器内进行修改
还能通过docker cp指令来将容器外文件传递到docker容器内
docker cp 本地文件路径 容器ID或容器NAME:容器内路径
还有这些
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)