基于Dockerfile镜像的创建

1 Docker镜像的创建

创建镜像有三种方法:

  1. 基于已有镜像创建
  2. 基于本地模板创建
  3. 基于Dockerfile创建(重点)

1.1 基于现有镜像创建模板

(1) 首先启动一个镜像,在容器里做修改

docker create -it centos:7 bash
docker ps -a
CONTAINER ID   IMAGE      COMMAND   CREATED          STATUS    PORTS     NAMES
fb555aed6d9c   centos:7   "bash"    17 seconds ago   Created             agitated_germain
docker start fb555aed6d9c
yum install net-tools -y
exit
[root@localhost ~]# docker create -it centos:7 bash
a0e0b9ee23f6c61f62a33bd909b65adbb0414cec3d73c6e96729eb3e1e4dd49e
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                   PORTS     NAMES
a0e0b9ee23f6   centos:7   "bash"        6 seconds ago   Created                            modest_jepsen
#启动容器
[root@localhost ~]# docker start modest_jepsen
# 可以在容器里面安装net-tools工具
[root@localhost ~]# docker exec -it modest_jepsen bash
[root@a0e0b9ee23f6 /]# yum install -y net-tools

(2) 然后将修改后的容器提交为新的镜像,需要使用该容器的ID号创建新镜像

root@localhost ~]# docker commit -m "new net-tools" -a "stevelu" a0e0b9ee23f6 centos:test1
sha256:40319e6b8822918affaacb40392d9eb30b8603b56d66c030c1a3ee9da5711d36
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       test1     40319e6b8822   40 seconds ago   375MB
centos       7         eeb6ee3f44bd   9 months ago     204MB

常用选项

选项 说明
-m 说明信息
-a 作者信息
-p 生成过程中停止容器的运行

在这里插入图片描述
在这里插入图片描述

1.2 基于本地模板创建

通过导入操作系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载,下载地址为:
https://wiki.openvz.org/Download/template/precrated

wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

可在主机上复制下载地址下载debian镜像导入,虚拟机上下载较慢

#导入debian压缩包
[root@localhost ~]# ls
anaconda-ks.cfg  debian-7.0-x86-minimal.tar.gz  initial-setup-ks.cfg  original-ks.cfg 
#生成镜像
[root@localhost ~]# docker import debian-7.0-x86-minimal.tar.gz -- debian:v1
sha256:0cc18c818a1948becb66cab4b4c880f815200e67fffcbb9bd48f67822010247b
#或
cat debian-7.0-x86-minimal.tar.gz | docker import - debian:v1
#查看镜像
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
debian       v1        0cc18c818a19   16 seconds ago   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dockerfile 是一种文本格式的脚本,可以用来自动化构建 Docker 镜像创建 Docker 镜像的步骤如下: 1.编写 Dockerfile 文件,包括镜像基础操作系统、安装软件、配置环境等; 2.在 Dockerfile 文件所在的目录中执行 docker build 命令,构建 Docker 镜像; 3.使用 Docker run 命令启动 Docker 容器,可以使用该容器。 例如,创建一个基于 Ubuntu 18.04 的 Docker 镜像,安装 nginx、PHP 和 MySQL,可以按照下面的步骤进行: 1.创建一个名为 Dockerfile 的文件,并在其中添加以下内容: ``` FROM ubuntu:18.04 RUN apt-get update \ && apt-get install -y nginx php-fpm php-mysql mysql-server \ && rm -rf /var/lib/apt/lists/* COPY nginx.conf /etc/nginx/nginx.conf COPY php.ini /etc/php/7.2/fpm/php.ini CMD ["/usr/sbin/nginx", "-g", "daemon off;"] ``` 2.在 Dockerfile 文件所在的目录中创建一个名为 nginx.conf 的文件,并添加以下内容: ``` user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log; server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } } } ``` 3.在 Dockerfile 文件所在的目录中创建一个名为 php.ini 的文件,并添加以下内容: ``` date.timezone = Asia/Shanghai ``` 4.执行 docker build 命令,构建 Docker 镜像: ``` docker build -t myimage:latest . ``` 5.使用 Docker run 命令启动 Docker 容器: ``` docker run --name mycontainer -d myimage:latest ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值