docker容器中配置python环境

docker中配置python环境

使用docker的好处

当我们在迁移python项目的时候,python环境是个让人头疼的问题,特别是用的库特别多的时候,环境不匹配会导致各种问题发生。

用docker把python环境或者和项目一起打包就能很好解决这个问题。docker实际上就是一个轻量级别的虚拟机,我们可以把python环境部署到docker中,这样就能随时打包带走,非常方便。

docker的基本概念

docker一般由三个部分组成,镜像,仓库和容器

  • 仓库:存放镜像的地方

  • 镜像:环境模板,容器就由镜像产生并且运行

  • 容器:根据镜像生成的实际执行环境

docker的安装与卸载

# 安装
sudo yum install docker

# 启动
sudo systemctl start docker

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

docker修改镜像源

在根目录下有个叫daemon的json文件,上网找到国内镜像源将其替换即可

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

下载docker镜像

使用python3的话,推荐使用miniconda3的镜像

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

docker 容器的基本操作

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

# 从镜像启动一个容器
sudo docker run -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

# 删除容器
docker rm container_id

# 删除镜像
docker rmi image_id

# 拷贝宿主机的文件到docker容器
docker cp [OPTIONS] dest_path container:src_path

# 拷贝docker容器中的文件到宿主机
docker cp [OPTIONS] container:src_path dest_path

docker容器的导入和导出

docker容器最方便的就是打包导出,和导入,能够方便地进行环境迁移,一个容器打包导出后可以在另一台机器的docker中解压导入成一个镜像。

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

数据卷挂载

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

数据卷通过启动参数 -v 来指定。
-v后面的映射关系是"宿主机文件/目录:容器里对应的文件/目录",其中,宿主机上的文件/目录是要提前存在的,容器里对应的文件/目录会自动创建。

docker run -it -v /xxx/xxx:/xxx/xxx 容器名或id /bin/bash

为了方便管理,推荐将容器里的目录设置成和宿主机一致

开放端口

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

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

参考博客: https://zhuanlan.zhihu.com/p/38634164

posted @ 2021-11-30 21:09  TidalCoast  阅读(5471)  评论(0编辑  收藏  举报