使用docker搞定 Python环境搭建

前言

当我们在公司的电脑上搭建了一套我们需要的Python环境,比如我们的版本是3.8的Python,那我可能有一天换了一台电脑之后,我整套环境就需要全部重新搭建,不只是Python,我们一系列的第三方库都需要重新安装,那么我们有没有解决问题的方法,当然有,我们可以使用docker解决困扰我们的环境问题。

搜索镜像

docker search : 从Docker Hub(hub.docker.com)中搜索指定的镜像,例如我们要搜索一个基于centos7环境安装的Python3.8版本。命令如下:

docker search python 
  • NAME 镜像仓库名称
  • DESCRIPTION 镜像描述信息
  • STARS 镜像收藏数
  • OFFICIAL 是否为docker官方发布的镜像
  • AUTOMATED 是否为自动化构建的镜像

输出如下:


[root@xxxx ~]# docker search python

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

python Python is an interpreted, interactive, objec… 4288 [OK]

django Django is a free web application framework, … 847 [OK]

pypy PyPy is a fast, compliant alternative implem… 193 [OK]

kaggle/python Docker image for Python scripts run on Kaggle 123 [OK]

arm32v7/python Python is an interpreted, interactive, objec… 37

centos/python-38-centos7 Platform for building and running Python 3.8… 36

joyzoursky/python-chromedriver Python with Chromedriver, for running automa… 33 [OK]

circleci/python Python is an interpreted, interactive, objec… 29

nikolaik/python-nodejs Python with Node.js 18 [OK]

arm64v8/python Python is an interpreted, interactive, objec… 17

centos/python-36-centos7 Platform for building and running Python 3.6… 17

centos/python-27-centos7 Platform for building and running Python 2.7… 15

iron/python Tiny Python Microcontainer 9

publicisworldwide/python-conda Basic Python environments with Conda. 6 [OK]

dockershelf/python Repository for docker images of Python. Test… 4 [OK]

i386/python Python is an interpreted, interactive, objec… 3

bitnami/python Bitnami Python Docker Image 3 [OK]

komand/python-plugin DEPRECATED: Komand Python SDK 2 [OK]

centos/python-34-centos7 Platform for building and running Python 3.4… 2

muccg/python-base Base images that use python 1 [OK]

amd64/python Python is an interpreted, interactive, objec… 1

ccitest/python CircleCI test images for Python 0 [OK]

saagie/python Repo for python jobs 0

qbtrade/python python 3.6.5 with requirements last update s… 0

openshift/python-33-centos7 DEPRECATED: A Centos7 based Python v3.3 imag… 0

[root@xxxx ~]#

拉取镜像

使用docker pull可以拉取我们想要拉取的镜像,命令如下:

docker pull centos/python-38-centos7

输出如下:


[root@xxxx ~]# docker pull centos/python-38-centos7

Using default tag: latest

latest: Pulling from centos/python-38-centos7

8ba884070f61: Pull complete

c3dca185eb14: Pull complete

ee720ba20823: Pull complete

497ef6ea0fac: Pull complete

ebf1fb961f61: Pull complete

b8249f70ce00: Pull complete

ebd817e2efe7: Pull complete

d3d10dd0937c: Pull complete

a8ad47ec8182: Pull complete

Digest: sha256:d10c46b6db436357965a96716e9f5d230d9b1a58c6db1f0c4f43c1fb1994cd79

Status: Downloaded newer image for centos/python-36-centos7:latest

[root@xxxx ~]#

查看镜像

使用docker images查看本地已经下载好的镜像,命令如下:

docker images

输出如下:

[root@xxxx ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos/python-38-centos7 latest b8d15efaa8ec 2 months ago 651MB ubuntu 15.10 9b9cb95443b5 2 years ago 137MB training/webapp latest 6fae60ef3446 4 years ago 349MB
运行交互式的容器

Docker会在隔离的容器中运行进程。当运行docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。 在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过docker run命令重新定义 最基本的docker run命令的格式如下:

$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

比如我这里要启动centos7,进入交互模式,通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

  • t: 在新容器内指定一个伪终端或终端
  • i: 允许你对容器内的标准输入 (STDIN) 进行交互
docker run -i -t centos/python-38-centos7 /bin/bash

如下进入centos终端后,进python交互环境打印"hello, i'm Muller.",最后用exit退出,内容如下:


[root@xxxx ~]# docker run -i -t centos/python-36-centos7 /bin/bash

(app-root) python

Python 3.6.3 (default, Mar 20 2018, 13:50:41)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> print("hello, i'm Muller.")

hello, i'm Muller.

>>> exit()

(app-root) exit


后台模式启动

run加上-i -t是进交互模式,如果不想进交互模式直接执行脚本,可以直接使用run,比如echo "hello world",屏幕会输出"hello world"

docker run centos/python-38-centos7 /bin/echo "hello world"

如果不想在前台执行,一般我们运行环境会选择挂后台,加个-d 参数即可

docker run -d centos/python-38-centos7 /bin/echo "hello world"

[root@xxxx ~]# docker run centos/python-38-centos7 /bin/echo "hello world"

hello world

[root@xxxx ~]# docker run -d centos/python-38-centos7 /bin/echo "hello world"

1e5c22451bf2215f6c098e066b74363f1db9cde97e9ecea02947ccbbf2fa7e8f

[root@xxxx ~]#

使用-d后台执行后,会发现下面多了一长串,这个就是容器的唯一id,可以通过这个id找到容器

ps查看容器

先run下 training/webapp

docker run -d -p 5000:5000 training/webapp python app.py

使用docker ps查看正在运行的容器

docker ps

输出如下:


[root@xxxx ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

c9e8a325b145 training/webapp "python app.py" 16 hours ago Up 16 hours 0.0.0.0:32768->5000/tcp

[root@xxxx ~]#

上面的echo "hello world"只是一个很简单的输出指令,执行完就关闭了,所以ps查找正在运行的查不到,可以加个-a参数,显示所有的容器,包括未运行的

ps 查找参数相关语法

  • -a :显示所有的容器,包括未运行的
  • -f :根据条件过滤显示的内容
  • --format :指定返回值的模板文件
  • -l :显示最近创建的容器
  • -n :列出最近创建的n个容器
  • --no-trunc :不截断输出
  • -q :静默模式,只显示容器编号
  • -s :显示总的文件大小
logs查看日志

可以通过容器id或者容器name去查运行的日志

  1. docker logs [容器id]

  2. docker logs [容器name]

停止容器

停止容器的话,可以用stop容器的id或者容器NAME名称

  1. docker stop [容器id]

  2. docker stop [容器name]

启动容器

docker start启动容器

docker start [容器id]

正在运行的容器,可以使用 docker restart 命令来重启

docker restart [容器id]
删除容器

docker rm 命令来删除不需要的容器

  1. docker rm [容器id]

  2. docker rm [容器name]

注:当删除运行中的容器时,需要先stop停止容器,再执行删除命令

总结

本文主要介绍了使用docker搭建Python环境,以及对于docker拉取镜像,docker容器的主要操作,包括运行容器,停止容器,删除容器等。希望对大家学习docker能有所帮助。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker是一种容器化技术,可以帮助我们快速搭建Python开发环境。以下是搭建步骤: 1. 安装Docker 首先需要安装Docker,可以在官网下载安装包进行安装。 2. 创建Docker镜像 使用Dockerfile创建Docker镜像,Dockerfile是一个文本文件,其中包含了构建镜像所需的指令和配置信息。可以在Dockerfile中指定Python版本、安装依赖库等。 3. 运行Docker容器 使用Docker镜像创建Docker容器,可以在容器中运行Python程序。可以使用docker run命令创建容器,并指定容器的名称、端口映射等。 4. 进入Docker容器 使用docker exec命令可以进入Docker容器,可以在容器中执行Python程序、安装依赖库等操作。 以上是使用Docker搭建Python开发环境的基本步骤,可以根据实际需求进行配置和调整。 ### 回答2: Docker是一个轻量级容器虚拟化平台,通过Docker可以快速构建、发布和运行应用程序。Docker具有兼容性好、可移植性高、资源占用小等特点,被广泛应用于软件开发和运维领域。 Python是一门非常流行的编程语言,应用广泛。搭建Python开发环境需要安装各种编译工具、库和依赖项,非常繁琐。使用Docker可以快速搭建Python开发环境,避免了环境配置的烦恼,提高了程序的可移植性和兼容性。 下面是使用Docker搭建Python开发环境的步骤: 1. 安装Docker 首先需要安装DockerDocker官网提供了详细的安装指南和下载地址,根据自己的操作系统版本选择相应的Docker安装包进行安装。 2. 创建Docker镜像 使用Dockerfile创建Docker镜像,可以让我们轻松地搭建Python开发环境,以下是Dockerfile的示例: ``` FROM python:3.7-slim-buster WORKDIR /myapp COPY requirements.txt . RUN apt-get update && \ apt-get install -y gcc && \ pip install -r requirements.txt CMD [ "/bin/bash" ] ``` 3. 构建Docker镜像 在Dockerfile所在的目录下执行以下命令,构建Docker镜像 ``` docker build -t my-python-app . ``` 其中my-python-app是镜像名称,`.`表示当前目录。 4. 运行Docker容器 执行以下命令,启动容器 ``` docker run -it --name=my-python-container my-python-app /bin/bash ``` 其中`my-python-container`是容器名称,`my-python-app`是镜像名称,`/bin/bash`是容器启动后执行的命令。 容器启动后,可以在容器使用Python进行开发,也可以通过端口映射将容器中的服务开放给外部。开发完成后,可以通过docker stop命令停止容器使用Docker搭建Python开发环境,可以帮助我们快速搭建开发环境,避免各种繁琐的配置工作,提高开发效率。同时,Docker具有极高的可移植性和兼容性,可以让我们的程序更加稳定可靠。 ### 回答3: Docker是一款非常流行的容器化技术,它可以快速搭建开发环境。在使用Docker搭建Python开发环境之前,需要先了解以下几个概念: 1. Docker镜像:Docker的镜像是一个打包好的文件,类似于虚拟机中的镜像文件,其中包含了开发环境所需的所有组件和配置。 2. Docker容器Docker容器Docker镜像的运行实例,可以理解为一个轻量级的虚拟机。 3. Dockerfile:Dockerfile是一个文本文件,其中包含了构建Docker镜像所需的所有步骤和指令。 接下来就是具体的步骤: 1. 安装Docker:在官网下载Docker安装包并安装,具体的步骤可以参照官方文档。 2. 创建Dockerfile:在本地创建一个文件夹,创建Dockerfile并编写如下内容: ``` FROM python:3.8 WORKDIR /app ADD . /app RUN pip install --upgrade pip RUN pip install -r requirements.txt CMD ["python", "app.py"] ``` 其中,FROM指令指定了使用Python版本,WORKDIR指定了工作目录,ADD指令将当前目录下的所有文件添加到镜像中,RUN指令用来执行命令。requirements.txt文件是保存依赖包的文件。 3. 构建Docker镜像:在Dockerfile所在的目录执行以下命令: ``` docker build -t my-python-app . ``` 其中,my-python-app是镜像的名称,最后的“.”表示Dockerfile所在的当前目录。 4. 运行Docker容器:执行以下命令即可启动容器: ``` docker run -d -p 80:80 my-python-app ``` 其中,-d表示以守护进程模式启动容器,-p指定了一个端口映射,my-python-app是要启动的镜像名称。 5. 验证容器是否正常运行:在浏览器中输入http://localhost,可以看到Python应用程序的输出。 以上就是使用Docker搭建Python开发环境的具体步骤,通过Docker,我们可以快速、简单地搭建开发环境,使得开发者可以更加专注于业务逻辑的实现,而不必担心开发环境配置和兼容性问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值