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)删除镜像,在这之前需要先暂停并删除容器
- 初次进入到容器命令行后,需要先:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。 不然后面安装 vim 的时候会报错:Unable to locate package vim
- 但是 apt-get update 的时候报错连接失败问题(多安装执行几遍就行了,第二次安装时会从第一次的进度开始,而不是重新安装,所以可以避免 timeout 问题)
- 最好不要修改源!!! 因为修改后,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
-
新容器里没有 vim 命令,需要安装:apt-get install vim(这里也是会有 timeout 问题,所以也是多安装几遍就可以了!!!)
-
批量安装 python 包,需要在挂载的目录下创建 requirements.txt 文件(可以从已存在的虚拟机上cat pip list 里的内容粘过来)然后进入到容器对应的目录里,并执行: pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- 已经创建的容器 shell (按照上述步骤已经安装好环境了)不要关闭,重新打开一个 shell 窗口进行镜像制作
- 先 sudo docker ps -a 查看刚才创建的容器,找到 ID 号
- 然后复制 ID,执行:sudo docker commit db62f724e846 py_container_1:3.6:其中 commit 后面跟的即为刚才安装好环境的容器对应的 ID,py_container_1 与 3.6 分别对应 REPOSITORY 与 TAG,可随意命名。
- 制作镜像成功。输入sudo docker images 查看是否已经存在
- 然后依据 py_container_1 这个镜像启动容器测试能否正常使用 Python 以及安装的包。启动命令为 sudo docker run -it py_container_1 :3.6 /bin/bash,创建一个临时容器
- 若可以正常使用。为了此镜像能够在内网环境及离线环境使用,将此镜像打包为文件(需要打包为以.tar后缀或者以.tar.gz结尾的文件),移植到具体项目环境中即可使用:sudo docker save py_container_1:3.6 | gzip > py_container_1.tar.gz
- 将 tar.gz 文件上传到另一台机器并 load,命令格式为:docker load < tar 包所在路径,此处即为 sudo docker load < /home/q/py_container_1.tar.gz。之后再新的机器上,就可以和原机器上一样进行操作了



