Docker镜像制作详解介绍

  1. Docker镜像制作详解介绍

当我们在使用Docker的时候,最常遇到的就是如何制作一个合适的镜像。这也是我们必须掌握的技能,因为只有找到一个合适的镜像,我们才能够在其基础上进行各种各样的应用。

Docker的镜像制作一般分为如下几个步骤:

  • 编写一个Dockerfile文件,用来描述镜像中所使用的操作系统,镜像软件包,以及其他相关的组件和配置;
  • 使用Docker build命令,在Dockerfile所在目录下进行构建,这个过程会自动下载和安装相应版本的操作系统和软件包,并且进行相应的配置;
  • 使用Docker run命令启动自己的镜像,然后通过相应的端口等访问自己的应用。

下面是两个示例说明:

  1. 示例一

假设我们需要一个基于CentOS 7的Docker镜像,这个镜像里面需要安装Elasticsearch和Logstash,并且启动Logstash监听端口为5140。

首先,我们需要编写一个Dockerfile文件:

FROM centos:7
RUN yum update -y
RUN yum install -y java-1.8.0-openjdk-headless
RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

ADD https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-x86_64.rpm .
RUN rpm -i elasticsearch-7.14.0-x86_64.rpm

ADD https://artifacts.elastic.co/downloads/logstash/logstash-7.14.0-x86_64.rpm .
RUN rpm -i logstash-7.14.0-x86_64.rpm

ADD logstash.conf /etc/logstash/conf.d/

RUN systemctl enable elasticsearch.service
RUN systemctl enable logstash.service

CMD /usr/sbin/init

其中,FROM关键词用来指定所使用的操作系统和版本,这里我们使用的是CentOS 7,然后通过RUN命令安装相应的软件包,接着通过ADD命令添加相关的软件包,以及配置文件,最后通过CMD命令运行一些命令。

然后,我们可以使用Docker build命令构建镜像:

docker build -t my-elk .

其中,-t参数用来指定最终的镜像名称,"."代表使用当前目录下的Dockerfile文件进行构建。

最后,我们可以使用Docker run命令启动自己的镜像:

docker run -d -p 5044:5044 -p 9600:9600 -p 5140:5140 my-elk

其中,-d参数用来表示在后台运行,-p参数用来将相应的端口暴露出来。

  1. 示例二

假设我们需要一个包含Node.js和MongoDB的Docker镜像,这个镜像里面需要安装Node.js,MongoDB,以及一些其他相关的组件。

首先,我们需要编写一个Dockerfile文件:

FROM node:12
RUN apt-get update && apt-get install -y mongodb
RUN npm install -g pm2

WORKDIR /home
COPY package*.json ./
RUN npm install
COPY . .

EXPOSE 3000

CMD ["pm2-runtime", "app.js"]

其中,FROM关键词用来指定所使用的操作系统和版本,这里我们使用的是Node.js 12版本,然后通过RUN命令安装相应的软件包,接着通过COPY命令添加相关的文件,最后通过EXPOSE命令指定暴露出来的端口,并通过CMD命令运行应用。

然后,我们可以使用Docker build命令构建镜像:

docker build -t my-node .

其中,-t参数用来指定最终的镜像名称,"."代表使用当前目录下的Dockerfile文件进行构建。

最后,我们可以使用Docker run命令启动自己的镜像:

docker run -d -p 3000:3000 my-node

其中,-d参数用来表示在后台运行,-p参数用来将相应的端口暴露出来。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker镜像制作详解介绍 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • docker容器之实现 nat 转换收发

    最近遇到个业务问题,在linux中docker run 启动容器时,我们可以通过-p,然后绑定host与容器的端口,实现端口映射,但如果不用这个实现端口映射,我们有没有其他的解决方案了呢? 答案,有。 在host设置iptables规则实现nat网络地址转换,也可以实现外部来的访问请求,通过网络地址转换,进而访问到docker容器的服务。 具体可以描述为:我…

    Docker 2023年4月16日
    00
  • docker的windows下安装

    点击上图的dockerToolbox,双击安装 你可通过CMD查看docker是否安装成功,输入docker-machine,出现版本等信息  在使用Docker前,要先创建docker machine,它其实是台虚拟机,不过在使用它的时候,你可能根本察觉不出来它是虚拟的。默认情况下,docker machine的所有文件都会保存在用户的根目录下,一般是在C…

    Docker 2023年4月13日
    00
  • Docker: Harbor一些小知识

    镜像文件上传到私有仓库harbor后,镜像的物理存储位置在哪里? 这些信息记录在docker-compose.yml里,通过观察发现 镜像存储在了宿主机的 volumes: – /data/registry:/storage:z 这个位置, 所以删除 harbor不会删除数据。因为数据被持久化到了宿主机的制定目录下了 [root@192 harbor]# c…

    Docker 2023年4月11日
    00
  • Docker容器日志查看和清理的图文教程

    下面我将为您详细讲解“Docker容器日志查看和清理的图文教程”。 1. 查看容器日志 1.1 使用docker logs命令查看日志 使用docker logs命令可以查看容器的日志信息。该命令的基本语法如下: docker logs [OPTIONS] CONTAINER 其中,CONTAINER表示要查看日志的容器的名称或ID。 例如,要查看名为web…

    Docker 2023年5月16日
    00
  • Docker 容器上部署 Zabbix

    首先,从 Docker Hub 上拉取 Zabbix 镜像。可以使用以下命令: docker pull zabbix/zabbix-server-mysql:latest 这会下载最新版本的 Zabbix Server 镜像和 MySQL 镜像。 然后,创建一个 Docker 网络以便容器可以相互通信: docker network create zabbi…

    Docker 2023年4月8日
    00
  • 企业级GitLab在Docker部署使用

    一、部署gitlab 这里使用的是Centos8,安装Docker环境 ,这里不说了,参考:https://www.cnblogs.com/wei325/p/15139701.html gitlab有ce版和ee版,ce版为免费版本;ee版为企业版本,需要收费;这里用ce版。 1)拉取Gitlab镜像 docker pull gitlab/gitlab-ce…

    2023年4月9日
    00
  • docker与gosu

    1.容器中不要使用root账号 gosu是个工具,用来提升指定账号的权限,作用与sudo命令类似,而docker中使用gosu的起源来自安全问题; docker容器中运行的进程,如果以root身份运行的会有安全隐患,该进程拥有容器内的全部权限,更可怕的是如果有数据卷映射到宿主机,那么通过该容器就能操作宿主机的文件夹了,一旦该容器的进程有漏洞被外部利用后果是很…

    Docker 2023年4月11日
    00
  • docker快速搭建kafka集群

    本文介绍如何在linux下利用docker快速搭建kafa单机集群 2.项目 地址:https://github.com/wurstmeister/kafka-docker 3.环境安装 3.1 安装docker-compose 1)安装Python3 参考Python系列 2)安装相关lib Ubuntu: sudo apt install -y libf…

    Docker 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部