zoukankan      html  css  js  c++  java
  • dockerfile编写和应用

    目录

    1.1 什么是dockerfile

    1.2 dockerfile的作用

    1.3 dockerfile的编写优化

    1.4 dockerfile的其他语法

    1.5 docker 中网络

    1.6 dockerfile 部署django项目

     1.1 什么是dockerfile

    • Dockerfile 是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
    • 构建三步骤

      

    1.2 dockerfile的作用

        Docker可以根据Dockerfile中的指令来构建docker镜像。

        Dockerfile是一个文本文件,其应当包含用户想要构建一个镜像的所有指令。

     1.3 dockerfile的编写优化

    • 利用原始镜像构建我们自己的镜像
    • 编辑俩个文件
    1 # Dockerfile
    2 FROM nginx
    3 COPY index.html /usr/share/nginx/html/index.html
    1 # index.html
    2 <h1>Hello 1904 logo</h1>
    • 使用dockerfile构建我们自己的镜像
    1 [root@linux-node1 nginx_v1]#  docker build -t nginx:1904 -f Dockerfile .
    2 build             # 构建指令
    3 -t nginx:1904     # 指定镜像的版本号(镜像名称:tag) 
    4 [root@linux-node1 nginx_v1]#  docker image ls        # 查看我们构建的镜像
    5 [root@linux-node1 nginx_v1]#  docker run -itd --name 1904 -p 192.168.56.11:1904:80 nginx:1904 # 使用我们镜像运行一个docker容器
    6 http://192.168.56.11:1904     # 通过宿主机的映射ip地址+端口号就可以访问docker容器

     1.4 dockerfile的其他语法

     1 '''1.DOckerfile常用命令 '''
     2 FROM python:3.6                     # 指定拉取镜像版本
     3 ENV PYTHONUNBUFFERED 1              # 不缓冲stdin、stdout和stderr,直接把输出重定向到文件
     4 MAINITAINER zhangsan                # 指定作者
     5 RUN mkdri /code                     # 运行的linux命令
     6 WORKDIR /code                       # 指定项目工作根路径
     7 ADD . /code/                        # 将宿主机文件复制到镜像中
     8 COPY dj.conf /etc/nginx/conf.d      # docker内部文件拷贝
     9 VOLUME ["/data1","/data2"]          # 将宿主机文件夹挂载到容器中
    10 EXPOSE 8080                         # 暴露端口
    11 CMD ["sh","/code/start.sh"]         # 容器启动时要运行的命令
    12 CMD ["python", "manage.py", "runserver", "0:8000"]
    13 
    14 '''2.生成镜像并运行容器'''
    15 docker build -t nginx:v1 -f Dockerfile-nginx .         # 使用Dockerfile-nginx文件生成镜像 nginx:v1
    16 docker push linux-node4.example.com/test/nginx:v1      # 推送镜像到harbor中
    17 docker run -d -p 192.168.56.14:8000:8080 nginx:v1      # 运行docker容器

    1.5 docker 中网络

    1. 网络常识问题

      连接到同一交换机的相同网段可以直接相互通信

    2. NAT和PAT

      

    3. docker服务如何发布给别人使用

     1.6 dockerfile 部署django项目

    • django-admin startproject demo
    • cd demo
    • 设置跨域加 *
    • python3 manage.py runserver 0.0.0.0:8000 测试启动
    • vim Dockerfile
    1 FROM python:3.7
    2 MAINTAINER xiaonq
    3 RUN  mkdir /code
    4 WORKDIR /code
    5 ADD . /code/
    6 RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    7 EXPOSE 8000
    8 CMD ["python", "manage.py", "runserver", "0:8000"]
    • vim requirements.txt
    1 Django==2.0.4
    2 mysqlclient==1.4.6
    • docker build -t dj_demo:v1 -f Dockerfile .
    • docker run -d -p 192.168.56.11:8000:8000 dj_demo:v1

    图解

  • 相关阅读:
    python os模块
    python time、datetime模块
    python 导入模块、包
    python json、pickle
    python 装饰器
    python 生成器、迭代器
    python 内置函数
    python 函数的参数
    python 编码解码
    python 文件读写、shutil模块
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12608850.html
Copyright © 2011-2022 走看看