导读:今天首席CTO笔记来给各位分享关于djangodocker怎么用的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、大家都在怎么使用 docker2、如何使用 Docker 部署容器3、Django应用的容器化部署4、Docker搭建与使用5、如何用 Docker Compose 配置 Django 应用开发环境大家都在怎么使用 docker
Docker的开发环境
在深入Docker和IDE细节之前,让我们看看,为什么得把Docker放进必需的开发工具列表中。
构建系统
首先,Docker能够使我们的构建环境便携,可重复以及保持隔离。举个例子:你需要使用5.1版本的gcc工具构建一个C文件。 所有需要做的就是运行以下命令(当然,这里假定你已经安装了Docker):
docker run gcc:5.1 gcc -o helloworld helloword.c
神奇的是,你可以在任何地方运行它,你不必理会依赖的库文件、之前的冲突或者gcc的安装。只要它能在你的笔记本上跑起来,也就可以在集成服务器上运行了。
运行环境
同样适用于运行时环境。如果你只想在tomcat 8上运行Java Web应用程序,可以只使用:
docker run tomcat:8 -v HelloWorld.war:/usr/local/tomcat/webapps/Helloworld.war
同样,你不用担心依赖性,平台配置或Linux发行版的差异,这些Docker都能搞定。
Docker和IDE
好吧,这应该很清楚,为什么现在Docker对开发真的非常有用。就像我们描述的,你可以使用喜欢的shell来执行这些命令。 问题是,开发者都是懒惰的。这意味着,如果我们在最喜欢的IDE中码字,就不希望跑到IDE外面来使用Docker。我们想直接从IDE中运行容器。
不幸的是,现在主要IDE都不支持Docker。
所以,你是不是很想看到IDE中集成了Docker?
你想要在容器中运行IDE?
docker run eclipse
汗,这不是容器的使用方式。在容器里面运行图形化应用程序,太过复杂也缺少可移植性。
你想要从IDE中运行容器?
是哦!我们希望能看到对Dockerfile,Docker Compose YML文件的支持,IDE构建系统和容器内的运行时环境。让我们来看看详细的需求:
Dockerfile的支持
Dockerfile支持应该带有语法高亮显示,自动补全(当按下Ctrl+SPACE键,dockerfile指令会自动弹出来)和语法验证(在执行 docker build 之前,IDE要能指出语法错误)
Docker Compose YML文件的支持
更有意思的是对Docker Compose YML文件的支持。这将允许定义容器间的关系,如Link和Volume,也可以从你的编辑器一次启动多个容器。真的很酷!
IDE构建系统
当然,你需要得到IDE中运行容器的支持。具体地,容器可以构建你的源文件。如果利用Docker多种语言特性,这可能变得更容易。
IDE运行时环境
我们期待IDE的最后一项功能,能够启动容器的运行时环境。
doclipser简介
根据上述四个功能,我们构建了doclipser,一个Eclipse插件来编辑,构建和运行Docker容器。
doclipser支持Dockerfile:语法高亮显示,自动补全和语法验证。虽仍没有支持Docker Compose YML文件,但已经可以执行一些Docker的命令,来构建源文件或启动运行时环境。
doclipser不是唯一的Docker Eclipse插件。这里有一个很优秀的Eclipse Docker工具集(以下简称:EDT),由JBoss维护且和Eclipse的Linux工具包一起分发。 即使它们都能使大家在IDE中使用Docker,doclipser和EDT还是两种不同的方法:
doclipser通过对Dockerfiles的支持,专注于编辑和运行容器,在未来的版本中,将提供对Docker Compose YML文件的支持。
EDT对Docker镜像和容器拥有更高级的管理方式,但缺乏对Dockerfiles的支持。
domeide.github.io
如何使用 Docker 部署容器
设想,为了推出一个网站,您不必从裸机安装一个完整的服务器。 而不是安装操作系统,然后安装服务器软件,然后部署精心设计的应用程序或站点,您可以简单地在一个独立的包中开发所有内容,并使用单个命令将其推出。
这是使用容器的众多好处之一。它们使开发和部署周期变得异常高效。但是你如何部署这些容器?我想在这里指导你完成这个过程。我们将专注于在Ubuntu Server 18.04上部署基本的NGINX Web服务器作为容器。所有这一切都将在Docker的帮助下完成。
为了成功将NGINX部署为容器,您需要具备以下条件:
- 一个安装了Docker的Ubuntu Server 18.04的运行实例。
- 一个docker 用户组的成员用户
是的,有了这两部分,你就准备好了。
您部署的每个容器都将基于从DockerHub中提取的镜像。 您可以下拉单个镜像并根据需要随时使用。 DockerHub上还有许多镜像用于单个应用程序或平台。 以NGINX为例。 如果你在DockerHub上搜索NGINX,你会得到大约56,172个条目。 这并不意味着每个条目都是您可以使用的可用图像。
图像命名如下:
例如,对于NGINX,您可能会找到一个名字为的镜像:
或许你可能找到:
您也看到了,有几乎所有需要的镜像。
在使用图像之前,必须将其保存在本地驱动器上。 有两种方法可以做到这一点:
- 直接使用pull命令
- 间接地,在容器部署过程中。
要从DockerHub中拉取图像,您将打开一个终端窗口并发出命令:
如果你想拉取Ingress图像,该命令是:
当你拉取你需要的图像之后,你可以使用命令确认是否存在:
上面的命令将列出你拉取的所有镜像(图A)。
拉取随意图像时要谨慎。 为什么? 因为你永远不知道创造它们的原因。 容器可能包含恶意代码,可能会对您的网络或数据造成严重破坏。 因此,最好只使用官方图像(例如NGINX图像)。
现在该部署容器了, 如果您尚未拉取镜像,则在部署阶段将下拉所需要的镜像。 由于我们拉取官方NGINX图像,我们将使用它。
要部署容器,请使用docker命令,如下所示:
备注:
- NAME等于您要为容器提供的名称(这可以是任何内容,例如nginx-webserver)。
- PORTS您要使用的端口(以NETWORK PORT:CONTAINER PORT形式)。
- IMAGE用于容器的图像(例如nginx)。
因此,部署NGINX容器的基本命令是:
容器将要部署,NGINX Web服务器将在端口80上可用于本地网络。但是,如果已在服务器上使用端口80来部署容器,该怎么办? 您可以将其部署在网络端口8080上,如下所示:
此时,您可能会看到下一个问题。 运行上述命令之一后,不返回bash提示符(图B)。
你如何运行一个容器,并获得你的bash提示? 为此,您必须以分离模式运行容器。 在此之前,您必须使用键盘组合[Ctrl] +终止当前容器。 该组合将返回提示并杀死容器。
要确定容器是否运行,使用命令:
将列出所有容器及其状态(图C)。
如果容器仍在运行,我们必须在同一端口部署另一个容器之前将其终止(否则端口会发生冲突,从而阻止容器部署)。 要杀死正在运行的容器,首先需要Container ID(随机字符串)。 发出docker ps -a命令时会显示此字符串。 要终止正在运行的容器,使用命令:
其中CONTAINER_ID是相关容器的ID。
然后,您可以使用以下命令删除容器:
其中CONTAINER_ID是相关容器的ID。
请注意,您不必输入完整的Container ID,字符串的前四个字符就足够了。
现在,要以分离模式部署容器,命令是:
这次你不仅会得到你的提示,而且Docker会为你显示容器ID(图D)。
如果你想在正在运行的容器上工作怎么办? 假设您想对NGINX进行更改甚至开始开发它将显示的网站? 因此,您必须访问容器。 因此,您需要Container ID。 使用ID,发出命令:
其中CONTAINER_ID是容器的ID。
您现在应该处于运行容器提示符(图E)中,您可以在其中开始处理NGINX服务器。
要退出容器,只需键入命令exit。
七、比你想象的容易
希望到现在为止,您看到容器部署并不像您想象的那样具有挑战性。 在Docker的帮助下,您可以在几分钟内推出专业版的应用和服务。
原文链接:
Django应用的容器化部署
部署使用容器化的方式,以容器的方式来运行。
首先,创建Dockerfile:
接着,进入Dockerfile文件目录,执行命令构建镜像,镜像名称是myproject:v1:docker build -t myproject:v1 .
构建完成后,可以查看到我们刚刚创建的镜像:
最后,启动容器:docker run -d -p 9999:8000 -v /home/myproject/:/myproject/ --name myproject1 myproject:v1
Docker搭建与使用
docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。
这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。
然后分开执行以下命令:
之后重新加载配置,并且重启 Docker 服务
这里推荐使用 Portainer 作为容器的 GUI 管理方案。官方地址:
安装命令:
访问你的 IP:9000 即可进入容器管理页面。
名字为镜像库中的镜像名,若出现权限问题报错,前面加上sudo即可。
参数说明:
-p 3306:3306 :将容器的3306端口映射到主机的3306端口
-v /mydata/mysql/log:/var/log/mysql :将配置文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql :将日志文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql :将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root :初始化root用户的密码
验证,查看docker下的所有进程:docker ps
docker安装的mysql,相当于linux系统中单开了一个linux专门用来安装mysql。
-p 3306:3306 :将容器的3306端口映射到主机(vagrant开启的虚拟机)的3306端口。
日志也是将经常变动数据挂载到外部linux文件夹下。
上面已经说到,将mysql容器中的配置文件挂载到本机中,所以直接修改本机目录下的配置文件即可。
防止挂载时 redis.conf找不到而在conf文件夹下再次创建名为redis.conf的文件夹,所以预先创建。
mysql之前是进入容器,现在我们直接进入客户端进行操作redis
贼好用啊,还有提示。
docker restart redis 重启redis容器后,发现之前的数据都丢失了,因为保存在内存中。所以我们需要配置持久化。
因为之前已经将容器配置文件挂载到本机目录下,所以直接修改本机redis.conf即可。
重启验证,OK。
如何用 Docker Compose 配置 Django 应用开发环境
上次有人说不敢在生产环境中用 Docker,所以 SegmentFault 社区组织翻译 8 个你可能不知道的 Docker 知识 这篇文章,和大家介绍一下生产环境中的 Docker 用例。 自从上世纪 90 年代硬件虚拟化被主流的技术广泛普及之后,对数据中心而言
结语:以上就是首席CTO笔记为大家介绍的关于djangodocker怎么用的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。