栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

docker 使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker 使用

镜像:

sudo docker image pull python:3.6:拉取 python3.6 镜像
sudo docker images 查看已经拉取的 python 镜像

创建容器:

查看容器:sudo docker ps -a
创建一个临时的容器:sudo docker run -it python:3.6 /bin/bash
创建后台运行的容器:sudo docker run -it -d --name=purchase_1 -v /xx/xx_dir:/home/xx_dir python:3.6 bash
其中:

  • -i: 交互式操作
  • -t: 终端 python:3.6: 使用 python:3.6镜像。 bash:交互式 Shell
  • -d:在后台运行container并打印容器ID
  • –name:给容器分配一个名称
  • -v:挂载一个 linux 实体机上的目录,其中:前的是实体机上的真实目录,后面的是容器的默认 home 目录的子文件夹(会自动创建)
  • -p :-p 1234:9002 表示将容器的 9002 端口映射到 Linux 实体机上的 1234 端口

创建完后会打印出容器 id

容器命令:
  • sudo docker exec -it container_1 bash 进入容器(使用 exec 这种方法退出时不会停止容器),容器是上面已经创建好的,容器里的挂载目录,有 linux 磁盘里的文件
  • 在容器命令行里 exit 退出,但是容器未停止、未被删除
  • sudo docker stop container_1 停止容器
  • sudo docker rm container_1 删除容器
  • sudo docker start/restart b750bbbcfd88 (ID)启动一个已停止的容器
  • sudo docker rmi image_1(镜像 ID)删除镜像,在这之前需要先暂停并删除容器
容器操作:
  1. 初次进入到容器命令行后,需要先:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。 不然后面安装 vim 的时候会报错:Unable to locate package vim
  2. 但是 apt-get update 的时候报错连接失败问题(多安装执行几遍就行了,第二次安装时会从第一次的进度开始,而不是重新安装,所以可以避免 timeout 问题)
  3. 最好不要修改源!!! 因为修改后,apt-get update 成功了,但是会导致 vim 安装时出现 The following packages have unmet dependencies: ncurses-base : Breaks: libtinfo5 (< 6.1) but 6.0+20161126-1+deb9u2 is to be installed 错误,且未找到解决办法!!!所以下面的代码块略过,不要执行!!!

若需要更新apt-get源:

mv /etc/apt/sources.list /etc/apt/sources.list.bak && 
echo "deb http://mirrors.aliyun.com/debian stretch main contrib non-free" >/etc/apt/sources.list && 
echo "deb-src http://mirrors.aliyun.com/debian stretch main contrib non-free" >>/etc/apt/sources.list && 
echo "deb http://mirrors.aliyun.com/debian stretch-updates main contrib non-free" >>/etc/apt/sources.list && 
echo "deb-src http://mirrors.aliyun.com/debian stretch-updates main contrib non-free" >>/etc/apt/sources.list && 
echo "deb http://mirrors.aliyun.com/debian-security stretch/updates main contrib non-free" >>/etc/apt/sources.list && 
echo "deb-src http://mirrors.aliyun.com/debian-security stretch/updates main contrib non-free" >>/etc/apt/sources.list
  1. 新容器里没有 vim 命令,需要安装:apt-get install vim(这里也是会有 timeout 问题,所以也是多安装几遍就可以了!!!)

  2. 批量安装 python 包,需要在挂载的目录下创建 requirements.txt 文件(可以从已存在的虚拟机上cat pip list 里的内容粘过来)然后进入到容器对应的目录里,并执行: pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

制作镜像:
  1. 已经创建的容器 shell (按照上述步骤已经安装好环境了)不要关闭,重新打开一个 shell 窗口进行镜像制作
  2. 先 sudo docker ps -a 查看刚才创建的容器,找到 ID 号
  3. 然后复制 ID,执行:sudo docker commit db62f724e846 py_container_1:3.6:其中 commit 后面跟的即为刚才安装好环境的容器对应的 ID,py_container_1 与 3.6 分别对应 REPOSITORY 与 TAG,可随意命名。
  4. 制作镜像成功。输入sudo docker images 查看是否已经存在
  5. 然后依据 py_container_1 这个镜像启动容器测试能否正常使用 Python 以及安装的包。启动命令为 sudo docker run -it py_container_1 :3.6 /bin/bash,创建一个临时容器
  6. 若可以正常使用。为了此镜像能够在内网环境及离线环境使用,将此镜像打包为文件(需要打包为以.tar后缀或者以.tar.gz结尾的文件),移植到具体项目环境中即可使用:sudo docker save py_container_1:3.6 | gzip > py_container_1.tar.gz
  7. 将 tar.gz 文件上传到另一台机器并 load,命令格式为:docker load < tar 包所在路径,此处即为 sudo docker load < /home/q/py_container_1.tar.gz。之后再新的机器上,就可以和原机器上一样进行操作了
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号