docker实战之Dockerfile(三层镜像的构建)

通过视频总结(http://edu.51cto.com/center/course/lesson/index?id=71317
Dockerfile 放在git上面,才叫自动化。创建docker镜像,首先得有父镜像,Dockerfile生成docker镜像,每执行一条语句,就会生成docker镜像的一层layer。
一般有基础镜像,中间件镜像,最后生成应用镜像



本文基于centos系统的前提条件:

    1. 首先 ,从git.oschina网上下载好相应的源码进行练习。源码为搜索docker-training即可得到。
    1. 使用putty进行远程连接Linux系统,并下载好docker。(Linux系统从阿里云上申请可得到。)
    1. 需要在Linux系统上下载好git,才能把源代码拉进Linux系统。
    1. 需要使用阿里云加速镜像(centos系统)。


目的:需要使用centos镜像生成中间镜像,再通过centos镜像生成最后的应用镜像。(都是用Dockerfile构成镜像)



步骤:
第一步:

yum install git
(前提是docker的版本是利用centos系统下载安装好的,这条语句需要在centos系统下使用,传送代码到docker中去)
git clone https://gitee.com/dockerf/docker-training.git
(用于将代码clone到docker中去)

ls
cd docker-training
ls
cd centos7
(进入centos镜像内)
ls
vim Dockerfile
(查看Dockerfile的信息)
[[email protected] centos7]# docker build -t csphere/centos:7.1 .
(Docker build是docker 使用-dockerfile创建csphere/centos镜像,本地目录创建镜像,-t 镜像名称,后面有 .说明,基于本目录)
[[email protected]]# docker run -d -p 2222:22 --name base csphere/centos
(创建容器不在该目录下,在本身的目录)
docker ps -a
(查看创建的所有容器)

——以上步骤为基于docker-training源代码里的Dockerfile文件的父镜像创建出自己命名的 csphere/centos:7.1 镜像,并在该镜像下生成基于该镜像的容器base



第二步:
在docker-training文件下的php-fpm文件下创建镜像和容器
(Dockerfile是基于csphere/centos:7.1创建)
docker build -t csphere/php-fpm:5.4 .(在php-fpm目录下)
可能会如下错误:
Rpmdb checksum is invalid: dCDPT(pkg checksums): kmod.x86_64 0:20-15.el7_4.7 – u
(rpm出现数据损坏——Dockerfile中修改)
解决方案:在每个yum前面加上rpm --rebuilddb &&
docker images
docker run -d -p 8080:80 --name website csphere/php-fpm:5.4
docker ps -a
ifconfig eth1
(查看公网ip)
浏览器输入:公网ip地址:8080/info.php解析php代码
docker exec -it website /bin/bash(查看Nginx和php是否启动)
supervisorctl(查看容器内的进程)
exit退出容器
docker ps查看该容器还是处于运行状态



第三步:
在docker-training文件下的mysql文件下构建镜像
(基于csphere/centos:7.1构建)
docker build -t csphere/mysql:5.5 .
可能会如下错误:
Rpmdb checksum is invalid: dCDPT(pkg checksums): kmod.x86_64 0:20-15.el7_4.7 – u
(rpm出现数据损坏——Dockerfile中修改)
解决方案:在每个yum前面加上rpm --rebuilddb &&
docker images
docker run -d -p 3306:3306 --name dbserver csphere/mysql:5.5
docker ps
docker exec -it dbserver /bin/bash
mysql
show databases;
exit退出容器
-v是挂在volume参数
docker rm -f dbserver(删除没有挂在-v参数的容器)
docker run -d -p 3306:3306 --name newdb -v /var/lib/docker/vfs/dir/mydata(数组基):/var/lib/mysql(容器) csphere/mysql:5.5
docker exec -it newdb /bin/bash
mysql
show databases;
create database mydb;
exit
创建的/var/lib/docker/vfs/dir/mydata目录有没有这个mydb这个目录
docker rm -f newdb
创建的/var/lib/docker/vfs/dir/mydata目录有没有这个mydb这个目录



Volume通过数组机的文件目录映射容器的文件目录,可以把容器删掉,数据库还在

新建的容器拥有之前的数据库
docker run -d -p --name newdb1 -v /var/lib/docker/vfs/dir/mydata(数组基):/var/lib/mysql(容器) csphere/mysql:5.5
docker exec -it newbd1 /bin/bash
mysql
show databases;



第四步:构建动态网站wordpress(公司的一个网站或php代码)
docker-training文件下的wordpress
(Dockerfile是基于php-fpm)
docker build -t csphere/wordpress:4.2 ./docker-training/wordpress
docker images
ifconfig eth0
(查看当前内部ip地址)
build run -d -p 80:80 --name wordpress -r WORDPRESS_DB_HOST=内网ip -e WORDPRESS_DB_USER=admin -e WORDPRESS_DB_PASSWORD=csphere2015 csphere/wordpress:4.2
(配置连接数据库的参数)
docker ps
ifconfig eth1
(公网ip地址)
浏览器输入:公网ip地址,可以加载到wordpress页面

原文地址:http://blog.51cto.com/12602793/2112991

时间: 2024-08-26 01:47:57

docker实战之Dockerfile(三层镜像的构建)的相关文章

Docker 实战—使用 Dockerfile 构建镜像

GitHub Page:http://blog.cloudli.top/posts/Docker实战-使用-Dockerfile-构建镜像/ Dockerfile 指令详解请访问:https://www.cnblogs.com/cloudfloating/p/11737447.html 使用 Alpine Linux 作为基础镜像 Alpine 是一个非常轻量的 Linux 镜像,他只有大约 5MB 的大小,基于它构建镜像,可以大大减少镜像的体积. Alpine 的 Docker Hub 页面:

docker技术剖析--dockerfile and registry(构建容器和私有仓库)

防伪码:梅须逊雪三分白,雪却输梅一段香 docker技术剖析--dockerfile and registry(构建容器和私有仓库) 一.根据Dockerfile构建出一个容器 1.Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile.

docker 实战---安装一个基础镜像 (一)

泡了几天官网,对docker有了一点了解.准备着手搭建一个公司的开发测试环境,包括java.python. 环境介绍 首先说明一下我的环境 2台物理服务器(后面简称主机) 主机A的配置如下: [[email protected] ~]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:p

Docker基础-使用Dockerfile创建镜像

1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command ] .. # Base image to use, this nust be set as the first line FROM ubu

[转]Docker基础-使用Dockerfile创建镜像

本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command ] .. # Base imag

使用Dockerfile为SpringBoot应用构建Docker镜像

使用Dockerfile为SpringBoot应用构建Docker镜像 原创: 梦想de星空 macrozheng 6月17日 上次写过一篇使用Maven插件构建Docker镜像 ,讲述了通过docker-maven-plugin来构建docker镜像的方式,此种方式需要依赖自建的Registry镜像仓库.本文将讲述另一种方式,使用Dockerfile来构建docker镜像,此种方式不需要依赖自建的镜像仓库,只需要应用的jar包和一个Dockerfile文件即可. Dockerfile常用指令

Docker学习总结(1)——Docker实战之入门以及Dockerfile(一)

一.Docker是什么? 首先Docker是软件工业上的集装箱技术 回顾,在没有集装箱出现以前,传统运输行业中,会存在这些问题: 在运输过程中,货物损坏 装卸.运输货物,效率低下 运输手续繁多及运输环节多 劳动强度大,及船舶周转慢 在集装箱出现后,完全改变了这种状况,是由于集装箱: 规则标准化,大大减少了包装费用 大大提升了货物装卸效率.及运输效率 不同种运输工具之间转换更容易 所以,集装箱出现是传统行业中的一次重大变革 传统软件行业中存在的问题 软件更新发布低效 业务无法敏捷 环境一致性,难于

Docker实战(五)编写Dockerfile

一.创建Dockerfile文件 首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件: 二.Dockerfile 基本框架 Dockerfile一般包含下面几个部分: 基础镜像:以哪个镜像作为基础进行制作,用法是FROM 基础镜像名称 维护者信息:需要写下该Dockerfile编写人的姓名或邮箱,用法是MANITAINER 名字/邮箱 镜像操作命令:对基础镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN 命令

docker常用命令、镜像命令、容器命令、数据卷,使用dockerFile创建镜像,dockefile的语法规则。

一.docker常用命令? 1. 常用帮助命令 1.1 docker的信息以及版本号 /* docker info 查看docker的信息 images2 docker本身就是一个镜像. docker version 查看docker的版本号 */ 1.2 docker的启动,停止,重启,查看状态. // service docker start/stop/restart/status 二.镜像命令? 1. 列举出所有的镜像(本地镜像) /* docker images 所拥有的参数: dock