CentoOS7系统下使用DockerFile构建镜像

具体操作流程

日常工作中,需要将应用或微服务构建为Docker镜像,下面根据自己的经验,整理如下文档。构建镜像主要依赖一下环境及服务,Docker服务、docker-compose、dockerfile镜像构建。

一、Docker环境安装部署

首先介绍下Docker的版本,分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 是社区免费版;
Docker EE 即企业版,强调安全,但需付费使用。
Docker 官方建议要 CentOS7.0 及以上系统版本,本文介绍 Docker CE 在CentOS下的安装使用。

1、检查Centos7系统内核版本

建议系统内核版 >=2.6.32-431,因为这些内核包含了运行Docker的一些特定修改。

// 在命令提示符下输入
[root@localhost/] uname -r

查看系统内核版本

2、检查CentOS是否使用Device Mapper作为存储驱动

// 在命令提示符下输入
[root@localhost/] ls -l /sys/class/misc/device-mapper

支持Device Mapper作为存储驱动注意:如果没有检测到Device Mapper,需要安装device-mapper软件包:
安装软件包:

// 在命令提示符下输入
[root@localhost/] sudo yum install -y device-mapper

加载dm_mod内核模块:

// 在命令提示符下输入
[root@localhost/] sudo modprobe dm_mod

3、如果之前安装过Docker服务,则需卸载历史版本

// 在命令提示符下输入
[root@localhost/] yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine

4、安装Docker依赖包

// 安装GCC
[root@localhost/] yum -y install gcc
// 安装GCC-C++
[root@localhost/] yum -y install gcc-c++
// 安装lvm2
[root@localhost/] yum install -y yum-utils device-mapper-persistent-data lvm2

设置阿里镜像仓库

[root@localhost/] yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引

[root@localhost/] yum makecache fast

5、安装Docker核心服务最新版本

[root@localhost/] yum install docker-ce docker-ce-cli containerd.io
//启动docker 服务
[root@localhost/] systemctl start docker
//验证Docker服务是否安装成功
[root@localhost/] systemctl status docker

显示下列信息,即Docker服务安装成功
Docker Version注意:可以将Docker服务修改为开机自启动服务:

//设置Docker服务为开机自启动
[root@localhost/] systemctl enable docker

二、基于Dockerfile构建镜像

docker镜像分层管理的,假如使用某个镜像启动为容器,而在容器中又增加了程序服务或数据文件。再将container容器提交保存为镜像,久而久之具体对镜像增加了那些服务于文件不便于管理。
使用Dockerfile构建镜像文件,清楚的记录了镜像增加了那些服务于文件便于后期维护管理。

1、先来看下DockerFile镜像构建文件的格式

//设置Docker服务为开机自启动
FROM centos  
MAINTAINER baidu 123@qq.com
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
ADD nginx-1.15.8.tar.gz /usr/src/
RUN cd /usr/src/nginx-1.15.8 \
    && mkdir /usr/local/nginx \
    && ./configure --prefix=/usr/local/nginx && make && make install \
    && ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \
    && nginx
RUN rm -rf /usr/src/nginx-nginx-1.15.8
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

2、DockerFile的常用命令

类型命令
基础镜像信息FROM
维护者信息MAINTAINER
镜像操作指令RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器启动时执行指令CMD、ENTRYPOINT

3、在DockerFile的文件目录下构建镜像

首先将需要打入镜像的应用系统拷贝的当前目录下。
例如:拷贝至当前目录DotNetCoreTest

//简单DockerFile文件格式
FROM microsoft/dotnet:2.2-aspnetcore-runtime  #基础镜像名称
MAINTAINER abc 123@qq.com                     #作者信息  
WORKDIR /usr/local/nginx                      #软件工作目录
EXPOSE 6001                                   #对外开放端口
COPY ./DotNetCoreTest .                       #需要将应用系统的文件拷贝至镜像中
CMD ["dotnet", "netcoreTest.dll"]             #镜像启动时执行启动应用服务

在Dockerfile文件的目录下,执行镜像构建命令。构建命令会自动拉取基础镜像,然后根据每条命令叠加镜像分层文件,最终生成镜像。
docker build 镜像构建命令
-t 指定仓库名称与镜像名称 jf/jf-exvit:v4.00.20201201
。生成的镜像自动到本地镜像目录

//构建镜像
[root@localhost/] docker build -t jf/jf-exvit:v4.00.20201201 .

在这里插入图片描述

4、查看构建的镜像

//查看镜像
[root@localhost/] docker images

在这里插入图片描述

三、Docker-Compose安装部署

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用,简单说就是容器管理组件。
1、下载docker-compose文件

//下载docker-compose
[root@localhost/] curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2、检查docker-compose是否安装成功

//下载docker-compose
[root@localhost/] 运行docker-compose --version

docker-compose
3、docker-compose编排模板


version: '3.0' # docker 的版本
  services: # 配置的容器列表
  CONTAINER_NAME: # 容器的名称
  image: BASE_IMAGE # 这个一个容器的基础镜像
  ports: # 你的容器需不需要做端口映射
  - "host_port:container_port"
  volumes: # 数据卷配置
  - host_dir:container_dir
  environment: # 环境变量(map 的配置方式 key: value)
  PARAM: VALUE
  environments: # 环境变量(数组的配置方式 - key=value)
  - PARAM=VALUE
  restart: always # 容器的重启策略
  dns: # dns 的配置
  - 8.8.8.8

4、使用docker-compse启动容器,并且为后台运行

//下载docker-compose
[root@localhost/] docker-compose up -d

注意:docker-compose 命令的执行目录,必须与docker-compose 文件在同级目录,否则会提示找不到文件
在这里插入图片描述

四、导出导入命令

1、save镜像导出命令 docker save [options] images [images…]
例如:

docker save -o nginx.tar nginx:latest

docker save > nginx.tar nginx:latest

其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)
2、load镜像导入命令 docker load [options]
例如:

docker load -i nginx.tar

docker load < nginx.tar

其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

五、Docker常用命令

  • 查看镜像列表
    docker images
  • 下载镜像
    docker pull centos
  • 基于镜像启动容器
    docker run centos echo “hello word”
  • 进入已经运行的容器中
    docker exec -it [容器名称/ID] bash
  • 查看启动的容器列表
    docker ps
  • 查看所有容器,包括未启动成功或停止的
    docker ps -a
  • 使用镜像直接启动为容器
    docker run -d --name=ubuntu_server -p 80:80 -v /etc/www:/var/www ubuntu:latest

参考内容

安装部署是参考了【Docker–安装部署】
Docker-Compose文档
[1]: https://www.cnblogs.com/caoweixiong/p/12186736.html
[2]: https://docs.docker.com/compose/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值