通过dockerfile 创建镜像以及更新镜像
制作Docker镜像1 安装 DockerDocker 要求CentOS 系统的内核版本高于 3.10 。#查看当前系统的版本uname -r #安装 Docker 软件包和依赖包yum -y install docker 安装完成 #从远程仓库拉取 centos:7 镜像docker pull centos:7 #查看
制作Docker镜像
1 安装 Docker
Docker 要求CentOS 系统的内核版本高于 3.10 。
#查看当前系统的版本
uname -r
#安装 Docker 软件包和依赖包
yum -y install docker
安装完成
#从远程仓库拉取 centos:7 镜像
docker pull centos:7
#查看本地镜像
docker images
docker: Docker 的二进制执行文件。
run:与前面的 docker 组合来运行一个容器。
centos:7 指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
安装过程挺顺利,顺利的过程给后面埋下众多雷。确实是这样,原因就是上述命令安装的docker版本比较低,有好多命令不支持,因此放弃此次安装,改用安装比较新的docker。
安装最新版的docker
环境:centos 7 安装的制作docker镜像的时候会出现其他问题,因此需要用Ubuntu 制作docker镜像。Ubuntu 16.04
#卸载老版本的docker以及其依赖
sudo yum remove docker docker-commoncontainer-selinuxdocker-selinuxdocker-engine
#安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源
sudo yum install -yyum-utils
#添加yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#更新yum索引
sudo yum makecache fast
#安装 docker-ce
sudo yum install docker-ce
#启动 docker
sudo systemctl start docker
#验证是否安装成功
sudo docker info
检测新安装的版本
安装过程完毕!!!!!!!!!!!!!!!!!!!!!
通过dockerfile 创建自己的镜像
可以通过dockerfile为自己定制个性化的镜像,比如在镜像中安装 mysql、tomcat、nginx、jdk等等。也可以在网上直接拉去别人已经创建好的镜像,在此值展现如何通过 dockerfile 创建已安装tomcat、nginx和jdk 的镜像。
步骤一:编写 dockerfile
dockerfile 用来创建一个自定义的image,包含了用户指定的软件依赖等,每一个命令都会在前一个命令上面形成一个新层,因此,当有多条命令可以写成一行命令时,最好写成一条命令。(即 RUN 后面写的命令)
方法一:dockerfile 的写法如下
# 引入Ubuntu 镜像
FROM ubuntu:trusty
RUN mkdir /usr/local/java
RUN mkdir /usr/local/tomcat
#安装 jdk
ADD jdk-8u144-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_144
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib
#安装 tomcat
ADD /apache-tomcat-8.5.24.tar.gz /usr/local/tomcat/
ENV TOMCAT_HOME=/usr/local/tomcat/apache-tomcat-8.5.24
ENV PATH=$TOMCAT_HOME/bin:$PATH
RUN chmod +x /usr/local/tomcat/apache-tomcat-8.5.24/bin/*.sh
#安装 nginx
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:nginx/stable
RUN apt-get update
RUN apt-get install -y nginx
#向外端暴露 8080 和 80 端口
EXPOSE 8080 80
#启动tomcat 和nginx
ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.5.24/bin/startup.sh && /etc/init.d/nginx start && /bin/bash
方法二:
FROM ubuntu:trusty
RUN mkdir /usr/local/java
RUN mkdir /usr/local/tomcat
ADD jdk-8u144-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_144
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib
ADD /apache-tomcat-8.5.24.tar.gz /usr/local/tomcat/
ENV TOMCAT_HOME=/usr/local/tomcat/apache-tomcat-8.5.24
ENV PATH=$TOMCAT_HOME/bin:$PATH
RUN chmod +x /usr/local/tomcat/apache-tomcat-8.5.24/bin/*.sh
RUN apt-get update \
&& apt-get install -y software-properties-common \
&& add-apt-repository ppa:nginx/stable \
&& apt-get update \
&& apt-get install -y nginx
EXPOSE 8080 80
ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.5.24/bin/startup.sh && /etc/init.d/nginx start && /bin/bash
上述两种安装方法,区别就是安装 nginx 时,方法二将多条命令写成了一条命令。方法二比方法一制造的镜像少 30 多M 内存。
步骤二:docker build命令创建镜像
#通过 dockerfile创建镜像
dockerfile build -t vpaas .
-t: -t:在新容器内指定一个伪终端或终端。
#查看创建好之后的镜像
repository: 镜像仓库源
TAG : 标签
IMAGE: 镜像ID
CREATED:创建时间
SIZE: 镜像大小
步骤三:通过镜像启动一个容器
#通过镜像启动一个容器
docker run -itd --privileged=true -v /home/vpaas:/usr/local/vpaas_file -p 8089:8080 --name vpaas_container vpaas:latest /bin/bash
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。
-p : 是容器内部端口绑定到指定的主机端口
-v:参数用于数据卷映射,/home/vpaas 是宿主机卷标,/usr/local/vpaas_file 是容器卷标
--name: 容器名称
vpaas:latest: 创建的镜像名
数据卷的作用:
docker 镜像启动的容器和宿主机可以看成两个不同的Linux系统,这两个文件系统之间传输文件就是用数据卷进行传输的。
宿主机将文件放入到 /home/vpaas 中,通过容器卷标 /usr/local/vpaas_file 就可以看到放入的文件,类似于文件夹共享。
#查看启动的容器
docker ps
#查看所有的容器
docker ps -a
更新镜像
镜像创建好后,可能因为业务的需要,要加入某些功能,或者是部署自己的项目,就需要更新已经创建好的镜像。
步骤一:启动容器
docker start vpaas
步骤二:进入更新
docker exec -ti vpaas_container /bin/bash
vpaas_container: 容器名称,也可以成为容器ID
步骤三: 根据自己的需要,安装自己所需要的软件和部署自己的项目
步骤四:退出容器
命令: exit
步骤五:通过容器生成镜像
docker commit -m="更新镜像" 78c1ea1f7782 vpaasthree
-m:提交的描述信息
-a: 指定镜像作者
e218edb10161:容器ID
vpaasthree: 指定要创建的目标镜像名
更多推荐
所有评论(0)