社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

创建你的第一个Docker应用

Docker • 5 年前 • 538 次点击  

在简要介绍Docker是什么以及为什么要使用它之后,你将能够使用Docker创建第一个应用程序。

Docker是什么?


Docker是由Docker公司开发的免费软件。它于2013年3月13日面世,并且从那天开始成为IT开发领域的必备工具。

它允许用户创建独立且隔离的环境来启动和部署其应用程序。这些环境称为容器。

使用Docker,开发人员可以在任何机器上运行容器。

正如你所看到的,使用Docker,不再存在依赖或编译问题。你所要做的就是启动容器,你的应用程序就会立即启动。

但是,Docker等同于虚拟机吗?


这是关于Docker的最常见问题之一。答案是:并不完全是。

它可能起初看起来像虚拟机,但功能却不太一样。

与Docker不同,虚拟机包含完整的操作系统。虚拟机能独立并像计算机一样工作。

Docker仅仅是共享主机的资源,利用这些资源来运行它所需的环境。

Docker VS虚拟机(版权归Docker博客所有)

为什么作为开发人员需要使用Docker?


这个工具可以真正改变开发人员的日常生活。为了最好地回答这个问题,我列出了一份它的好处的清单:

  • Docker很快。与虚拟机不同,你的应用程序可以在几秒钟内启动并快速停止。

  • Docker是跨平台的。你可以在任何系统上启动容器。

  • 相比于虚拟机,可以更快的构建和销毁容器。

  • 设置工作环境不再困难。配置Docker后,将永远不必再次手动重新安装依赖项。如果更换计算机或有新员工加入你的公司,只需要为他们提供你的配置。

  • 拥有一个干净的工作环境,因为每个容器的环境都是隔离的,可以随时删除它们,而不会影响其它环境。

  • 可以轻松的在的服务器上部署项目以便上线。


现在让我们创建你的第一个应用程序


既然知道Docker是什么,那么现在是时候创建的第一个Docker应用程序了!

这个简短教程的目的是创建一个Python程序,这个程序会通过Dockerfile启动。最终这个程序会输出一行语句。

如果你了解了所有的步骤,你会发现Docker并不复杂。

注意:不需要在计算机上安装Python。Docker环境中将包含Python以执行的代码。

1. 在你的计算机上安装Docker

对于Ubuntu:

首先,更新你的包:

  1. $ sudo apt update


接下来,使用apt-get安装Docker:

  1. $ sudo apt install docker.io


最后,验证Docker是否正确安装:

  1. $ sudo docker run hello-world


对于MacOSX用户:可以点击https://docs.docker.com/docker-for-mac/install/。

对于Windows用户:可以点击https://docs.docker.com/docker-for-windows/install/。

2. 创建项目

在创建你的第一个Docker应用程序之前,你需要在计算机上创建一个文件夹。它必须包含以下两个文件:

  • 一个 'main.py' 文件(将包含要执行的代码的Python文件)。

  • 一个 ‘Dockerfile’ 文件(Docker文件,包含创建容器环境的必要指令)。


通常你的文件夹结构如下:

  1. .

  2. ├── Dockerfile

  3. └── main.py

  4. 0 directories, 2 files


3. 编辑Python文件

你可以将以下代码添加到'main.py'文件中:

  1. #!/usr/bin/env python3


  2. print("Docker is magic!")


一旦你看到终端中显示“Docker is magic!”,就说明你的Docker正在工作。

4. 编辑Docker文件

提示:当你创建Dockerfile时,你需要做的第一件事就是问问自己你想要什么。现在我们的目标是运行启动Python代码。

为此,我们的Docker必须包含启动Python所需的所有依赖项。一个安装了Python的linux系统(Ubuntu)就足够了。

创建Docker文件时,第一步是访问DockerHub网站。该站点包含许多设计好的的镜像,使用这些镜像可以以节省你的时间(例如:所有适用于Linux或某种代码语言镜像)。

在我们的例子中,我们将在搜索栏中输入“Python”。第一个结果是为执行Python而创建的官方镜像。完美,我们就用它!

  1. # 一个 dockerfile 的开头必须总是导入基本镜像

  2. # 我们使用关键词 'FROM' 来导入

  3. # 在这个例子中,我们导入python镜像

  4. # 所以我们使用python作为镜像名称,latest为版本

  5. FROM python:latest


  6. # 为了运行我们的python代码,我们必须将它导入我们的镜像

  7. # 我们可以使用关键词 'COPY'来做这件事

  8. # 第一个参数 'main.py' 是主机上的python文件的文件名

  9. # 第二个参数 '/' 是镜像上放置该文件的路径

  10. # 我们将python文件放在镜像的根目录

  11. COPY main.py /


  12. # 我们需要定义容器运行时需要执行的命令

  13. # 使用关键词'CMD'来做这件事

  14. # 以下命令执行 "python ./main.py"

  15. CMD [ "python", "./main.py" ]


最终 Dockefile 代码如下:

  1. FROM python:latest

  2. COPY main.py /

  3. CMD [ "python", "./main.py" ]


5. 创建Docker镜像

一旦你的代码准备就绪并编写了Dockerfile,你所要做的就是创建你的镜像并包含你的应用程序。

  1. $ docker build -t python-test .


'-t'选项允许你定义镜像的名称。我们使用了'python-test',你可以改成任何你想要的名称。

6. 运行Docker镜像

创建镜像后,你的代码就可以运行了。

  1. $ docker run python-test


你需要在'docker run'后面加上你的镜像名称。

这样你应该在终端看到“Docker is magic!”。

代码地址


如果你想要查看全部代码,可以点击以下链接:https://github.com/gael-thomas/Docker-First-Application-example。

Docker常用命令


镜像列表:

  1. $ docker image ls


删除镜像:

  1. $ docker image rm [镜像名称]


删除所有存在的镜像:

  1. $ docker image rm $(docker images -a -q)


容器列表(包括正在运行的和停止运行的):

  1. $ docker ps -a


停止容器:

  1. $ docker stop [container name]


停止所有正在运行的容器:

  1. $ docker stop $(docker ps -a -q)


删除某个容器(已经停止的):

  1. $ docker rm [容器名称]


删除所有容器(已经停止的):

  1. $ docker rm $(docker ps -a -q)


显示某个容器的日志:

  1. $ docker logs [container name]


原文链接:https://www.freecodecamp.org/news/a-beginners-guide-to-docker-how-to-create-your-first-docker-application-cc03de9b639f/

Kubernetes企业级实战训练营


Kubernetes企业级实战训练营将于2019年8月30日在北京举办,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:Docker基础、容器技术、Docker镜像、数据共享与持久化、Docker三驾马车、Docker实践、Kubernetes基础、Pod基础与进阶、常用对象操作、服务发现、Helm、Kubernetes核心组件原理分析、Kubernetes服务质量保证、调度详解与应用场景、网络、基于Kubernetes的CI/CD、基于Kubernetes的配置管理等,点击下方图片或者阅读原文链接查看详情

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39262
 
538 次点击