博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
制作Docker镜像的两种方式
阅读量:6831 次
发布时间:2019-06-26

本文共 3151 字,大约阅读时间需要 10 分钟。

此文已由作者朱笑天授权网易云社区发布。

欢迎访问,了解更多网易技术产品运营经验。

一、使用docker commit命令制作docker镜像

1. pull一个centos6.6的基础镜像,并运行一个docker container,然后在其中进行定制化(安装、配置服务等);

[root@localhost ~]# docker pull centos:6.6

Pulling repository centos
8b44529354f3: Download complete
f1b10cd84249: Download complete
Status: Downloaded newer image for centos:6.6
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 6.6 8b44529354f3 4 days ago 202.6 MB
centos centos6.6 8b44529354f3 4 days ago 202.6 MB
[root@localhost ~]# docker run -i -t centos:6.6 bash
[root@b42c1ba929a9 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var
[root@b42c1ba929a9 /]# mkdir /tmp/test.txt
[root@b42c1ba929a9 /]# exit
exit

接下来,查看一下container的改动:

[root@localhost ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b42c1ba929a9 centos:6.6 "bash" About a minute ago Exited (0) 22 seconds ago berserk_mcclintock
804a56ce8008 f1b10cd84249 "/bin/echo hello" 22 minutes ago test
[root@localhost ~]# docker diff b42c1ba929a9
C /tmp
A /tmp/test.txt
C /root
A /root/.bash_history

2. 执行docker commit命令创建一个镜像:

[root@localhost ~]# docker commit -m "new container" b42c1ba929a9 yuanhuan/newcontainer1

07b146e0be9e98c253122784c3837dd1604f7692e794f3601dad747d41901cd4
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
yuanhuan/newcontainer1 latest 07b146e0be9e 43 seconds ago 202.6 MB
centos 6.6 8b44529354f3 4 days ago 202.6 MB
centos centos6.6 8b44529354f3 4 days ago 202.6 MB

3. 登录docker,并将该镜像push到docker仓库:

[root@localhost ~]# docker login

Username: yuanhuan
Password:
Email: yuanhuan_2005@126.com
Login Succeeded
[root@localhost ~]# docker push yuanhuan/newcontainer1
The push refers to a repository [yuanhuan/newcontainer1] (len: 1)
Sending image list
Pushing repository yuanhuan/newcontainer1 (1 tags)
f1b10cd84249: Image already pushed, skipping
8b44529354f3: Image already pushed, skipping
07b146e0be9e: Image successfully pushed
Pushing tag for rev [07b146e0be9e] on {https://cdn-registry-1.docker.io/v1/repositories/yuanhuan/newcontainer1/tags/latest}

成功之后,就可以登录,查看到刚刚制作的镜像了。

二、使用dockerfile制作镜像

创建dockerfile文件:dockerfile.txt,内容如下:

FROM centos

MAINTAINER YH, http://yuanhuan.blog.51cto.com
RUN yum install passwd openssl openssh-server -y
RUN echo '123456' | passwd --stdin root
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ip addr ls eth0 | awk '{print $2}' | egrep -o '([0-9]+\.){3}[0-9]+';/usr/sbin/sshd -D

简要说明:该dockerfile的主要目的是开启sshd服务,以便可以ssh登录,并且设置了root用户的密码。

然后执行下面的命令制作一个镜像:

docker build -t centos:autosshd - < dockerfile.txt

成功之后就可以用docker images查看镜像列表了。

两种方式比较:

使用commit命令比较简单,相当于docker根据container内部执行的命令自动生成了dockerfile,并进行了build,比较适合对dockerfile不熟悉的用户;

而dockerfile的方式显得稍有点复杂,但是比较适合批量处理的场景。dockerfile一次写入,多次运行。

网易云为用户提供了无服务器容器,让企业能够快速部署业务,轻松运维服务。容器服务支持弹性伸缩、垂直扩容、灰度升级、服务发现、服务编排、错误恢复及性能监测等功能。

更多网易技术、产品、运营经验分享请。

相关文章:

【推荐】
【推荐】
【推荐】

转载地址:http://lnnkl.baihongyu.com/

你可能感兴趣的文章
这8本书,洞穿媒体的过去和未来
查看>>
Princeton Algorithms week3 Assignment
查看>>
WCF中加密数据信息
查看>>
nginx 查看接口请求时间 每个请求图片的时间或者文件的
查看>>
[好文mark] 深度学习中的注意力机制
查看>>
Visual Studio使用技巧,创建自己的代码片段
查看>>
浏览器默认标签样式总结及css初始化程序(转)
查看>>
【总结整理】传统电商与社交电商思路
查看>>
HTML5简介
查看>>
什么是Hibernate?
查看>>
Python 函数基础1 定义、分类与嵌套使用
查看>>
JS——2048(支持触屏及键盘操作)
查看>>
【sql】mysql数据库做两条数据替换的操作,不使用第三方变量
查看>>
Android给图片加文字和图片水印
查看>>
hash值的计算与转换 分类: ACM TYPE 2...
查看>>
安装vs2015
查看>>
Java Decompiler反编译工具安装
查看>>
各种数据库连接配置
查看>>
Altium_Designer-PCB中布局元器件时的翻转问题
查看>>
C++虚成员函数表vtable
查看>>