[Docker] Create a Docker image with Dockerfile
Docker with create Image Dockerfile
2023-09-14 09:00:42 时间
### Create a docker file
1. Cd to the project: `cd widget-factory-inc/`
2. create a dockerfile: `vim dockerfile`
```bash
FROM httpd:2.4
RUN apt update -y && apt upgrade -y && apt autoremove -y && apt clean && rm -rf /var/lib/apt/lists/*
```
3. After have our Dockerfile, let's build the image
`docker build -t widgetfactory:0.1 .`
4. Setup some variables to help us inspect docker image
For each layer, we print it's value
```bash
export showLayers='{{ range .RootFS.Layers }}{{ println . }}{{end}}'
export showSize='{{ .Size }}'
```
5. `docker images`
6. Inspect the image
```bash
$ docker inspect -f "$showSize" widgetfactory:0.1
146940154
$ docker inspect -f "$showLayers" widgetfactory:0.1
sha256:67a4178b7d47beb6a1f697a593bd0c6841c67eb0da00f2badefb05fd30671490
sha256:9d113bfab823c45c316ee21491b7a96789e43d1128c74ac8301c2797caecda34
sha256:67c72336bd783517b29792ddc7b56c973a3f762a1d48f0ed89b645c36d79623c
sha256:8067b7092a5b840345a9e4874d5ba8d2bc272e28cedc3279c1de4f0cccbd29b8
sha256:a8b657e74a9ec0e3db41099f5410a1266663e66ed510cd79057a68b5755d385e
sha256:c7855b5e5105974bfd5fd60604cfd2b479c82fdd9e403060bcc320bf33288f42
$ docker inspect -f "$showLayers" httpd:2.4
sha256:67a4178b7d47beb6a1f697a593bd0c6841c67eb0da00f2badefb05fd30671490
sha256:9d113bfab823c45c316ee21491b7a96789e43d1128c74ac8301c2797caecda34
sha256:67c72336bd783517b29792ddc7b56c973a3f762a1d48f0ed89b645c36d79623c
sha256:8067b7092a5b840345a9e4874d5ba8d2bc272e28cedc3279c1de4f0cccbd29b8
sha256:a8b657e74a9ec0e3db41099f5410a1266663e66ed510cd79057a68b5755d385e
```
As we can see, the `widgetfactory` image has 6 layers, but the base images has 5 layers. Which means that `widgetfactory` add 1 layer on top of base images.
The `RUN` command add one layer to the image.
### Add project website into container
1. Update Dockerfile
```bash
FROM httpd:2.4
RUN apt update -y && apt upgrade -y && apt autoremove -y && apt clean && rm -rf /var/lib/apt/lists/*
# remove default index.html
RUN rm -rf /usr/local/apache2/htdocs/index.html
WORKDIR /usr/local/apache2/htdocs
# Copy the file from local to workdir
# ./web: relative to current dir for local
# .: the workdir we have setup in previous cmd
COPY ./web .
```
2. Build docker image
`docker build -t widgetfactory:0.2 .`
3. Check the size and layers
```bash
$ docker inspect -f "$showSize" widgetfactory:0.2
$ docker inspect -f "$showLayers" widgetfactory:0.2
```
4. Bash into the container
```bash
docker run --rm -it widgetfactory:0.2 bash
root@2bb9c12b706d:/usr/local/apache2/htdocs# ls -l
total 16
drwxr-xr-x. 2 root root 76 Jan 31 08:47 img
-rw-r--r--. 1 root root 3059 Jan 31 08:47 index.html
-rw-r--r--. 1 root root 2910 Jan 31 08:47 quote.html
-rw-r--r--. 1 root root 2611 Jan 31 08:47 support.html
-rw-r--r--. 1 root root 2645 Jan 31 08:47 widgets.html
```
### Run the container
Run the container:
`docker run --name web1 -p 80:80 widgetfactory:0.2`
Exit the container:
`CTRL + C`
Start the container:
`docker start web1`
相关文章
- Docker部署_docker部署网站
- docker的常用命令汇总_Docker命令
- 群晖docker使用教程_docker的使用
- docker离线安装及配置tab补全_Docker安装
- docker 离线安装_Docker安装
- Docker安装docker-compose插件
- 【已解决】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runnin
- Docker服务的查看服务状态命令(systemctl status docker)
- 「 【Docker】设置docker加速器(如何使docker下载速度变快) 」
- 「 【Docker】linux安装docker compose(小白安装) 」
- 【Docker 系列】docker 学习 四,镜像相关原理
- 【Docker 系列】docker 学习九,Compose 内容编排官网初步体验
- docker-compose容器编排
- Docker镜像是什么?
- 我看谁还敢说不懂Docker
- 【教程】全流程Ubuntu安装Docker版Gitlab并初始化管理员
- docker部署java程序获取的时间与系统时间不一致详解程序员
- Docker容器的重启策略及docker run的–restart选项详解程序员
- docker开源仓库Harbor部署笔记详解架构师
- 在Linux系统中安装Docker容器(linux下安装docker)
- mysql容器化部署:利用 Docker 搭建 Redis MySQL 集群服务(dockerredis)
- Docker搭建简单Redis集群(dockerredis)
- 为什么 strace 在 Docker 中不起作用?
- 安装配置 flannel每天5分钟玩转Docker容器技术(59)
- docker managed volume – 每天5分钟玩转 Docker 容器技术(40)
- Oracle 中的 WITH 语句使用技巧(oracle with用法)
- 快速安装Linux上的Docker(linux安装docker)
- MySQL查询优化使用WITH子句的限制与替代方案(mysql不能用with)
- Oracle中利用WITH子句的使用(oracle中的with)