设为首页 收藏本站
查看: 824|回复: 0

[经验分享] Docker镜像构建

[复制链接]

尚未签到

发表于 2018-5-29 06:19:37 | 显示全部楼层 |阅读模式
一、docker镜像构建
1、环境准备
环境准备
IP主机名操作系统
192.168.56.11linux-node1centos7
注意:我这里使用的是centos7,如果是使用centos5或者centos6,需要升级操作系统内核,否则Docker的许多新功能都无法使用2、构建方式
- 手动构建
- 自动构建,(通过Dockerfile方式)3、删除原有镜像
为了防止干扰,将以前创建的容器全部删掉。
切记
切记
切记:生产环境慎用。
否则真的会发生  从删除到跑路。。。获取容器ID
[root@linux-node1 ~]# docker ps -a -q #获取所有容器ID
4c37ade49a7a
1a0ec7a5b1a5
fd11374b2a58
cbc91bef8ea7
1b1113fe3b8e
c4c9b4947e61
17df7e2a5667
4d5a21ea94e0
d6e7283abf0a
7ada4ff8323a
c627741a7dc1
9476c8be9125然后停掉所有的容器
[root@linux-node1 ~]# docker kill $(docker ps -a -q)
4c37ade49a7a
1b1113fe3b8e
c4c9b4947e61
17df7e2a5667
c627741a7dc1
Failed to kill container (1a0ec7a5b1a5): Error response from daemon: Cannot kill container 1a0ec7a5b1a5: Container 1a0ec7a5b1a5d931f2f887ee2fb3680d9d56b109be37044414346269f2a0bf72 is not running
Failed to kill container (fd11374b2a58): Error response from daemon: Cannot kill container fd11374b2a58: Container fd11374b2a58741542c931a4eb661c6a8f3a230a13057d28a96e1cdb6c898530 is not running
Failed to kill container (cbc91bef8ea7): Error response from daemon: Cannot kill container cbc91bef8ea7: Container cbc91bef8ea779668a696046c1aa905ba2dc65e64ed5b403633b3284e00ec126 is not running
Failed to kill container (4d5a21ea94e0): Error response from daemon: Cannot kill container 4d5a21ea94e0: Container 4d5a21ea94e0df102198812fd899d8293198a2376dd5d952642113b76448ca65 is not running
Failed to kill container (d6e7283abf0a): Error response from daemon: Cannot kill container d6e7283abf0a: Container d6e7283abf0a7e423576df645ac36c35a691153d06d63439faf72d3ce3037529 is not running
Failed to kill container (7ada4ff8323a): Error response from daemon: Cannot kill container 7ada4ff8323a: Container 7ada4ff8323ad67e33fa4c52cd585a46cf9e62733505a54a7a7eb13cf33c0873 is not running
Failed to kill container (9476c8be9125): Error response from daemon: Cannot kill container 9476c8be9125: Container 9476c8be91256e20da7f567f5a261f3f754b736ab6402c714180db713e3d346b is not running删除所有容器
[root@linux-node1 ~]# docker rm $(docker ps -a -q)
4c37ade49a7a
1a0ec7a5b1a5
fd11374b2a58
cbc91bef8ea7
1b1113fe3b8e
c4c9b4947e61
17df7e2a5667
4d5a21ea94e0
d6e7283abf0a
7ada4ff8323a
c627741a7dc1
9476c8be9125二、创建镜像
1、手动创建镜像
手动创建一个Nginx的镜像
root@linux-node1 ~]# docker run --name mynginx -it centos #运行一个docker容器
[root@312bc2c902da /]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm   #配置epel源
Retrieving http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
warning: /var/tmp/rpm-tmp.QKhuVj: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:epel-release-7-8                 ################################# [100%]
[root@312bc2c902da /]# yum install -y nginx    #通过方式安装nginx
编辑nginx配置文件,让它前台运行
[root@312bc2c902da nginx]# cat /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/
daemon off;       #是否以守护进程的方式运行nginx,守护进程是指脱离终端并且在后头运行的进程,关闭守护进程执行的方式可以让我们方便调试nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;将镜像提交到本地
[root@linux-node1 ~]# docker commit -m "my nginx" 312bc2c902da onepiece/mynginx:v1
sha256:273e37f59d87495c481ef8c23d32b33723103799aeb1194c1c632703fc70ad9f
提交到本地
-m是描述,后面跟容器ID ,onepiece是一个仓库名称查看镜像
[root@linux-node1 ~]# docker images     #可以看到我们刚才创建的镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
onepiece/mynginx    v1                  273e37f59d87        4 minutes ago       261.9 MB创建端口映射
[root@linux-node1 ~]# docker run --name mynginxv1 -d -p 81:80 onepiece/mynginx:v1 nginx
3213254d75a9ab740c180cca295b427a408f8a50881cf844dfcc3f904751e53b
[root@linux-node1 ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                NAMES
3213254d75a9        onepiece/mynginx:v1   "nginx"             12 seconds ago      Up 11 seconds       0.0.0.0:81->80/tcp   mynginxv1
#使用之前创建的脚本登录到容器
[root@linux-node1 ~]# ./docker_in.sh mynginxv1
[root@3213254d75a9 /]# cd /var/log/nginx/
[root@3213254d75a9 nginx]# ls
access.log  error.log
[root@3213254d75a9 nginx]# cat access.log     #查看容器的访问日志
192.168.56.1 - - [19/Sep/2016:09:02:17 +0000] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-"
192.168.56.1 - - [19/Sep/2016:09:02:17 +0000] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://192.168.56.11:81/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-"2、基于Dockerfile创建镜像
Dockerfile:是一种文本格式
首先我们先规划一下Dockerfile的所在目录,例如/opt/dockerfile/nginx
注意:D必须是大写。当使用Dockerfile构建镜像时,它会在当前目录下去读一个名称为Dockerfile的文件。
[root@linux-node1 /opt/dockerfile/nginx]# cat Dockerfile
#base images
FROM centos          #除了注释的第一行,必须是FROM centos,用于设置基础镜像
#maintainer
MAINTAINER JackyWang  #维护信息
#Commands
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y nginx && yum clean all         #RUN作为关键字,后面接要运行的命令
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ADD index.html /usr/share/nginx/html/index.html  #ADD是关键字, 添加一个首页文件
#index.html是放在当前目录下
EXPOSE 80              #对外开放的是80端口
CMD ["nginx"]           #镜像启动时,启动的是nginx命令写好Dockerfile后,我们开始构建
[root@linux-node1 /opt/dockerfile/nginx]# docker build -t mynginx:v2 .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM centos
---> 980e0e4c79ec
Step 2 : MAINTAINER JackyWang
---> Using cache
---> 33f84558f81d
Step 3 : RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
---> Using cache
---> 21a39298e95b
Step 4 : RUN yum install -y nginx && yum clean all
---> Using cache
---> c16994d2c471
Step 5 : RUN echo "daemon off;" >> /etc/nginx/nginx.conf
---> Using cache
---> 39308efba34d
Step 6 : ADD index.html /usr/share/nginx/html/index.html
---> Using cache
---> 86464cc2b1d3
Step 7 : EXPOSE 80
---> Using cache
---> 89a262db6b6c
Step 8 : CMD nginx
---> Using cache
---> f735be220129
Successfully built f735be220129
从记录信息中我们可以看到docker每一步都做了什么构建后运行容器,可以正常运行。
[root@linux-node1 /opt/dockerfile/nginx]# docker run --name mynginxv2 -d -p 82:80 mynginx:v2
6ec8783771d6aa06ec0c8628c9fa643c47efcca8b698ab5f6a4dade5c3cb335d  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482310-1-1.html 上篇帖子: docker网络访问 下篇帖子: systemd在docker容器中使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表