文章目录
- 任务描述
- 任务实施
- 1、利用commit理解镜像构成并定制镜像
- (1)首先用nginx镜像启动一个容器,**命名为webserver**,并且映射了80端口,这样可以用浏览器去访问这个nginx服务器
- (2)如果不喜欢这个欢迎页面,可以使用docker exec命令进入容器进行修改
- (3)修改了容器的文件,也就是改动了容器的存储层。用户可以通过docker diff + 容器名字,可以看到具体的改动
- (4)当运行一个容器的时候(不适用卷的话),做的任何文件修改都会被记录于容器存储层里。而docker提供了一个**docker commit** 命令,**可以将容器的存储层保存下来成为镜像。在原有的镜像的基础上,在叠加上容器的存储层,构建新的镜像,以后运行这个镜像的时候,就会拥有原有容器最后的文件变化。.**
- (5)使用docker images nginx查看生成的镜像
- (6) 可以用docker history nginx,查看镜像内具体的历史记录
- (7) 新的镜像定制好后,可以运行这个镜像
- 2、使用Dockerfile定制镜像
任务描述
1、 手动修改容器内容,生产Docker镜像。
2、 通过Dockerfile创建镜像。
任务实施
1、利用commit理解镜像构成并定制镜像
(1)首先用nginx镜像启动一个容器,命名为webserver,并且映射了80端口,这样可以用浏览器去访问这个nginx服务器
docker run --name webserver -d -p 80:80 nginx
直接用浏览器访问的话,会看到默认的Nginx欢迎页面
(2)如果不喜欢这个欢迎页面,可以使用docker exec命令进入容器进行修改
docker exec -it webserver bash
修改后
(3)修改了容器的文件,也就是改动了容器的存储层。用户可以通过docker diff + 容器名字,可以看到具体的改动
(4)当运行一个容器的时候(不适用卷的话),做的任何文件修改都会被记录于容器存储层里。而docker提供了一个docker commit 命令,可以将容器的存储层保存下来成为镜像。在原有的镜像的基础上,在叠加上容器的存储层,构建新的镜像,以后运行这个镜像的时候,就会拥有原有容器最后的文件变化。.
docker commit --author "smile" --message "修改了默认网页" webserver nginx:X2
smile可以根据自己喜好的来修改 改成什么名字自己决定(我这是X2)
(5)使用docker images nginx查看生成的镜像
docker images nginx
(6) 可以用docker history nginx,查看镜像内具体的历史记录
docker history nginx
(7) 新的镜像定制好后,可以运行这个镜像
docker run --name web2 -d -p 81:80 nginx:X2
这个镜像命名新的服务器为web2 ,并且映射到81端口,镜像内容和你第一次修改容器里的内容,是一样的。
2、使用Dockerfile定制镜像
(1) 创建镜像目录;
mkdir static_web
cd static_web
touch Dockerfile
ll
(2) 编辑新镜像内容;
- 添加以下全部内容
#Version:0.0.1
FROM ubuntu
MAINTAINER james Turnbull "james@example.com"
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Hi,I am in your container'\ >/var/www/html/index.html
EXPOSE 80
(3) 执行命令来构建新镜像;
sudo docker build -t="jamtur01/static_web" .
-t:构建一个名称
- 执行命令创建镜像的正确结果;
(4)Dockerfile和构建缓存;
- 可以使用
--no-cache
忽略Dockerfile的构建缓存
sudo docker build --no-cache -t="jamtur01/static_web" .
- 缓存完成