[Docker学习记] 手写第一个Docker镜像

# 手写一个Docker最简单的镜像

一般情况下,手写的image都是在某一个基础镜像的基础上构建的。

关键字: FROM

## 先看简单的示例

```
FROM ubuntu
RUN echo "Hello Docker"

```

在ubuntu这个基础镜像(一般基础镜像是类似操作系统或者运行环境:比如nodejs,可参考阮一峰[示例](http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html))上,跑一个echo "Hello Docker"
有了ubuntu这个基础镜像,就可以使用ubuntu上的命令,比如: echo

根据Dockerfile编译成你自己的镜像文件image

```
docker build -t hello .
```
build表示编译镜像
-t: 指定镜像名字: hello
.: 当前目录,会从当前目录默认找Dockerfile的文件(首字母大写,没有后缀),来构建镜像


查看镜像
```
docker images
```
查看镜像

REPOSITORY TAG IMAGE ID CREATED SIZE
hello latest d21a34a50ec6 7 hours ago 5.59MB

我的这个hello是FROM alpine --一个很小的linux系统
所以编译出来的image只有5.59M


## 稍微提高一下

```
FROM alpine
RUN mkdir /app && echo "Hello alpine" > /app/test.log
CMD ["cat","/app/test.log"]
```

1.在alpine系统镜像上构建,
2.构建image时,创建目录/app, 打印Hello alpine 并且把这句话记录到/app/test.log文件里面
3.当这个镜像的容器启动后,运行 cat /app/test.log命令,就是查看这个文件内容

构建镜像
```
docker build -t hello2 .
```

起一个容器跑一下hello2
```
docker run --rm hello2

输出:
[root@localhost hello2]# docker run --rm hello2
Hello alpine

```

我们来试试数据映射

```
mkdir app
cd app
echo Hello app > test.log

docker run --rm -v /root/docker_sample/hello2/app:/app hello2

输出

Hello app

```
这次启动容器的时候,把/root/docker_sample/hello2/app 映射到容器的/app目录
这样cat /app/test.log 实际是宿主机/root/docker_sample/hello2/app/test.log文件
所以打印出来的不是Hello alpine, 而是 Hello app

The end! 2020-1-8

猜你喜欢

转载自www.cnblogs.com/tomcatandjerry/p/12169454.html
今日推荐