首先此篇笔记默认你已经安装好了 Docker,并了解 Docker 的基础概念,诸如镜像、容器、以及他们之间的关系等。

如果不太了解,等我回头了解清楚以后,可以再写一篇文章阐述一下。(狗头

当然,对于这篇文章,你就算不是很了解相关概念也没关系,照着我的步骤先敲一遍代码,然后慢慢理解也可以。

本文的内容大致如下几步:

  1. 镜像准备
  2. Django 文件准备
  3. Dockerfile 文件准备
  4. build 构建一个容器
  5. run 运行该容器
  6. 测试与查看

1、镜像准备

这里用的是 Python 3.6 版本的镜像,通过如下命令下载:

docker pull python:3.6

信息显示完成以后,通过如下命令确认已经下载的所有镜像:

docker image ls

大致如下图所示:

至此,我们的镜像就准备完了。

2、Django 文件准备

我的测试文件目录在 /home/hunter/docker/ 目录下。
在该目录下开启一个新的 Django 项目:

django-admin startproject Web

编辑settings.py文件,将ALLOWDD_HOSTS设置为允许所有 ip 访问。

ALLOWED_HOSTS = ['*']

/home/hunter/docker/Web/目录下创建一个requirements.txt文件,写入如下内容:

#requirements.txt
Django==3.0.3

至此, Django 相关文件创建完毕。

3、Dockerfile 文件准备

Dockerfile 的文件内容如下:

FROM python:3.6
RUN mkdir /usr/src/myapp -p
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN pip install -r requirements.txt -i  https://mirrors.aliyun.com/pypi/simple/
WORKDIR /usr/src/myapp/Web
CMD python manage.py runserver 0:7979

FROM python:3.6: 这条命令表明是使用 python:3.6 这个版本的 Python 镜像,其实所谓的 Python 镜像,其实也就是一个只装了 Python 3.6 版本的 Linux 操作系统,这个后面我们可以进入系统看一下。

RUN mkdir /usr/src/myapp -p :这条命令表示的是在该镜像里递归地创建这样一个文件夹, RUN 表示执行什么命令,后面的 mkdir 等命令和 Linux 操作系统都是一致的。

COPY . /usr/src/myapp: COPY 是复制命令, . 表示你所在的操作系统(非镜像操作系统)当前目录,这条语句的意思是把当前文件夹的所有内容都拷贝到镜像系统的 /usr/src/myapp 目录下。

WORKDIR /usr/src/myapp: WORKDIR 后面加上镜像操作系统的文件夹,表明工作的文件夹是镜像系统的 /usr/src/myapp 文件夹。

RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/: 上面一条语句切换到了镜像系统的工作文件夹,这条语句则是为上面干净的镜像系统安装相关依赖,这里只用到了 Django 这一个第三方库,所以在 requirements.txt 里面写入即可,-i 是指定下载源,这些都和 Linux 上的命令是一致的。

WORKDIR /usr/src/myapp/Web: 这是把工作目录切换到 我们的 Django 系统的根目录下。

CMD python manage.py runserver 0:7979: CMD 表示的是在镜像系统内执行什么命令,这个是 Django 项目的启动命令。

4、build 构建一个容器

前面我们的所有准备工作都已经做完了,然后使用 build 来把我们构建的系统变成一个可以运行的容器(container)。

在 Dockerfile 所在的文件夹,在我这里是 /home/hunter/docker/ ,执行如下命令:

docker build . -t python:3.6

然后就可以看到Dockerfile一行一行执行命令的信息输出,类似下图:

当上述指令执行完毕,输出类似于如下信息,则表示容器创建成功:

复制一下倒数第二行 built 后面的一串代码,这个后面构建容器,也就是 container 的时候要用到。

5、run 运行容器

接下来我们运行创建一个容器,使用如下命令:

docker run -p 7979:7979 6811c43789de

6811c43789de这一串代码,就是上一步复制下来的 id,这一行命令的意思是运行这个容器,并将容器的 7979 端口映射到你本身操作系统的 7979 端口。

为什么要映射端口呢?

因为每一个容器都类似于一个小黑盒,与外界是不连通的,要访问里面的信息,必须将其映射出来。

我看过很多教程教程,他们在执行这一步之后,会输出Django系统初始化的一些信息,但我这里,没有显示。

6、 测试与查看

我们在浏览器访问一下,服务器的 ip+port,在我这里是http://192.168.31.222:7979/ ,就可以看到我们搭建的系统已经运行起来了,如下如所示:

在我们执行 run 命令的地方也可以看到 请求的输出信息:

然后,我们可以进入一下我们构建的这个 container 看一下。

首先,docker container ls 查看所有正在运行的 container,可以看到类似如下信息:

有我们刚刚运行的 container 信息,包括 container idport 映射信息,name 等字段。

我们可以通过 container id 或者 name 这个字段进入我们刚刚创建的 container,我用 container id 进入容器:

docker container exec -it 524d98f18334 bash

然后就进入了我们创建的 container 系统,查看一下 container 里面运行的 Python 进程:

ps -ef | grep python

可以看到有 端口为 7979 的 Django 系统在运行:

然后可以 使用 exit 退出该容器。

以上,就是使用 Docker 来运行一个 Django 容器的全过程。

docker 运行容器_Docker之运行 Django 容器相关推荐

  1. docker登录密码错误_Docker安装运行Mysql 5.7.31容器并修改数据库密码

    一.安装Docker 参见文章:https://blog.csdn.net/y1534414425/article/details/107872715 二.拉取Mysql 5.7.31镜像 1dock ...

  2. springboot设置运行内存_docker run容器 设置 jvm 运行springboot 程序

    首先dockerfile中需要设置一个变量 比如我Dockerfile内容 FROM openjdk:8-jre-alpine VOLUME/tmp ADD *.jar app.jar ENV TZ= ...

  3. 自己动手写Docker系列 -- 5.1实现容器的后台运行

    简介 在前几篇中,我们已经构建了一个基础的镜像,本篇开始做一些进阶的功能,下面就是实现docker中的-d命令,让容器能够后台运行 源码说明 同时放到了Gitee和Github上,都可进行获取 Git ...

  4. Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

    Docker--使用docker工具管理软件/组件的运行,镜像.容器.数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境 一.docker的安装和卸载 1.卸载 2.安装 3. 导 ...

  5. docker 常用命令 -----(批量查看镜像/容器,重命名,运行,进入容器,私有仓库)

    印象笔记链接: https://app.yinxiang.com/fx/816a7b17-37a1-49c6-a7c5-210282b18d4a 一:镜像操作 注意: -f 参数为强制删除 1.1 查 ...

  6. Docker 教程:如何将Helix QAC作为容器创建并运行 下

    文章目录 第三部分:在本地项目上运行 DaaQT 在此 Docker 教程中,你将学习如何创建 Helix QAC 并将其作为容器化镜像运行. Docker 的基本定义是一种开源和流行的操作系统级虚拟 ...

  7. Windows7下安装Docker、下载镜像和运行OpenTsdb容器

    1.Docker溯源 Docker的前身是名为dotCloud的小公司,主要提供的是基于 PaaS(Platform as a Service,平台及服务)平台为开发者或开发商提供技术服务,并提供的开 ...

  8. Docker下载Tomcat镜像并运行Tomcat容器

    1.上dockerhub官网 https://hub.docker.com/ 2.在dockerhub上搜索tomcat镜像 3.点击进入页面然后点击Tags页,查看关于tomcat镜像的各种版本信息 ...

  9. Docker(3):docker运行nginx实例以及在java容器中运行java程序

    一.目的 通过运行nginx可以充分理解运行镜像原理,以及镜像内部虚拟网络端口和服务器端口的桥接关系.同时,使用java容器,编译java文件,并且运行java程序. 二.docker运行nginx镜 ...

最新文章

  1. Git 常用操作(2)- 创建标签
  2. C语言 之 PTA乙级错误集锦
  3. 【NCEPU】吴丹飞:(CSAPP)计算机系统漫游
  4. html5 提交from,刨根问底:HTML中form的隐式提交
  5. GVRP:GARP VLAN 注册协议 - 802.1P、802.1Q (GARP VLAN Registration Protocol - 802.1P、802.1Q)...
  6. 剑指 Offer 09. 用两个栈实现队列(相邻相同操作只需要移动一次)
  7. 企业实战_19_MyCat初始化ZK并配置Mycat支持ZK
  8. Intel Skylake (Client) 架构/微架构/流水线 (5) - PAUSE指令时延
  9. git 理解 Head指针Branch指针--resetcheckout
  10. 我的MyGeneration
  11. 计算机对用户算题任务的加工过程,操作系统原理答案
  12. 【译】R包介绍:Online Random Forest
  13. Form窗体点击关闭按钮并未关闭进程的解决方法
  14. linux文件系统 - 初始化(一)
  15. 网页自动填表html,韶关网页自动填表基础教程从简单开始 - MutouSoft - 时间财富网...
  16. Rime输入法第三方词库配置
  17. dns和私人dns是什么意思?企业如何预防dns劫持?
  18. [RK3128][Android 6.0] 3G模块调试
  19. 学习《User and entity behavior analysis under urban big data》(UEBA)
  20. 网站建设SEO推广说明

热门文章

  1. scala语言示例_标有示例的Scala关键字
  2. setseed_Java Random setSeed()方法与示例
  3. Java ClassLoader findLibrary()方法与示例
  4. 2018年终总结—努力做一个有趣的人
  5. Openshift 4.4 静态 IP 离线安装系列:初始安装
  6. std::dynamic_pointer_cast细节用法
  7. HashMap的put方法(Java7)和putVal方法(Java8)
  8. cordova 更改app版本_【ios马甲包cps联运】App上架难 马甲包不知道该怎么做?
  9. myftpadmin+proftpd+mysql架设ftp服务器_linux下用Proftpd搭建ftp服务器及配置方法
  10. 电脑温度检测软件哪个好_重装电脑,用哪个软件重装系统比较好?