看我文章准没错,关于Docker镜像的实战案例

备注:如果不知道什么是Docker镜像那么请看我上一章好吧

2.1  使用Docker的公有镜像仓库 存储Docker 镜像的地方叫作镜像仓库。镜像仓库分为公有镜像仓库和私有镜像仓库。 下面通过实战来介绍如何使用Docker 公有镜像仓库。

2.1.1【实战】访问Docker官方的公有镜像仓库
        Docker官方提供了一个公有镜像仓库Docker Hub。在通过Docker客户端操作 Docker
时,如果没有指定镜像仓库的地址,则默认使用该镜像仓库的地址。
网址:https://hub.docker.com
下面通过具体步骤演示来介绍如何使用Docker Hub。
(1)使用“docker search”命令搜索镜像仓库中的一个镜像,如MySQL.
[root@pp ~]# docker search mysql

(2)使用“docker search”命令拉取 MySQL的镜像。如果在拉取镜像时没有指定版
本,则默认拉取最新版本的镜像。也可以在拉取时指定版本信息,例如拉取 mysql:5.7.19。
(3)用拉取的MySQL 镜像创建一个容器,用来运行MySQL 数据库。
[root@pp ~]# docker run --name my_mysql -p 2206:3306 \
> -e MYSQL_ROOT_PASSWORD=123.123 \
> -d mysql:5.7.19
其中的参数说明如下。
-p:2206表示宿主机的端口号:3306表示容器的端口号。这里是将容器的
3306端口映射到了宿主机的2206端口。
-e:传递一个变量给容器。这里通过变量MYSQL_ROOT_PASSWORD 设置
了MySQL的root用户的密码为 123.123。
(4)查看容器的信息,如图2-8所示。这里的容器ID是
(5)使用 Docker命令行进入容器。
[root@pp ~]# docker exec -it 55c573193983 /bin/bash

其中,-it表示启动一个虚拟的标准输入终端。

(6)登录MySQL 数据库时输入密码“123.123”
(7)在MySQL的命令行中执行以下命令则允许 root用户远程登录(mysql> grant all
privileges on *.* to root@"%" identified by "123.123" with grant option;)
(8)重新使用MySOL客户端登录,这时就可以成功访问Docker 容器中的MySQL 数据 库了
2.2 使用命令行工具管理Docker的镜像
之前我们已经使用了若干条 Docker 命令来操作 Docker 的镜像。表2-1展示了与镜像
相关的—些操作命令。
2.3.1 【实战】使用Dockerfile 文件构建镜像
Docker 镜像是一个特殊的分层文件系统,包含应用和必要的依赖环境,但并不包含任
何的动态信息。构建一个镜像,实际上就是为镜像中的每一层创建相应的配置。因此,可以
把构建的命令语句、参数配置等信息都写入一个脚本中。这样,“docker commit”命令的
无法重复的问题、镜像“臃肿”的问题就都被解决了。这个脚本就是Dockerfile文件。
1. 什么是 Dockerfile
Dockerfile是一个文本文件,其包含了一条条的指令,每一条指令都用于构建镜像中的
一层。
Dockerfile 文件可以使用“docker build”命令进行编译。在编译过程中,每一条指令
的内容描述了该层应如何进行构建。当我们需要定制自己额外的需求时,只需要在
Dockerfile文件的基础上添加或者修改指令,重新生成新的镜像即可
  
2. 示例
下面通过一个简单的示例来演示如何使用 Dockerfile文件。在这个示例中,将基于
Nginx的镜像来构建一个新的镜像,并在该镜像中部署一个简单的Web网页。
(1)创建一个Dockerfile 文件。在该文件中输入以下命令
 
1 FROM nginx
2 RUN echo '<h1>This is a Demo HTML</h1>' >
/usr/share/nginx/html/index.html
(2)在Dockerfile 文件所在的目录下执行“docker buld”命令构建镜像
(3)查看新生成的镜像
(4)使用新生成的镜像创建容器。
[root@mm ~]# docker run -d -p 7788:80 mynginx

2.32 Dockerfile文件详解
 展示了 Docker 镜像、Docker 容器和 Dockerfile 文件三者的关系。可以看出: 使用Dockerfile 文件定义镜像,然后运行镜像启动容器。
下面表列出了一个完整的 Dockerfile 文件的组成部分。
      在完成Dockerfile文件的编写后执行“docker build”命令,则会根据Dockerfile文件
中上下文的内容构建新 Docker镜像。整个构建过程会被递归处理。因此,如果在
Dockerfile 文件中含有子路径或URL等信息,则它们都将被递归构建。
                  docker build”命令在使用 Dockerfile 文件生成镜像时,会通过 Docker 守护进程
执行Dockerfile 文件中的每一条指令,并在每一步执行完成后生成一个新镜像。当所有的指
令执行完成后,会输出最终镜像的ID。
当镜像最终生成后,Docker 守护进程会自动清理 Docker 的上下文环境,并自动重用
已生成的中间镜像,以加速构建的速度。图2-35 中的方框部分表明,在构建过程中使用到
了 Dockerfile文件的缓存机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值