Docker容器(二)——镜像制作
制作Docker镜像有两种方式:第一种、docker commit,保存容器(Container)的当前状态到镜像后,然后生成对应的image;第二种、docker build,使用Dockerfile文件自动化制作镜像。
(1).docker commit
启动一个实例,安装apache
[root@youxi1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 67fa590cfc1c 3 weeks ago 202MB
hub.c.163.com/library/tomcat latest 72d2be374029 2 years ago 292MB
[root@youxi1 ~]# docker run -it centos:latest /bin/bash
[root@985ef7e0c4ca /]# yum -y install httpd
[root@985ef7e0c4ca /]# exit
exit
根据容器当前状态制作一个镜像,语法docker commit <容器ID> [仓库]:[标签]
[root@youxi1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
985ef7e0c4ca centos:latest "/bin/bash" 4 minutes ago Exited (0) 2 minutes ago sharp_kare
9a81af9b4134 centos:latest "/bin/bash" 2 days ago Exited (0) 2 days ago pensive_dijkstra
3ecc9bafd429 centos:latest "/bin/bash" 2 days ago Exited (0) 2 days ago sleepy_wilbur
[root@youxi1 ~]# docker commit 985ef7e0c4ca centos:httpd
sha256:bdd371e6f1cf035bd501c09b28a2b2827900973a0defa9e35eadcd2f2f55e5e4
[root@youxi1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos httpd bdd371e6f1cf 14 seconds ago 346MB
centos latest 67fa590cfc1c 3 weeks ago 202MB
hub.c.163.com/library/tomcat latest 72d2be374029 2 years ago 292MB
启动新创建的镜像,查看是否存在httpd服务
[root@youxi1 ~]# docker run -it centos:httpd /bin/bash
[root@34ac01c03fe3 /]# rpm -qa httpd //可以看到是存在的
httpd-2.4.6-89.el7.centos.1.x86_64
(2).docker build
使用docker build创建镜像时,需要使用Dockerfile文件自动化制作镜像。Dockerfile类似源码编译./configure后产生的Makefile。
创建工作目录,制作Dockerfile
[root@youxi1 ~]# mkdir /docker-build
[root@youxi1 ~]# vim /docker-build/Dockerfile
FROM centos:latest #以哪个镜像为基础
MAINTAINER <youxi@163.com> #镜像创建者
RUN yum -y install httpd #运行安装httpd命令
ADD start.sh /usr/local/bin/start.sh #将本地文件拷贝到镜像中,权限为0755(?),uid和gid为0
ADD index.html /var/www/html/index.html
CMD /usr/local/bin/start.sh #实例启动后执行的命令,一般跟需要开机启动的服务或脚本
创建start.sh和index.html
[root@youxi1 ~]# echo "/usr/sbin/httpd -DFOREGROUND" > /docker-build/start.sh
[root@youxi1 ~]# chmod +x /docker-build/start.sh
[root@youxi1 ~]# echo "docker image build test" > /docker-build/index.html
删除已有的centos:httpd
[root@youxi1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
34ac01c03fe3 centos:httpd "/bin/bash" About an hour ago Exited (0) 43 minutes ago gifted_cerf
985ef7e0c4ca centos:latest "/bin/bash" About an hour ago Exited (0) About an hour ago sharp_kare
9a81af9b4134 centos:latest "/bin/bash" 2 days ago Exited (0) 2 days ago pensive_dijkstra
3ecc9bafd429 centos:latest "/bin/bash" 2 days ago Exited (0) 2 days ago sleepy_wilbur
[root@youxi1 ~]# docker stop 34ac01c03fe3
34ac01c03fe3
[root@youxi1 ~]# docker rm 34ac01c03fe3
34ac01c03fe3
[root@youxi1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
985ef7e0c4ca centos:latest "/bin/bash" About an hour ago Exited (0) About an hour ago sharp_kare
9a81af9b4134 centos:latest "/bin/bash" 2 days ago Exited (0) 2 days ago pensive_dijkstra
3ecc9bafd429 centos:latest "/bin/bash" 2 days ago Exited (0) 2 days ago
[root@youxi1 ~]# docker rmi centos:httpd
Untagged: centos:httpd
Deleted: sha256:bdd371e6f1cf035bd501c09b28a2b2827900973a0defa9e35eadcd2f2f55e5e4
Deleted: sha256:e5f250b390d99269c53a6150c776f5af4e74b965f4c86977fea7582b9e624870
[root@youxi1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 67fa590cfc1c 3 weeks ago 202MB
hub.c.163.com/library/tomcat latest 72d2be374029 2 years ago 292MB
使用build创建新的镜像,语法docker build -t [仓库名]:[标签] [Dockerfile文件路径]
[root@youxi1 ~]# docker build -t centos:httpd /docker-build/
[root@youxi1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos httpd 565f0e4e1ef3 About a minute ago 346MB
centos latest 67fa590cfc1c 3 weeks ago 202MB
hub.c.163.com/library/tomcat latest 72d2be374029 2 years ago 292MB
(3).Docker镜像发布
1)发布到本地
语法:docker save -o [tar包名] [仓库名]:[标签]
[root@youxi1 ~]# docker save -o docker.id-centos-httpd-image.tar centos:httpd
[root@youxi1 ~]# ll -h
总用量 346M
-rw-------. 1 root root 1.6K 5月 14 09:20 anaconda-ks.cfg
-rw------- 1 root root 339M 9月 14 15:26 docker.id-centos-httpd-image.tar
2)发布到网上
一般先到https://hub.docker.com/(DockerHub)上注册一个账号,并创建一个存储库
使用命令登录
[root@youxi1 ~]# docker login -u [用户名] -p [密码]
WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
上传镜像。注意:上传前需要修改仓库名,否则上传有问题。
[root@youxi1 ~]# docker tag centos:httpd ghhh4512/centos:httpd //这里的ghhh4512是我的Docker用户名,centos是建立的存储库
[root@youxi1 ~]# docker push ghhh4512/centos:httpd
The push refers to repository [docker.io/ghhh4512/centos]
7873e44b6044: Pushed
0e86f20c1056: Pushed
b3e0fc83922e: Pushed
877b494a9f30: Pushed
httpd: digest: sha256:464ffb58cbc2334a936bea7081db41b257afb5b21dfcce6dd27863dc9b777855 size: 1155
Docker容器(二)——镜像制作的更多相关文章
- Docker系列-(2) 镜像制作与发布
上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...
- Docker Java程序镜像制作
Docker Java程序镜像制作 制作前的准备 jre:不需要完整的jdk,jre即可,到Oracle进行下载即可,下载链接,根据自己的情况进行选择,这里选择jre-8u221-linux-x64. ...
- Docker容器 关于镜像构建的安全问题
写在前面 确保容器中服务与应用安全是容器化演进的关键点.容器安全涉及到应用开发与维护的整个生命周期,本文主要从镜像构建的视角来看docker容器的一些安全问题及应对措施. 一.权限管理 1.避免以容器 ...
- 理解docker容器和镜像(layer,ufs)和docker命令解释
博客好文1:http://blog.csdn.net/x931100537/article/details/49633107(理解docker容器和镜像,理解简单,从原理入手,什么是layer,什么是 ...
- [转]图解Docker容器和镜像
本文转自:https://www.cnblogs.com/wangqiaomei/p/5818636.html 图解Docker容器和镜像 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器 ...
- 图解Docker容器和镜像
图解Docker容器和镜像 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别. 当我对Docke ...
- 【原创】深入理解Docker容器和镜像 -- 分析了docker的命令含义
10张图带你深入理解Docker容器和镜像 镜像(Image)就是一堆只读层(read-only layer)的统一视角 要点:容器 = 镜像 + 读写层.并且容器的定义并没有提及是否要运行容器. 一 ...
- Docker容器和镜像的区别
docker容器和镜像区别 转自 https://www.cnblogs.com/bethal/p/5942369.html 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(conta ...
- Docker镜像管理基础与基于容器的镜像制作示例
一.Docker镜像 Docker镜像是启动Docker容器的一个非常重要的组件.Docker各组件之间的关系如图: Docker镜像含有启动容器所需要的文件系统及其内容,因此Docker镜像用于创建 ...
- Docker2 docker commit方法镜像制作
一.前期准备 1.下载一个centos镜像,进入容器,安装wget docker pull centos docker run -it centos bash [root@web1 ~]# docke ...
随机推荐
- 使用C#的HttpWebRequest模拟登陆访问人人网(转)
无论使用任何语言做模拟登陆或者抓取访问页面,无外乎以下思路:第一 启用一个web访问会话方法或者实例化一个web访问类,如.net中的HttpWebRequest:第二 模拟POST或者GET方式提交 ...
- LA 3704细胞自动机——循环矩阵&&矩阵快速幂
题目 一个细胞自动机包含 $n$ 个格子,每个格子的取值为 $0 \sim m-1$.给定距离 $d$,则每次操作是将每个格子的值变为到它的距离不超过 $d$ 的所有格子的在操作之前的值的和除以 $m ...
- Hdfs的HA高可用
1.Hdfs的HA高可用:保证Hdfs高可用,其实就是保证namenode的高可用,保证namenode的高可用的机制有两个,editlog共享机制+ZKFC.ZKFC就是ZookeeperFailO ...
- codepush安装
https://github.com/lisong/code-push-server/blob/master/docs/README.md =====> 安装mysql下载mysql yum r ...
- (尚014)Vue过渡与动画
操作元素时有个过渡或动画的效果(渐变和移动的效果和放大缩小的效果) 过渡:trasition 动画:animation 1.vue动画的理解 1)操作css的trasition或animation(它 ...
- 数码管动态显示——74HC04
1.电路设计: p0实现段选,p2实现位选,74hc04是反相器,有反向和放大的双重作用. 2.程序设计: #include<reg52.h> code unsigned char sev ...
- 自行撰写Grasshopper电池
Grasshopper目前作为参数化设计是非常常用的工具,但是人们会经常碰到它提供的电池不能满足自己设计方案需求的情况,所以就需要自己创作电池,而最简单的一种方法就是自己写. 工具: Visual S ...
- 【一起来烧脑】一步学会TypeScript入门
[外链图片转存失败(img-rmJXMGFs-1563388353181)(https://upload-images.jianshu.io/upload_images/11158618-dd813e ...
- SpringBoot配置虚拟化路径用于图片的展示
前言:springboot默认可以访问resources下的static文件夹下的静态资源,我们一般将图片指定上传到static下的某个文件夹,例如images,开发阶段可以使用,但是当项目打成jar ...
- 【Python 代码】CS231n中Softmax线性分类器、非线性分类器对比举例(含python绘图显示结果)
1 #CS231n中线性.非线性分类器举例(Softmax) #注意其中反向传播的计算 # -*- coding: utf-8 -*- import numpy as np import matplo ...