ITPub博客

首页 > 云计算 > > docker安装python

docker安装python

作者:浪花小雨滴 时间:2020-05-11 18:01:16 0 删除 编辑

最近在迁移服务器上的python程序,那叫一个累啊,虽然只是迁移定时任务,对外web用另外的方式,但是也折腾了好久,最大的问题就是环境不匹配导致各种坑,既有python第三方包的版本问题,也有服务器环境问题。
听说docker做运行环境打包很不错,就试用了一下,确实很方便,相当于把整个python环境打包压缩,到新的服务器解压一下就可以用了,完全不需要重新搞环境。
docker,简单说就是一个虚拟机,类似VMware之类,但是比VMware轻量,对系统内存占用小,速度更快。当然要用好docker也不是件容易的事情,特别是容器编排,资源控制方面。下面说说docker安装python环境,以及docker基本操作,镜像容器的迁移等,对于普通的应用,而不是面向开发运维,完全足够了。

1. 仓库,镜像,容器的关系
有几个概念需要了解清楚的,就是仓库,镜像,容器的概念以及它们之间的关系是什么。
仓库:存放镜像的地方
镜像:类似ppt模板,是容器的基础。
容器:根据ppt模板制作出来的具体的PPT,实际运行代码的执行环境。


注意,docker的操作全程需要root权限,所以最好将用户的sudo权限进行细分控制。

2. docker安装与卸载
docker安装参考官方教程:Get Docker CE for CentOS.
我是从docker官网下载docker安装文件,上传至服务器,然后执行

# 安装
sudo yum install xxx.rpm 

# 启动
sudo systemctl start docker

# 卸载 
sudo yum remove docker-ce
sudo rm -rf /var/lib/docker


3. 修改镜像源
默认情况下会从国外拉取镜像,这样会很慢很慢,如果修改为国内镜像,速度会快很多。在国内,可以通过registry.docker-cn.com访问官方镜像库,目前该镜像库只包含流行的公有镜像,而私有镜像仍需要从美国镜像库中拉取。

# 重启docker
sudo systemctl daemon-reload 
sudo systemctl restart docker



4. 下载镜像
项目中都是使用python3,因此需要miniconda3的镜像。

docker pull continuumio/miniconda3
docker run -i -t continuumio/miniconda3 /bin/bash



5. 启动基本操作

# 查看本地有那些镜像
sudo docker images

# 从镜像启动一个容器
sudo docker -it image_name /bin/bash 

# 查看正在运行的容器
sudo docker ps

# 查看全部容器,包括已经停止的容器
sudo docker ps -a

# 启动一个停止的容器
sudo docker start container_id

# 进入一个正在运行的容器
sudo docker exec -it container_id /bin/bash

# 重命名容器
sudo docker rename old_container_name  new_container_name

# 容器迁移,先导出容器,在导入成镜像
# 导出容器
sudo docker export container_id | gzip > image_name.tar.gz
# 导入成镜像
zcat image_name.tar.gz | sudo docker import - image_name

# 删除容器
docker rm container_id

# 删除镜像
docker rmi image_id

创建容器

启动容器


进入和退出容器

重命名容器

导出容器

导入容器


6. 容器迁移
我们使用容器的一个重要原因,就是运行环境的迁移,直接将容器导入导出就可以了。
容器迁移,先导出容器,在导入成镜像即可。


7. 数据卷
一般情况下,容器只是运行环境,不应该承担数据存储的角色,如果有数据存储的需求或者需要读取系统文件,就需要将系统的某个文件夹挂在到容器中,这样容器既能读取系统文件,也能将运行时生成的文件写到系统中保存起来,最典型的就是MySQL之类的数据库容器,如果不将数据保存起来,随着容器的消失,数据也跟着消失了。

数据卷通过启动参数 -v 来指定。
-v后面的映射关系是"宿主机文件/目录:容器里对应的文件/目录",其中,宿主机上的文件/目录是要提前存在的,容器里对应的文件/目录会自动创建。
因此,为了方便管理,最好是宿主机路径与容器路径保持一致。



8. 开放端口
有些对外服务的容器,比如tomcat,mysql等,需要开放端口给外部访问。

端口开放通过启动参数 -p 来指定。
-p 宿主机端口:容器端口。
一般来说,为了方便管理,会设置宿主机端口和容器端口保持一致.
比如web端口:-p 80:80



9. 启动容器并执行python程序
不要忘了,我们搭建python环境是为了执行python程序的,下面讲讲怎么启动容器并执行多个python程序。


10.执行权限

前面的操作都是用sudo,这是不安全的,应该将当前用户添加到docker组。

# 添加名为docker的用户群
sudo groupadd docker   # 将当前用户添加大docker用户群
sudo usermod -aG docker [你当前的用户名]
# 退出系统,重新登录,这时候就不需要sudo执行命令了
docker run hello-world

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3122619/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40115