Docker镜像制作详解介绍

 更新时间:2016年10月23日 09:07:42   投稿:lqh  
这篇文章主要介绍了 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安装RabbitMQ及安装延迟插件的详细过程

    docker安装RabbitMQ及安装延迟插件的详细过程

    MQ(message queue)字面意思上来说消息队列,是一种跨进程的通信机制,用于上下游传递消息,本文给大家详细介绍docker安装RabbitMQ及安装延迟插件的过程,感兴趣的朋友一起看看吧
    2022-06-06
  • Docker简单安装与应用入门教程

    Docker简单安装与应用入门教程

    这篇文章主要介绍了Docker简单安装与应用,结合实例形式分析了Docker常见的安装、应用构建、终端访问等操作相关实现技巧与注意事项,需要的朋友可以参考下
    2018-06-06
  • Windows Docker部署Kong网关的实现步骤

    Windows Docker部署Kong网关的实现步骤

    Kong是一个轻量级、快速、灵活的云原生API网关,本文主要介绍了Windows Docker部署Kong网关的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Docker Desktop无法正常启动解决(failed to start...)

    Docker Desktop无法正常启动解决(failed to start...)

    有一段时间没有使用docker了,突然要用到结果发现docker desktop用不了了,这篇文章主要给大家介绍了关于Docker Desktop无法正常启动解决的过程,,需要的朋友可以参考下
    2023-01-01
  • Docker构建python Flask+ nginx+uwsgi容器

    Docker构建python Flask+ nginx+uwsgi容器

    这篇文章主要介绍了Docker构建python Flask+ nginx+uwsgi容器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • docker容器中登陆并操作postgresql的实现

    docker容器中登陆并操作postgresql的实现

    本文主要介绍了docker容器中登陆并操作postgresql的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • Docker 隔离与限制原理介绍

    Docker 隔离与限制原理介绍

    这篇文章主要介绍了Docker 隔离与限制原理,对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而 Namespace 技术则是用来修改进程视图的主要方法,下文相关介绍,需要的朋友可以参考一下
    2022-04-04
  • python 编写输出到csv的操作

    python 编写输出到csv的操作

    这篇文章主要介绍了python 编写输出到csv的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker建立私有仓库的过程

    docker建立私有仓库的过程

    这篇文章主要介绍了docker私有仓库的建立,在这需要注意从私有仓库下载先移出原镜像,具体操作过程跟随小编一起看看吧
    2022-01-01
  • 使用Nexus创建Docker仓库的方法步骤

    使用Nexus创建Docker仓库的方法步骤

    这篇文章主要介绍了使用Nexus创建Docker仓库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论