小白docker入门简介

Dockerfile入门使用分享

一、docker是啥

最开始我和你一样,围着镜像容器docker 的名词团团转,其实没那么复杂。简单说我们就是做个微型的小电脑模型 ,把需要的软件都装进去。后面就可以根据这个模型做一个真的电脑出来。

还没懂

就是你有个高达的钥匙链,因为是个钥匙链,所以它只能看着。但是你有个咒语,叫刀客乱 ,拿着高达钥匙链的人,只要一念刀客乱 ,高达钥匙链就会闪闪发光,在你面前创造出一个真正的机甲高达 出来,能跑能跳能打枪

是不是很厉害,一个钥匙链的玩偶,不是只能创建1个真正的高达,能创造很多个高达出来 ,这就是厉害之处!

钥匙链玩偶就是镜像 ,被创造出来的真的高达就是容器

二、镜像仓库

有些人为了方便,自己做了很多镜像,然后放到一个商店里面去买,很多都是不收钱的,这个商店就是镜像商店 。就是里面有很多的玩偶钥匙链。

你买了就能造一个真的机甲战士出来!多么酷!

三、自定义镜像

后来有一天,你梦到一个拥有计算数学功能 的机甲战士,你跑去商店问老板,结果商店里面没有这种特意功能的玩偶!你特别沮丧,在回家的路上,你听别人说,可以自己做玩偶

做法就是把机甲战士需要的特异功能(计算)写在一张纸上 ,然后念一个咒语刀客币路豆 ,就能造出一个机甲玩偶战士出来!

这神奇的纸就是Dockerfile

四、动手做机甲玩偶

在Dockerfile的纸上写下特异功能

dockerfile 复制代码
# 使用 Nginx 作为基础镜像
# 就是找一个显示器nginx
FROM nginx:alpine

# 将本地的 index.html 复制到容器中的 Nginx 默认网站目录
# 你想让机甲战士会算简单计算数学js,把加减乘除的运算规则写这里index.html
COPY index.html /usr/share/nginx/html/

# 暴露 80 端口
# 让机甲战士用哪个对讲机和你说话,这里是80号对讲机
EXPOSE 80

然后念咒语刀客币路豆(docker build -t js .),就做出一个叫js名字的玩偶(镜像)。

五、帮我做数学题

前面说了,玩偶是不能动的,需要动的话,还要向玩偶念咒语刀客乱 (docker run -d -p 8080:80 --name jsq js),一个叫jsq(计算器)的机甲战士就出现在你的眼前了,你用自己的8080对讲机 朝着jsq机甲战士的80对讲机 讲话,告诉jiq机甲战士,你要算什么数学题!

六、计算功能的写法

Dockerfile就是文件名,没有后缀 。此外,Dockerfile文件和index.html文件需要在同一个目录下

Dockerfile⬇️

dockerfile 复制代码
# 使用官方的 Nginx 基础镜像
FROM nginx:latest

# 将自定义 HTML 文件复制到容器中的 Nginx 默认根目录
COPY index.html /usr/share/nginx/html/index.html

# 暴露 Nginx 默认的 80 端口
EXPOSE 80

index.html⬇️

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple Calculator</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        .calculator {
            margin: 0 auto;
            max-width: 300px;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
        }
        .calculator input, .calculator button {
            width: 100%;
            padding: 10px;
            margin: 5px 0;
            font-size: 16px;
        }
        .calculator button {
            background-color: #4CAF50;
            color: white;
            border: none;
            cursor: pointer;
        }
        .calculator button:hover {
            background-color: #45a049;
        }
    </style>
</head>
<body>

    <div class="calculator">
        <h2>Simple Calculator</h2>
        <input type="number" id="num1" placeholder="Enter first number" required>
        <input type="number" id="num2" placeholder="Enter second number" required>
        <button onclick="calculate()">Calculate</button>
        <h3 id="result"></h3>
    </div>

    <script>
        function calculate() {
            // 获取输入的值
            var num1 = parseFloat(document.getElementById('num1').value);
            var num2 = parseFloat(document.getElementById('num2').value);

            // 判断输入是否合法
            if (isNaN(num1) || isNaN(num2)) {
                document.getElementById('result').innerText = "Please enter valid numbers.";
            } else {
                var sum = num1 + num2;
                document.getElementById('result').innerText = "Result: " + sum;
            }
        }
    </script>

</body>
</html>

咒语⬇️

bash 复制代码
# 这里是执行Dockerfile中的命令,生成叫js的镜像
docker build -t js .

# 这里是查看所有的镜像,如果你只有一个,那就是js
docker images
#这个就是查看的结果⬇️
[ec2-user@ip-666-666-666-666 dockerfile]$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
js            latest    503e3aff6e48   9 seconds ago   192MB
#这个就是查看的结果⬆️

# 这里是让镜像创造一个容器,容器的名字叫做jsq,用js镜像创作
docker run -d -p 8080:80 --name jsq js

# 这里是查看容器
docker ps -a
#这个就是查看的结果⬇️
[ec2-user@ip-666-666-666-666 dockerfile]$ docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                        PORTS                                   NAMES
b28ba2d5575c   js            "/docker-entrypoint...."   5 seconds ago    Up 4 seconds                  0.0.0.0:8080->80/tcp, :::8080->80/tcp   jsq
#这个就是查看的结果⬆️

七、咒语翻译器

我忘记和你讲了,咒语需要被专人(docker)翻译才能有效 ,所以你需要的翻译器(docker)

bash 复制代码
# 施法前摇
sudo yum update -y

# 安装翻译器
sudo yum install -y docker

# 翻译器开机
sudo systemctl start docker

# 翻译器自动开机
sudo systemctl enable docker

# 检查翻译器版本
docker --version

# 测试翻译器
sudo docker run hello-world

八、放屁

上面很多都是胡说,根本没有专业的概念讲解,因为只是希望小白能初步理解。大佬就当我放屁就好了。

九、解决问题

东西一般都不是凭空出现的,一般都是为了解决一个问题。docker就是为了解决不统一 的问题,比如说,老师让大家做个能算数的高达机甲战士出来,狗蛋和小王都有自己的想法,做的不一样,其他人做的也不一样。所以老师就给了个镜像,大家直接念咒语,根据镜像作出的高达机甲都是一个模子里面刻出来的,所以长得都一样,功能也都一样,所以就完成了统一

到了我们现实生活中,程序员A写的代码,在自己电脑里面运行正常 ,到测试人员B那里报错 ,查问题就很麻烦很费时间 。所以,如果将代码做成一个镜像,里面包含了所有必须的特异功能,需要运行,就用镜像做出一个容器,直接运行容器

因为是从一个模子(镜像)刻出来的容器,所以完全一样,就不会出现换个地方(环境、电脑)报错的问题了

相关推荐
南猿北者5 小时前
Docker Volume
运维·docker·容器
网络研究院7 小时前
Am I Isolated:一款安全态势基准测试工具
容器·工具·基准测试·安全态势
涔溪8 小时前
Docker简介
spring cloud·docker·eureka
内核程序员kevin9 小时前
在Linux环境下使用Docker打包和发布.NET程序并配合MySQL部署
linux·mysql·docker·.net
kayotin9 小时前
Wordpress博客配置2024
linux·mysql·docker
颜淡慕潇11 小时前
【K8S问题系列 | 9】如何监控集群CPU使用率并设置告警?
后端·云原生·容器·kubernetes·问题解决
运维&陈同学11 小时前
【模块一】kubernetes容器编排进阶实战之k8s基础概念
运维·docker·云原生·容器·kubernetes·云计算
信子姚青11 小时前
K8s使用nfs
容器
葡萄皮Apple11 小时前
[CKS] K8S RuntimeClass SetUp
java·容器·kubernetes
mit6.82412 小时前
[Docker#4] 镜像仓库 | 部分常用命令
linux·运维·docker·容器·架构