Docker镜像制作详解介绍_docker

最近由于工作原因,需要对Docker镜像进行制作,这里记录下,也许对大家也有一定帮助!    

写在前面:本文docker镜像制作方法更适用于基于已有docker镜像一次性修改。

推荐用Docker File制作docker镜像。

原理是一样的,但是用docker file制作docker镜像能够记录下操作步骤,方便以后更改或者镜像丢失后重新创建。
本文以Ubuntu为基础镜像,预启动一个django项目和ssh服务,制作一个新的镜像。

1、基础镜像

我选用的是从Docker官网下载的ubuntu镜像。

docker run ubuntu

或者

docker pull ubuntu

2、安装ssh服务

docker run -i -t ubuntu /bin/bash #创建一个容器,-t是临时终端。

进入ubuntu后,安装openssh

apt-get install openssh-server #安装ssh

#需要修改/etc/sshd/sshd_config文件中内容

PermitRootLogin yes

UsePAM no

修改ubuntu的root用户密码,以便以后ssh登陆:

sudo passwd root

3、制作新的镜像

到此,我们需要把这个带有ssh服务的容器提交成一个镜像,方便以后在这个基础上各种改造:

docker commit <container id> <image name>

4、基于现有ssh服务的Ubuntu镜像,加入django项目,并设置随容器自启动

ok,经过以上步骤,doker images可以查看,新提交的doker镜像已经在里面了,例如image name为ssh-ubuntu的新镜像。
最基础的Ubuntu容器已经没有作用了
利用

doker stop <container id>
doker rm <Container id>

清楚刚刚启动的最基础的Ubuntu容器

下面,要基于我们新的ssh-ubuntu进行个性化定制,首先,要将这个镜像运行起来

docker run -d -p 5001:22 ssh-ubuntu /usr/sbin/sshd -D

(-p为端口映射 容器中22端口应射程主机5001端口  ||   /usr/sbin/sshd -D是指定容器启动后要运行的command,本处是启动ssh服务)

容器启动后,我们可以通过ssh的方式,登陆到容器中

ssh root@doker0_ip -p 5001(22映射端口)

进入到容器后,就可以进行下一步个性化定制了。例如我要把我的django项目放到镜像中,并随着容器启动而启动。

(1)把django项目拷贝到容器中,用scp命令即可。

(2)比较通用的开机启动进程方法:

安装supervisor!

apt-get update && apt-get install supervisor

(如果apt-get install找不到包,先update一下)

然后编辑配置文件,vi /etc/supervisord.conf

[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D

[program:tomcat]
command=python ~/manager.py runserver 0.0.0.0:9999

然后保存退出即可。

用3小节方法重新制作新的镜像,清除当前容器即可。

5、运行新镜像

docker run -d -p 5001:22 -p 5000:9999 <image-name> /etc/supervisord
此时,可以访问主机5000端口,看看能不能访问到容器里面的django项目。
镜像制作大体过程至此完成。

*****************************************************************************************************************************************************

docker 本身是有push 来上传的 index.docker.io 的,使用是用pull拉取。但是没有条件搭建本地docker仓库或者需要将应用导出到另外一个Docker环境中,我们可以将docker镜像导出到一个文件,具体做法如下:

 sudo docker export <容器id>  >  docker_app.tar

完成后我们刚才制作的容器就导出成了 docker_app.tar 文件, 以后在其他机器部署的时候执行导入

cat docker_app.tar | sudo docker import - docker_app

管道后面的 docker_app 为导入后image命名,自己指定

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索docker
镜像制作
docker 镜像制作、docker制作tomcat镜像、docker 基础镜像制作、docker制作centos镜像、如何制作docker镜像,以便于您获取更多的相关知识。

时间: 2024-12-11 09:43:25

Docker镜像制作详解介绍_docker的相关文章

docker 镜像加速CentOS7详细介绍_docker

前言 在Docker Hub官网上注册帐号,即可下载使用仓库里的全部的docker镜像.而因为网络原因,国内的开发者没办法流畅的下载镜像,经常会出现下载中断的错误.解决方法就是使用国内的容器Hub加速服务,本质就是更改pull优先级较高的服务器为国内的站点. 国内docker镜像加速站 阿里云 DaoCloud 灵雀云 系统环境 操作系统: CentOS 7 docker版本: 1.9.1 DaoCloud加速 DaoCloud现在是提供一个一键脚本配置registry-mirror,然而对于上

Docker基础命令详解_docker

docker基本概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上. Docker是一个重新定义了程序开发测试.交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是docker提出的"Build once,Run anywhere" 创建镜像 创建镜像的方法有三种: 基于已有的容器创建 基于本地模板导入 基于dockerfile 基于已有的容器创建 主要使用docker

你真的了解Docker吗?——Docker插件机制详解

云栖TechDay活动第十八期中,阿里云容器服务团队的核心成员陈萌辉带来了题为<Docker插件机制详解>的分享,分享中,他结合阿里云容器服务实践介绍了Docker插件的基本原理.实现方法以及插件机制未来的演进. 幻灯片下载地址:https://yq.aliyun.com/attachment/download/?filename=bdefe06ba7a14d7604af5a63a4bcc4f3.pdf 以下为现场分享观点整理. 为什么需要Docker插件?   Docker之所以这么火并且有

谁用光了磁盘?Docker System命令详解

本文讲的是谁用光了磁盘?Docker System命令详解, 为了保证可读性,本文采用意译而非直译. 用了一段时间Docker后,会发现它占用了不少硬盘空间.还好Docker 1.13引入了解决方法,它提供了简单的命令来查看/清理Docker使用的磁盘空间. 本文通过一个简单的示例,可以证明Docker能够很快地将磁盘占满.该示例通过play-with-docker.com运行.点击Add new instance即可创建新的实例,该实例安装了最新版的Docker 17.03.这篇博客主要讨论磁

C/S考试系统程序制作详解

大型作业答辩:C/S考试系统程序制作详解 一.服务器程序 采用了WinSocket32的完成端口模型(I/O completion ports) WIN32多线程技术 ODBC APIS 进行数据库操作 二.客户端程序 用Win32 API函数构造主窗体和界面元素,如图一所示: 图一 程序组织结构 服务器程序详解 一.完全端口模型(I/O completion ports)是迄今为止最为复杂的一种I/O模型,假如一个程序需要管理为数众多的套接字,那么采用这种模型往往可以达到最佳的系统性能,不幸的

WPS演示倒计时制作详解之滚动条

倒计时制作详解(一)滚动条 倒计时在教学和演示中应用比较广范,制作方法各有特点,我将利用图文教程的方式,详细展示常见倒计时的几种做法,这是其中做法之一. 打开wps视频模板,在第一页第一个文本框中修改题目"倒计时",在第二个文本框中题目修改为"制作人:北方",字体微软雅黑,字号等项默认. 图- 1 在幻灯片任务窗格中,单击第一页后面,出现一条横向闪动的细线,通过按键盘上的回车键,新建一张幻灯片.在其中第一个文本框中修改题目"倒计时一",设置对齐方

Docker volume使用详解及实例_docker

Docker volume使用     一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享.数据卷可以在多个容器之间共享.       创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然你也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后,你就可以在其他容器中通过--volumes-froms参数来挂载该数据卷了,而不管该容器是否运行.你也可以在Dockerfile中通过VOLUME指令来增加一个或

docker中安装quagga详细介绍_docker

openstack中的虚拟路由器项目占用资源太多,需要将虚拟路由器迁移到Docker中,觉得首先要解决几个问题.      1.如何集成docker到openstack中,这个问题openstack官方给了三种方案,基于nova,heat,和单独的容器项目      2.集成docker后的容器管理编排,决定采用K8S      3.是否可以将quagga装到docker中,打包成quagga镜像以供后边二次开发自动配置程序. 今天尝试在docker中安装quagga,并自动开启zebra,ri

DreamWeaver表格妙用-线框制作详解(4)

dreamweaver|详解 3> "粗"线边框的制作 有了上面介绍细线边框的制作基础,相信大家理解粗线边框就简单多了.粗线边框就是一种边框特别粗的效果,他往往配合其他网页元素来完成指定效果的. 在细线边框制作中,我们提到单纯将"Border"设定为1达不到"细化"要求,那么粗度应该没有问题了吧,很好,因此粗线边框的制作就有了两种方法. 方法一:利用Border来实现 选中已经插入的表格,在属性板中将"Border"值设