从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镜像

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


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

查看所有标签

猜你喜欢:

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

雷军

雷军

蔡艳鹏 / 2012-12 / 29.80元

《雷军:人因梦想而伟大》内容简介:人生充满着期待,梦想连接着未来。雷军一直有个梦,就是建一个受世人尊敬的企业。他不仅建立了属于自己的受人尊敬的企业,也在帮助别人实现心中的梦想。雷军可以说是创业者、职场人奋斗的榜样,从他在金山的不折不挠,在投资界的百投百中,到小米的成功……无不充满传奇,让无数人争相效仿。一起来看看 《雷军》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

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

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器