概念
要了解docker首先要了解什么是镜像和容器以及他们之间的联系。
这里做一下简单阐述:容器是镜像的运行实例,可以使用同一个镜像运行多个容器;镜像是文件系统层和一些元数据的集合;层是文件变更的组合。容器运行着由镜像定义的系统,这些镜像有一个或者多个层加上一些docker的元数据构成。
如果熟悉面向对象原理的童鞋,看待镜像和容器时可以将镜像卡看作类而将容器看作对象。对象是类的具体实例,同样容器是镜像的实例。用户可以从单个镜像创建多个容器,就像对象一样,他们之间是相互隔离的,不论用户在对象中修改了什么都不会影响类的定义。
环境准备
1、这里我使用的服务器环境是CentOS7,之前有看到说Docker要求Centos系统内核版本高于3.10,所以大家在构建docker环境时需要注意检查系统内核的版本具体命令如下:
# uname -r
2、更新yum包
# sudo yum update
3、安装需要的软件包
# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置安装docker的yum源
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看docker版本,并选择需要安装的版本
# yum list docker-ce --showduplicates | sort -r
6、安装docker,docker分为ce版(社区版)和ee版(企业版)
# sudo yum install docker-ce #通过这个命令会默认安装最新最稳定的版本
# sudo yum install docker-ce-19.03.1 #通过这个命令可以安装指定版本的docker
这里我安装了 docker-ce-19.03.1版本
7、启动docker
1)通过systemctl启动
# sudo systemctl start docker #该命令用于启动docker环境
# sudo systemctl enable docker #加入开机启动
2)也可以通过service方式启动
# service docker start
8、检查安装的docker版本以及验证docker是否安装成功了
# docker version
通过dockerfile构建容器
这里我通过Dockerfile构建以centos7为基础的包含java8的容器镜像
1、编写Dockerfile
# Base images 基础镜像
FROM centos:centos7
#MAINTAINER 维护者信息
MAINTAINER jing#执行shell命令
RUN mkdir /usr/local/jdk#工作目录
WORKDIR /usr/local/jdk
ADD jdk-8u151-linux-x64.tar.gz /usr/local/jdkENV JAVA_HOME /usr/local/jdk/jdk1.8.0_151
ENV JRE_HOME /usr/local/jdk/jdk1.8.0_151/jre
ENV PATH $JAVA_HOME/bin:$PATH
2、获取jdk安装文件
这里我从jdk官网下载了jdk8的安装文件:jdk-8u151-linux-x64.tar.gz
3、执行docker build命令创建docker镜像
docker build --rm --tag centos_java:centos7 .
4、查看镜像是否创建成功
docker images
可以看到有两个镜像其中centos为基础镜像,centos_java为基于centos创建的自定义镜像
5、执行docker run命令启动docker容器
# docker run -i -t -d -p 127.0.0.1:80:80 e5d9ea338e26 /bin/bash
6、查看容器是否构建成功
# docker ps
7、进入docker查看Jdk是否安装成功
# docker exec -it f1f31acb10c1 /bin/bash
这里基于centos7构建包含jdk8的docker容器已经构建成功。
8、这里在加个nginx的Dockerfile
# nginx Dockerfile
# Version 1.0# Base images 基础镜像
FROM centos:centos7#MAINTAINER 维护者信息
MAINTAINER jing#ADD 获取nginx安装文件
ADD http://nginx.org/download/nginx-1.14.0.tar.gz .#RUN 执行脚本命令
RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
RUN useradd -M -s /sbin/nologin nginx
RUN tar -zxvf nginx-1.14.0.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.14.0 && ./configure --prefix=/usr/local/nginx --user=niginx --group=nginx --with-http_stub_status_module && make && make install
RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/#expose 映射端口
EXPOSE 80#CMD 运行已下命令
CMD ["nginx"]