docker--制作镜像详细教程


一、什么是Dockerfile?

制作一个自己的docker镜像,此文是在其他镜像的基础上为之扩展,Dockerfile是制作镜像的配方。Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

二、制作镜像步骤

1.新建一个空目录

本文是centos8系统,代码如下(示例):

[root@centos8-docker /]# mkdir mydocker1
[root@centos8-docker /]# cd mydocker1

2.新建Dockerfile

代码如下(示例):

[root@centos8-docker mydocker1]# vim Dockerfile
[root@centos8-docker mydocker1]# cat Dockerfile
FROM python:3.9-slim
#下载一个python3.9的镜像模板,已经有操作系统和安装好python3.9
WORKDIR /app
#在docker容器里的工作目录-->进入docker容器的时候,所在的目录
ADD . /app
# 复制当前目录下的所有的内容到容器里的/app目录下
VOLUME ["/data_flask"]
#指定数据卷
RUN pip install --trusted-host pypi.python.org -r requirements.txt
#安装requirements.txt里的库,只是在制作镜像的时候运行
EXPOSE 80
#EXPOSE 80  定义环境变量
ENV NAME World
#定义name变量
ENV AUTHOR yejing
#定义author变量
CMD ["python","app.py"]
#容器启动的时候会运行

3.新建requirements.txt文件

[root@centos8-docker mydocker1]# vim requirements.txt
[root@centos8-docker mydocker1]# cat requirements.txt 
Flask
Redis
#下载我们所需要的flask框架和redis数据库

4.新建app.py文件

[root@centos8-docker mydocker1]# vim app.py
[root@centos8-docker mydocker1]# cat app.py

from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)
[root@centos8-docker mydocker1]# ls
app.py  Dockerfile  requirements.txt
#这个目录下有这三个文件

5.生成镜像,需要一点时间,因为下载安装很多东西

[root@centos8-docker mydocker1]# docker build -t sc_friendlyhello_2 .
#按照当前路径下的配置文件,生成一个名字为sc_friendlyhello_2的镜像

在这里插入图片描述
出现上图即成功生成此镜像

6.查看生成的镜像

[root@centos8-docker mydocker1]# docker images

在这里插入图片描述

8.下载redis的镜像

[root@centos8-docker mydocker1]# docker pull redis

9.运行容器

[root@centos8-docker mydocker1]# docker run -d -p 6677:80 --name sc_hello_2 sc_friendlyhello_2
[root@centos8-docker mydocker1]# docker ps
#查看正在运行的容器

在这里插入图片描述
用浏览器访问自己虚拟机的ip地址加端口号,出现下图即可,我的是192.168.31.31:6677
在这里插入图片描述
因为redis容器没有启动,所以我们启动一个redis容器链接到现在的这个容器。

[root@centos8-docker mydocker1]# docker run -d -p 5644:6379 --name sc_redis_2 redis
#创建redis容器
[root@centos8-docker mydocker1]# [root@centos8-docker mydocker1]# docker run -d -p 5647:80 --name sc_hello_4 --link sc_redis_2:redis sc_friendlyhello_2

#创建一个容器链接到redis数据库容器

再用浏览器访问192.168.31.31:5647
在这里插入图片描述
成功显示


总结

至此,成功制作镜像!

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值