docker 使用

三部曲

其一:当前文章:docker 使用
其二:在 docker 中部署 python 工程
其三:使用 Docker部署 Tensorflow Serving 模型服务

镜像:

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=container_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。之后再新的机器上,就可以和原机器上一样进行操作了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值