IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker:制作镜像 -> 正文阅读

[系统运维]docker:制作镜像

自己制作Nginx镜像


一、Dockerfile指令

Dockerfile:制作docker镜像的配方文件(配置文件)
FROM 指定基础镜像
WORKDIR 指定进入容器的时候,在哪个目录下 工作目录
COPY 复制宿主机的文件和目录到容器里面
RUN 在容器里运行命令 在docker build时运行
CMD 容器运行的第一个程序命令 在启动容器时运行

CMD ["可执行命令或参数","参数"……]

ENV 定义环境变量
ENV NGINX_VERSION 19.7.0 将数值赋值给NGINX_VERSION
EXPOSE 声明开放端口号
ENTRYPOINT 类似于CMD命令,单数不会被docker run命令行参数指定的命令覆盖
如果运行docker run时使用了–entrypoint选项,将覆盖CMD命令
优点:在执行docker run的时候可以指定ENTRYPOINT运行所需的参数
注意:如果Dockerfile中存在多个ENTRYPOINT指令,仅最后一个生效
启动容器时运行
ARGENV作用一致,不过作用域不一样 传递参数 在制作镜像时使用 仅对Dockerfile内有效 构建命令docker build中可以用 --build-argue<参数名>=<值>来覆盖
VOLUME 定义匿名数据卷,在启动容器时忘记挂载数据卷,会自动挂载到匿名卷
作用:避免重要的数据,因容器重启而丢失,这是非常致命的
避免容器不断变大
STOPSIGNAL 阻止信号的

二、制作镜像详解

准备:CentOS Linux release 7.9.2009 (Core)一台,需安装了Docker

1.准备好一键编译安装nginx的脚本和nginx的源代码

[root@localhost ~]# mkdir /centos-nginx
[root@localhost ~]# cd /centos-nginx/

自己准备nginx的压缩包,从Windows下载再移动到linux目的文件夹内

[root@localhost centos-nginx]# ls
nginx-1.19.6.tar.gz  onekey_install_nginx.sh

一键安装nginx的脚本内容如下:

#!/bin/bash

#解决软件的依赖关系,需要安装的软件包
yum  install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make  -y
mkdir -p /nginx
cd /nginx
#解压 下载的nginx的源码包
tar xf nginx-1.19.6.tar.gz
cd  nginx-1.19.6
#生成编译前配置工作-->Makefile
./configure --prefix=/usr/local/nginx1    --with-threads --with-http_ssl_module  --with-http_realip_module  --with-http_v2_module --with-file-aio  --with-http_stub_status_module --with-stream
#编译
make 
#编译安装--》将编译好的二进制程序安装指定目录/usr/local/nginx1
make   install

2.编写dockerfile文件

[root@localhost centos-nginx]# vim Dockerfile 
FROM centos:latest
ENV  NGINX_VERSION  1.19.6
ENV  OS_VERSION  1.0
LABEL  maintainer="li <1491093154@qq.com>"
WORKDIR  /nginx
COPY  . .
RUN bash onekey_install_nginx.sh; \
    yum  install  net-tools  iproute  iputils  vim  -y
EXPOSE  80


STOPSIGNAL  SIGQUIT
ENV  PATH="$PATH:/usr/local/nginx1/sbin"
CMD ["/usr/local/nginx1/sbin/nginx", "-g", "daemon  off;"]
~                                                                                                                                                                   
~                                                              

3.创建自己的镜像

[root@localhost centos-nginx]# docker  build  -t  centos-nginx:1.0  .

制作完成

Successfully built e008b2059989
Successfully tagged centos-nginx:1.0
[root@localhost centos-nginx]# docker images
REPOSITORY        TAG         IMAGE ID       CREATED          SIZE
centos-nginx      1.0         e008b2059989   31 seconds ago   572MB
getting-started   latest      b3baeccf3400   2 days ago       179MB
node              12-alpine   dc1848067319   3 days ago       88.9MB
redis             latest      aa4d65e670d6   3 weeks ago      105MB
nginx             latest      08b152afcfae   3 weeks ago      133MB
mysql             latest      c60d96bd2b77   3 weeks ago      514MB
hello-world       latest      d1165f221234   5 months ago     13.3kB
centos            latest      300e315adb2f   8 months ago     209MB

制作镜像过程中遇到问题
制作过程中报错
—> [Warning] IPv4 forwarding is disabled. Networking will not work.
解决办法:
vi /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1
重启network服务
systemctl restart network
查看是否修改成功
sysctl net.ipv4.ip_forward
如果返回为“net.ipv4.ip_forward = 1”则表示成功了

4.启动自己制作的镜像的容器

[root@localhost centos-nginx]#   docker run  -dp  5580:80  --name  self-nginx1  centos-nginx:1.0
20ef95e63e711869794522f15474a4cfeafb5a52a7fc7328808d9761e2183620
[root@localhost centos-nginx]# docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS         PORTS                                   NAMES
20ef95e63e71   centos-nginx:1.0   "/usr/local/nginx1/s…"   3 seconds ago   Up 2 seconds   0.0.0.0:5580->80/tcp, :::5580->80/tcp   self-nginx1


排错
docker ps命令查看是否启动,如果没有启动,用docker logs + 容器名字/id可以查看出错的地方
检查Dockerfile脚本的问题,查看是否编写的脚本和Dockerfile文件有问题

5.用本机浏览器访问验证

网址为linux主机ip地址加启动容时端口号,如下所示:

http://192.168.116.151:5580/

总结

编写一件安装的脚本的时候,要特别注意脚本的细节,Dockerfile也是,一个字母出错就会导致镜像安装失败,或者安装成功后启动不了。
通过自己制作镜像,更深地了解Docker,理解docker镜像的原理,认识到linux系统和Docker的不同,俩那个体系的差别。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:47:33  更:2021-08-17 15:48:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:25:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计