A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
使用busybox作为基础镜像+自己编写一个脚本作为业务核心代码=完成一个自己的镜像
一、先编写一个小脚本,用来做镜像的核心代码
[root@docker ~]# mkdir /Dockerfile
[root@docker ~]# cd /Dockerfile/
[root@docker Dockerfile]# ls
[root@docker Dockerfile]#
# 作为核心代码测试
[root@docker Dockerfile]# cat while.sh
#!/bin/bash
i=1
while true
do
echo "hello world,sanchuang$i"
let i++
sleep 1
done
二、编辑Dockerfile文件
[root@docker Dockerfile]# vim Dockerfile
[root@docker Dockerfile]# cat Dockerfile
#指定基础镜像
FROM busybox
#指定了在容器内部进行操作时的工作目录,将当前工作目录设置为根目录(/)。
WORKDIR /
#复制宿主机当前目录下的所有文件和文件夹到容器里的/目录下 docker cp
COPY . /
#制作镜像的时候需要执行的命令 这些文件会留在做好的镜像里
#需要注意的是,这些命令可能不是必需的,具体要根据实际需求来决定是否需要执行这些操作。
RUN touch sc.txt && mkdir sanchuang && sleep 10
#指定容器启动的时候需要执行的命令
#/bin/sh while.sh
ENTRYPOINT ["/bin/sh","/while.sh"]
三、制作镜像
#-t 指定镜像的名字 1.0版本
[root@docker Dockerfile]# docker build -t scbusybox:1.0 .
[+] Building 50.4s (8/8) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 489B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/busybox:latest 34.9s
=> [internal] load build context 0.0s
=> => transferring context: 613B 0.0s
=> [1/4] FROM docker.io/library/busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678 3.1s
=> => resolve docker.io/library/busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678 0.0s
=> => sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678 2.29kB / 2.29kB 0.0s
=> => sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee 527B / 527B 0.0s
=> => sha256:beae173ccac6ad749f76713cf4440fe3d21d1043fe616dfbe30775815d1d0f6a 1.46kB / 1.46kB 0.0s
=> => sha256:5cc84ad355aaa64f46ea9c7bbcc319a9d808ab15088a27209c9e70ef86e5a2aa 772.79kB / 772.79kB 2.8s
=> => extracting sha256:5cc84ad355aaa64f46ea9c7bbcc319a9d808ab15088a27209c9e70ef86e5a2aa 0.2s
=> [2/4] COPY . / 0.2s
=> [3/4] RUN touch sc.txt && mkdir sanchuang && sleep 10 12.0s
=> exporting to image 0.1s
=> => exporting layers 0.0s
=> => writing image sha256:4643185788a5af4d7a73d234a6c3aac11af259db05fd643835c357b327b504b4 0.0s
=> => naming to docker.io/library/scbusybox:1.0
四、查看制作好的镜像
[root@docker Dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
scbusybox 1.0 4643185788a5 24 seconds ago 1.24MB
mysql 5.7.43 92034fe9a41f 2 weeks ago 581MB
hello-world latest 9c7a54a9a43c 3 months ago 13.3kB
nginx latest 605c77e624dd 20 months ago 141MB
golang latest 276895edf967 20 months ago 941MB
redis latest 7614ae9453d1 20 months ago 113MB
python latest a5d7930b60cc 20 months ago 917MB
五、使用制作好的镜像
[root@docker Dockerfile]# docker run -it --rm --name scbusybox-1 scbusybox:1.0
hello world,sanchuang1
hello world,sanchuang2
hello world,sanchuang3
hello world,sanchuang4
hello world,sanchuang5
hello world,sanchuang6
hello world,sanchuang7