从0开始制造一个docker自定义镜像

栏目: 编程工具 · 发布时间: 5年前

内容简介:docker容器技术现在火的一塌糊涂,最近的工作刚好和这部分内容有交集,就动手搞了一下,这里记录下Docker使用的相关流程。由于我用的是mac,docker是基于linux系统,因此需要下载

docker容器技术现在火的一塌糊涂,最近的工作刚好和这部分内容有交集,就动手搞了一下,这里记录下 Docker 使用的相关流程。

安装Docker

由于我用的是mac,docker是基于 linux 系统,因此需要下载 docker desktop ,是一个mac下的app,下载后放入应用程序中就可以运行。

从0开始制造一个docker自定义镜像

运行起来会后在顶部的状态栏中常驻一个小鲸鱼的小图标,点击这个图标可以进行重启,退出等操作。

这iterm2中输入docker version,能看到docker相关信息就说明docker安装成功了,可以开始你的docker之旅吧。

从0开始制造一个docker自定义镜像

自定义镜像是由基础镜像和自定义环境构成。这个例子使用的基础镜像是centos,自定义环境使用 tensorflow的模型例子 https://github.com/tensorflow/models

启动一个基础镜像

docker run -it --name centos centos:latest /bin/bash

docker run命令是启动一个docker容器

-it是指交互式模式

—name是定义容器名称

centos:latest是具体的镜像名称及镜像标签,默认会先从本地的docker镜像库,本地镜像库不存在则会从docker hub上寻找

/bin/bash是交互模式运行的命令

从0开始制造一个docker自定义镜像

运行完这段代码后会下载相关镜像并进入容器内部,运行/bin/bash

使用exit可以退出容器,使用-it交互模型启动的容器,退出后容器会变成退出状态。

使用docker ps可以查看正在运行的容器。由于刚刚的容器已经退出了,所以此时的列表为空。

可以使用docker ps -a查看所有的容器。

从0开始制造一个docker自定义镜像

可以看到刚才运行的容器也显示出来了,状态是退出。

使用docker images可以显示本地docker仓库中的所有镜像。

从0开始制造一个docker自定义镜像

由于tensorflow model需要使用juppyter来查看运行效果,因此,还需要在docker容器运行时将jupyter端口映射到外部,此外,通常还需要将宿主机的硬盘挂载到容器中,这样容器释放后数据还是会在宿主机的硬盘上,同时也可以多个docker共享数据。

让我们先删除之前的这个容器。

docker rm <容器ID>

rm后面的参数是对应的容器ID,容器ID是通过docker ps -a获得的。

如果要将相关的镜像也删除则需要使用

docker image rm <镜像ID>

让我们再重启创建一个docker容器,这次需要将jupyter的端口映射出来,同时要讲一个宿主机的目录挂载到docker中。

docker run 
	-it 
	--name centos_jupyter
	-v /Users/cloga/Documents/models/research/object_detection:/mnt 
	-p 9999:8888
	centos:latest /bin/bash

-v 是磁盘挂载,格式为宿主机的目录:docker目录

-p 是端口映射,格式为宿主机的端口:docker端口

查看一下磁盘挂载是否成功。

从0开始制造一个docker自定义镜像

mnt目录存在并且内容也是宿主机上的文件。说明磁盘挂载成功了。

配置自定义的环境

要验证端口映射是不是成功需要在docker容器中安装一个jupyter并启动。jupyter notebook的安装可以参考 服务器脚本开发效率神器jupyter notebook

yum install -y bzip2
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda install jupyter

如果你退出了刚刚的docker容器,导致容器退出,不用怕,只需要docker start,重启启动docker即可。

从0开始制造一个docker自定义镜像

dokcer ps命令可以显示容器相关的信息,包括使用哪个镜像创建,创建时间,启动的时候的命令以及端口映射等。

这种情况下,或者使用docker run -d时docker是在后台运行,此时想要进入容器可以使用如下命令:

docker exec -it <容器名称> /bin/bash

跑tensorflow的物体识别的demo

启动jupyter notebook,记录下token

jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root

在浏览器打开localhost:9999,输入token后

从0开始制造一个docker自定义镜像

说明jupyter启动成功,并且docker内的8888端口也成功映射到宿主机的9999端口

在后台运行jupyter

nohup jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root&

安装git,并把tensorflow models下载到本地

yum install git
git clone https://github.com/tensorflow/models.git

将容器导出为容器文件

将自定义容器环境导入为docker镜像

用自定义镜像创建一个容器


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

亮剑.NET

亮剑.NET

2009-3 / 55.00元

《亮剑.NET:SharePoint Server 2007开发实战》共分为8章,详细讲解了SharePoint上常见的开发任务,讲述了各种开发场景下需要了解的知识,并提供了丰富的实例。《亮剑.NET:SharePoint Server 2007开发实战》第1章为基础知识,讲述SharePoint的基本概念,基本的对象模型,代码编写注意事项,并讲解了一个集开发和部署打包为一体的项目结构的创建;第2......一起来看看 《亮剑.NET》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具