侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Docker镜像制作详解介绍

Docker  /  管理员 发布于 7年前   233

最近由于工作原因,需要对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


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

ok,经过以上步骤,doker images可以查看,新提交的doker镜像已经在里面了,

例如image name为ssh-ubuntu的新镜像。
最基础的Ubuntu容器已经没有作用了
利用

doker stop

清楚刚刚启动的最基础的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

docker 本身是有push 来上传的 index.docker.io 的,使用是用pull拉取。

但是没有条件搭建本地docker仓库或者需要将应用导出到另外一个Docker环境中,

我们可以将docker镜像导出到一个文件,具体做法如下:

 sudo docker export 

完成后我们刚才制作的容器就导出成了 docker_app.tar 文件, 

以后在其他机器部署的时候执行导入

cat docker_app.tar | sudo docker import - docker_app

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


感谢阅读,希望能帮助到大家,

谢谢大家对本站的支持!



  • 上一条:
    创建Web项目的Docker镜像实例讲解
    下一条:
    深入了解docker(docker镜像、容器、仓库的基本概念)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在docker环境中实现Laravel项目执行定时任务和消息队列流程步骤(0个评论)
    • 在MacBook下laravel项目多php版本docker开发环境配置方案(0个评论)
    • 在docker环境中部署docker部署elk架构流程步骤(1个评论)
    • docker compose跟Dockerfile的区别浅析(0个评论)
    • Ubuntu 22.04系统中安装podman流程步骤(1个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-11
    • 2020-06
    • 2021-05
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-11
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客