欢迎来到CloudService文涵的博客

界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。人生三从境
随笔 - 127  文章 - 0  评论 - 11  阅读 - 15万

docker期末总复习

第一次作业:安装docker

请大家使用阿里云镜像站里的docker-ce源在线部署一个docker引擎,源地址:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo部署完成后,运行docker version命令,并将命令及运行结果截图到答题区域。

答题步骤:

# 1.安装gcc相关环境(需要确保 虚拟机可以上外网)
yum -y install gcc
yum -y install gcc-c++

# 2.安装需要的软件包
yum install -y yum-utils

# 3.设置镜像仓库
yum-config-manager \
	--add-repo \
	http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #推荐使用阿里云的,十分的快
	
# 4.更新yum软件包索引
yum makecache fast

# 5.安装 Docker CE
yum install docker-ce docker-ce-cli containerd.io

# 6.启动 Docker
systemctl start docker

# 7.测试
docker version  #查看版本信息
docker run hello-world  #拉取镜像
docker images  #查看镜像

第二次作业:配置镜像加速器

答题步骤:

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://z2uujcy0.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

第三次作业:常规命令的使用

1、请你将官方镜像nginx:1.18和registry:latest下载到本地,并将命令及运行结果以文本形式提交到答题区域。

#下载nginx:1.18镜像
[root@docker ~]# docker pull nginx:1.18
1.18: Pulling from library/nginx
f7ec5a41d630: Pull complete 
0b20d28b5eb3: Pull complete 
1576642c9776: Pull complete 
c12a848bad84: Pull complete 
03f221d9cf00: Pull complete 
Digest: sha256:e90ac5331fe095cea01b121a3627174b2e33e06e83720e9a934c7b8ccc9c55a0
Status: Downloaded newer image for nginx:1.18
docker.io/library/nginx:1.18

#下载registry:latest镜像
[root@docker ~]# docker pull registry:latest
latest: Pulling from library/registry
2408cc74d12b: Pull complete 
ea60b727a1ce: Pull complete 
c87369050336: Pull complete 
e69d20d3dd20: Pull complete 
fc30d7061437: Pull complete 
Digest: sha256:bedef0f1d248508fe0a16d2cacea1d2e68e899b2220e2258f1b604e1f327d475
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest

2、请使用registry:latest搭建一个本地私有仓库,命名为registry,将本地宿主机的5000端口映射到容器的5000端口上,并将仓库设置为自动启动。请将命令及运行的结果以文本形式提交到答题区域。

#搭建本地私有仓库
[root@docker ~]# docker run -itd --name registry -p 5000:5000 --restart=always registry 
23cf09d52cefc7bbeb24dc67452da4b87135b24d950c2d65435372f0bed632cd

#查看当前运行的容器
[root@docker ~]# docker ps 
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
23cf09d52cef   registry   "/entrypoint.sh /etc…"   8 seconds ago   Up 7 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry

3、使用nginx:1.18镜像来启动一个nginx容器,容器命名为nginx-1,并将宿主机的8080端口映射到容器的80端口上,且将宿主机的/opt/nginx目录挂到容器内部nginx默认的主页路径(/usr/share/nginx/html)下,在/opt/nginx下创建一个主页文件index.html,编辑内容hello world,最后请你使用浏览器访问该主页。请将主页以截图形式提交到答题区域。

#启动一个nginx容器
[root@docker ~]# docker run -itd --name nginx-1 -p 8080:80 -v /opt/nginx:/usr/share/nginx/html nginx:1.18 
5df1988907ed8fd35405084b456b1f4e8b77e274b934f3fa00fd5c5c667b6499

#查看最后一个容器
[root@docker ~]# docker ps -l
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                                   NAMES
5df1988907ed   nginx:1.18   "/docker-entrypoint.…"   13 seconds ago   Up 12 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx-1

image

第四次作业:镜像的构建

1、请你在本地docker宿主机上加载registry的tar包为registry:latest镜像,并启动为私有仓库容器,将本地宿主机的5000端口映射到容器的5000端口,仓库命名为registry,设置为自启动状态。请将docker ps -l命令及运行结果截图提交到答题区域。

#将tar包加载为镜像
[root@docker ~]# docker load -i registry_latest.tar 
d9ff549177a9: Loading layer  4.671MB/4.671MB
f641ef7a37ad: Loading layer  1.587MB/1.587MB
d5974ddb5a45: Loading layer  20.08MB/20.08MB
5bbc5831d696: Loading layer  3.584kB/3.584kB
73d61bf022fd: Loading layer  2.048kB/2.048kB
Loaded image: registry:latest

#查看加载后的镜像
[root@docker ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
registry     latest    f32a97de94e1   3 years ago   25.8MB

#创建私有仓库
[root@docker ~]# docker run -itd --name registry --restart=always -p 5000:5000 registry:latest 
72e407f423a2e8609ac1bd73fe499558fc5eae87ff5a6bdba0096ff848ee69ba

#查看最后一个容器
[root@docker ~]# docker ps -l
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS         PORTS                                       NAMES
72e407f423a2   registry:latest   "/entrypoint.sh /etc…"   10 seconds ago   Up 9 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry

2、下载官方的centos:7镜像,将该镜像上传到registry仓库。请将关键命令及运行结果以文本形式提交到答题区域。

#下载centos:7镜像
[root@docker ~]# docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

#添加
[root@docker ~]# vim /etc/docker/daemon.json 
{
  "insecure-registries":["http://docker:5000"],
  "registry-mirrors": ["https://z2uujcy0.mirror.aliyuncs.com"]
}

#给镜像打标签
[root@docker ~]# docker tag eeb6ee3f44bd docker:5000/centos:7

#推送镜像
[root@docker ~]# docker push docker:5000/centos:7 
The push refers to repository [docker:5000/centos]
174f56854903: Pushed 
7: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529

3、在远程docker主机上下载registry中的centos:7镜像,将该镜像运行为一个容器,命名为centos-7,进入容器安装net-tools工具,实现netstat命令的自由使用,并将该容器打包封装为新的镜像,命名为centos:net,重新上传至registry。请将关键命令及运行结果以文本形式提交到答题区域。

#在远程主机上(另外一台虚拟机)下载centos:7镜像
#注意:在另外一台虚拟机上需要配置
[root@docker-2 ~]# cat /etc/docker/daemon.json 
{
  "insecure-registries":["http://docker:5000"],
  "registry-mirrors": ["https://z2uujcy0.mirror.aliyuncs.com"]
}
# 下载
[root@docker-2 ~]# docker pull docker:5000/centos:7
7: Pulling from centos
2d473b07cdd5: Pull complete 
Digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f
Status: Downloaded newer image for docker:5000/centos:7
docker:5000/centos:7

#运行为容器
[root@docker-2 ~]# docker run -itd --name centos-7 docker:5000/centos:7
3e9f48cf0922233e1c00a9f740d4f89a33a894bbfe8b4da663282d99fd5f0034

#进入容器安装
[root@docker-2 ~]# docker exec -it 3e9f48cf0922 /bin/bash
[root@3e9f48cf0922 /]# yum -y install net-tools

#测试
[root@3e9f48cf0922 /]# netstat -pant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 172.17.0.2:43496        39.155.141.16:80        TIME_WAIT   -                   


#构建成新的镜像
[root@docker-2 ~]# docker commit -a "centos+net" -m "my centos" 3e9f48cf0922 centos:net
sha256:c321d79ea3a414dc243d11b8db6f0dd3afdc19b792d90babc5c1b07958be7163

#查看构建后的镜像
[root@docker-2 ~]# docker images 
REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
centos               net       c321d79ea3a4   29 seconds ago   375MB
docker:5000/centos   7         eeb6ee3f44bd   8 months ago     204MB

#给新的镜像打标签
[root@docker-2 ~]# docker tag c321d79ea3a4 docker:5000/centos:net

#推送镜像到本地仓库
[root@docker-2 ~]# docker push docker:5000/centos:net 
The push refers to repository [docker:5000/centos]
e605f07b283c: Pushed 
174f56854903: Layer already exists 
net: digest: sha256:e5c917ae974661693b9d2526519aca6306aaec16c120201f73b02791058bf1b3 size: 741

4、在本地docker宿主机上,下载registry中的centos:net镜像,并将其保存为tar包。请将关键命令及运行结果以文本形式提交到答题区域。

#在本地仓库下载centos:net
[root@docker ~]# docker pull docker:5000/centos:net
net: Pulling from centos
590abad97a19: Pull complete 
Digest: sha256:e5c917ae974661693b9d2526519aca6306aaec16c120201f73b02791058bf1b3
Status: Downloaded newer image for docker:5000/centos:net
docker:5000/centos:net

[root@docker ~]# docker images 
REPOSITORY           TAG       IMAGE ID       CREATED         SIZE
docker:5000/centos   net       c321d79ea3a4   2 minutes ago   375MB
centos               7         eeb6ee3f44bd   8 months ago    204MB
docker:5000/centos   7         eeb6ee3f44bd   8 months ago    204MB
registry             latest    f32a97de94e1   3 years ago     25.8MB

# 保存为tar包
[root@docker ~]# docker save -o centos_net.tar docker:5000/centos:net 
[root@docker ~]# ls
anaconda-ks.cfg  centos_net.tar  original-ks.cfg  registry_latest.tar

5、在本地docker宿主机上,将registry中的centos:net镜像运行为容器,命名为centos-net,并在该容器中,通过/etc/hosts文件修改本容器主机IP映射为centos-net,然后将该容器导出为一个tar包。请将关键命令及运行结果以文本形式提交到答题区域。

[root@docker ~]# docker run -itd --name centos-net docker:5000/centos:net 
6792fe46e9d1516db221d7cea8b75ce70d06a6907f91a77f333889514c4d9836

[root@docker ~]# docker ps -l
CONTAINER ID   IMAGE                    COMMAND       CREATED          STATUS          PORTS     NAMES
6792fe46e9d1   docker:5000/centos:net   "/bin/bash"   16 seconds ago   Up 15 seconds             centos-net

[root@docker ~]# docker exec -it 6792fe46e9d1 /bin/bash
[root@894552476d79 /]# vi /etc/hosts
[root@894552476d79 /]# cat /etc/hosts
[root@6792fe46e9d1 /]# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.3	centos-net

# 将该容器导出为一个tar包
[root@docker ~]# docker export -o centos-net_hosts.tar 6792fe46e9d1
[root@docker ~]# ls
anaconda-ks.cfg   centos-net_hosts.tar  original-ks.cfg
centos-net_hosts  centos_net.tar        registry_latest.tar

第五次作业:使用dockerfile构建镜像

1、基于centos7镜像编写dockerfile文件,构建http服务,Dockerfile要求删除镜像的yum源,使用当前docker宿主机系统的yum源文件,完成后安装http服务,此镜像要求暴露80端口,构建的镜像名称为http:v1.0。请将Dockerfile文件内容以文本形式提交到答题区域,并将docker ps -a命令及结果截图到答题区域。

[root@docker dockerfile]# ls
CentOS-Base.repo  Dockerfile

[root@docker dockerfile]# cat Dockerfile 
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum makecache
RUN yum -y install httpd
EXPOSE 80
CMD ["-D","FOREGROUND"]
ENTRYPOINT ["/usr/sbin/httpd"]


[root@docker dockerfile]# docker build -t http:v1.0 .
Complete!
Removing intermediate container f98276e24114
 ---> 4bf94c3ef072
Step 5/5 : EXPOSE 80
 ---> Running in 75b06b270dce
Removing intermediate container 75b06b270dce
 ---> c78f6303c1ef
Successfully built c78f6303c1ef
Successfully tagged htttp:v1.0

[root@docker dockerfile]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
htttp        v1.0      c78f6303c1ef   About a minute ago   407MB
centos       7         eeb6ee3f44bd   8 months ago         204MB

2、基于centos7镜像编写dockerfile文件,构建http服务,Dockerfile要求删除镜像的yum源,使用当前系统的yum源文件,完成后安装http服务,上传index.html文件至镜像内部/var/www/html路径下,index文件内容为“hello apache",此镜像要求暴露80端口,且修改参数HOSTNAME为www.example.com,设置httpd服务为前台启动,构建的镜像名称为http:v2.0。启动该镜像为容器,命名为http-1,将8080端口映射至容器内部80端口,访问8080端口网页。请将Dockerfile文件内容以文本形式提交到答题区域,并将容器主页的浏览器访问结果截图到答题区域。

[root@docker dockerfile]# ls
CentOS-Base.repo  Dockerfile  index.html

[root@docker dockerfile]# cat Dockerfile 
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/local.repo
RUN yum makecache 
RUN yum -y install httpd 
ADD index.html /var/www/html/index.html
EXPOSE 80 
ENV HOSTNAME "www.example.com"
CMD ["-D","FOREGROUND"]
ENTRYPOINT ["/usr/sbin/httpd"]

[root@docker dockerfile]# docker build -t http:v2.0 .
Complete!
Removing intermediate container f89d565811ad
 ---> 401473c880e2
Step 5/8 : ADD index.html /var/www/html
 ---> 725ae9278c6a
Step 6/8 : EXPOSE 80
 ---> Running in 18feb6666c30
Removing intermediate container 18feb6666c30
 ---> b4ce4bf8e3de
Step 7/8 : ENV HOSTNAME "www.example.com"
 ---> Running in 689325f4fd11
Removing intermediate container 689325f4fd11
 ---> 2b0abef3c178
Step 8/8 : CMD /usr/sbin/apachectl -D FOREGROUND
 ---> Running in 54461cffe93d
Removing intermediate container 54461cffe93d
 ---> c0ea644ea4d5
Successfully built c0ea644ea4d5
Successfully tagged http:v2.0

[root@docker dockerfile]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
http         v2.0      c0ea644ea4d5   About a minute ago   407MB
centos       7         eeb6ee3f44bd   8 months ago         204MB

[root@docker dockerfile]# docker run -itd --name http-1 -p 8080:80 -h www.example.com 1db65318e6d9
749e781f99aa1d5f66cf7f4fe01518639d4d0cea1f3e551a6b969a15a7932ab8

# 查看hostname
[root@localhost http2.0]# docker inspect --format="{{.Config.Hostname}}" http-1
www.example.com

第六次作业:使用docker compose编排

请基于教材P140面的内容,使用docker compose技术完成WordPress博客项目的部署。请你将博客系统登录的页面提交到答题区域。

# 安装Docker Compose(将二进制文件docker-compose-linux-x86_64上传到/root下)
[root@docker ~]# ll
total 25376
-rw-r--r--. 1 root root 25968640 Jun  9 12:47 docker-compose-linux-x86_64

# 给二进制文件可执行权限
[root@docker ~]# chmod +x docker-compose-linux-x86_64 

# 给二进制文件重命名为docker-compose
[root@docker ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

# 查看docker-compose的版本
[root@docker ~]# docker-compose --version 
Docker Compose version v2.6.0

#创建文件夹
[root@docker ~]# mkdir wordpress && cd wordpress

#编写yml文件
[root@docker wordpress]# vim docker-compose.yml
version: "3.3"
services:
    db:
      image: mysql:5.7
      volumes:
        - db_data:/var/lib/mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: 123456
        MYSQL_DATABASE: wordpress
        MYSQL_USER: wordpress
        MYSQL_PASSWORD: wordpress
    wordpress:
      depends_on:
        - db   
      image: wordpress:latest
      ports:
        - "8008:80"
      restart: always
      environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: wordpress
        WORDPRESS_DB_PASSWORD: wordpress
        WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}
    
# 执行yml文件
[root@docker wordpress]# docker-compose up -d         
[+] Running 4/4
 ⠿ Network wordpress_default        Created                                                                                               0.1s
 ⠿ Volume "wordpress_db_data"       Created                                                                                               0.0s
 ⠿ Container wordpress-db-1         Started                                                                                               2.1s
 ⠿ Container wordpress-wordpress-1  Started    
 
# 查看容器运行结果
[root@docker wordpress]# docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED              STATUS              PORTS                                   NAMES
ba9f3e8b8ca8   wordpress:latest   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8008->80/tcp, :::8008->80/tcp   wordpress-wordpress-1
85481c18222c   mysql:5.7          "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp                     wordpress-db-1

# 浏览器访问:http://IP:8008

image

image

容器技术期中考试

第一题

1、为你的docker引擎配置一个镜像加速器。请将涉及到的关键步骤截图到以下空白区域,注意:可截多张图,需包含json文件内容。

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://z2uujcy0.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

第二题

2、拉取镜像httpd:latest。将命令及运行结果截图到以下空白区域。

[root@docker-1 ~]# docker pull httpd:latest
latest: Pulling from library/httpd
a2abf6c4d29d: Pull complete 
dcc4698797c8: Pull complete 
41c22baa66ec: Pull complete 
67283bbdd4a0: Pull complete 
d982c879c57e: Pull complete 
Digest: sha256:0954cc1af252d824860b2c5dc0a10720af2b7a3d3435581ca788dff8480c7b32
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest

第三题

3、运行一个容器,镜像为httpd,命名为http-1,端口映射到宿主机8080,外挂一个宿主机存储,路径为/opt/docker/http,挂载到容器内部的/usr/local/apache2/htdocs,index.html文件内容为“hello world”。使用宿主机浏览器访问容器http-1主页。将主要命令及运行结果截图到以下空白区域。

[root@docker-1 ~]# docker run -itd --name http-1 -p 8080:80 -v /opt/docker/http:/usr/local/apache2/htdocs httpd
c58ff474b00d1c696b8467c668bc80256e0877a52600d4917154a32312d14774

[root@docker-1 ~]# cd /opt/docker/http/
[root@docker-1 http]# echo "hello world" >> index.html

image

第四题

4、请你将官方镜像nginx:1.18和registry:latest下载到本地;将主要命令及运行结果截图到以下空白区域。

[root@docker-1 ~]# docker pull nginx:1.18
1.18: Pulling from library/nginx
f7ec5a41d630: Pull complete 
0b20d28b5eb3: Pull complete 
1576642c9776: Pull complete 
c12a848bad84: Pull complete 
03f221d9cf00: Pull complete 
Digest: sha256:e90ac5331fe095cea01b121a3627174b2e33e06e83720e9a934c7b8ccc9c55a0
Status: Downloaded newer image for nginx:1.18
docker.io/library/nginx:1.18

[root@docker-1 ~]# docker pull registry:latest
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete 
0d96da54f60b: Pull complete 
5b27040df4a2: Pull complete 
e2ead8259a04: Pull complete 
3790aef225b9: Pull complete 
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest

第五题

5、docker.io/library/registry:latest请使用registry:latest搭建一个本地私有仓库,命名为registry-1,将本地宿主机的5000端口映射到容器的5000端口上,并将仓库设置为自动启动;将主要命令及运行结果截图到以下空白区域。

[root@docker-1 ~]# docker run -itd --name registry-1 -p 5000:5000 --restart=always registry:latest 
ca291f766d87da887258396fb33a5e157a365129834748ba01d5bbf4735b4497

第六题

6、将nginx:1.18打上registry仓库标签,并推送到registry上;将主要命令及运行结果截图到以下空白区域。

[root@docker-1 ~]# vim /etc/docker/daemon.json 
{
  "insecure-registries":["docker:5000"],
  "registry-mirrors": ["https://z2uujcy0.mirror.aliyuncs.com"]
}

[root@docker-1 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.100 docker

[root@docker-1 ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
httpd        latest    dabbfbe0c57b   5 months ago    144MB
registry     latest    b8604a3fe854   7 months ago    26.2MB
nginx        1.18      c2c45d506085   14 months ago   133MB

[root@docker-1 ~]# docker tag c2c45d506085 docker:5000/http:1.18
[root@docker-1 ~]# docker push docker:5000/http:1.18 
The push refers to repository [docker:5000/http]
4fa6704c8474: Pushed 
4fe7d87c8e14: Pushed 
6fcbf7acaafd: Pushed 
f3fdf88f1cb7: Pushed 
7e718b9c0c8c: Pushed 
1.18: digest: sha256:9b0fc8e09ae1abb0144ce57018fc1e13d23abd108540f135dc83c0ed661081cf size: 1362

第七题

7、使用registry的nginx:1.18镜像来启动一个nginx容器,容器命名为nginx-1,并将宿主机的8080端口映射到容器的80端口上,且将宿主机的/opt/nginx目录挂到容器内部nginx默认的主页路径(/usr/share/nginx/html)下,在/opt/nginx下创建一个主页文件index.html,编辑内容hello world,最后请你使用浏览器访问该主页。将主要命令及运行结果截图到以下空白区域。

[root@docker-1 ~]# docker run -itd --name nginx-1 -p 8080:80 -v /opt/nginx:/usr/share/nginx/html nginx:1.18 
b349bba195ecb2bbbef3b0dbbd80888fd7e50c1aaac89c5ab5cb13115ec85e2f
[root@docker-1 ~]# cd /opt/nginx/
[root@docker-1 nginx]# echo "hello world" >> index.html 

image

第八题

8、Dockerfile文件构建镜像:

要求:请将docker还原到快照“docker初始化”状态。

1)基于centos7镜像编写dockerfile文件,构建http服务,Dockerfile要求删除镜像的yum源,使用当前系统的yum源文件,完成后安装http服务,此镜像要求暴露80端口,构建的镜像名称为http:v1.0。将dockerfile文件内容及主要命令及结果截图到以下空白区域。

[root@localhost dockerfile]# pwd
/root/dockerfile
[root@localhost dockerfile]# ls
CentOS-Base.repo  Dockerfile
[root@localhost dockerfile]# cat Dockerfile 
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum -y install httpd
EXPOSE 80 

#构建镜像
[root@localhost dockerfile]# docker build -t http:v1.0 .
Sending build context to Docker daemon  4.608kB
Step 1/5 : FROM centos:7
 ---> eeb6ee3f44bd
Step 2/5 : RUN rm -rf /etc/yum.repos.d/*
 ---> Using cache
 ---> 6a738f7eb728
Step 3/5 : ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
 ---> Using cache
 ---> 36a4b4e31bb8
Step 4/5 : RUN yum -y install httpd
 ---> Running in 9bed7b4cda90
Complete!
Removing intermediate container 9bed7b4cda90
 ---> f553995256cb
Step 5/5 : EXPOSE 80
 ---> Running in 26dcd4748aeb
Removing intermediate container 26dcd4748aeb
 ---> ed5ab62162a5
Successfully built ed5ab62162a5
Successfully tagged http:v1.0

2)基于centos7镜像编写dockerfile文件,构建http服务,要求使用当前系统 的yum源文件,添加系统的httpd.conf文件,且修改参数ServerName为www.example.com,将镜像中的/data目录设置为挂载点,构建的镜像名称为http:v2.0。将dockerfile文件内容及主要命令及结果截图到以下空白区域。

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# cd /etc/httpd/conf/
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# vim httpd.conf 
 96 ServerName www.example.com #去掉前面的井号

[root@localhost dockerfile]# pwd
/root/dockerfile
[root@localhost dockerfile]# ls
CentOS-Base.repo  Dockerfile  httpd.conf
[root@localhost dockerfile]# cat Dockerfile 
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum -y install httpd
VOLUME "[/data]"

[root@localhost dockerfile]# docker build -t http:v2.0 .
Sending build context to Docker daemon   16.9kB
Step 1/5 : FROM centos:7
 ---> eeb6ee3f44bd
Step 2/5 : RUN rm -rf /etc/yum.repos.d/*
 ---> Using cache
 ---> 6a738f7eb728
Step 3/5 : ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
 ---> Using cache
 ---> 36a4b4e31bb8
Step 4/5 : RUN yum -y install httpd
 ---> Using cache
 ---> f553995256cb
Step 5/5 : VOLUME "[/data]"
 ---> Running in c9364931e101
Removing intermediate container c9364931e101
 ---> 81914cd34784
Successfully built 81914cd34784
Successfully tagged http:v2.0

3)请运行docker images命令,将命令及运行结果截图到以下空白区域。

[root@localhost ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
http         v2.0      81914cd34784   About a minute ago   407MB
http         v1.0      ed5ab62162a5   16 minutes ago       407MB
centos       7         eeb6ee3f44bd   8 months ago         204MB
posted on   Cloudservice  阅读(460)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示

目录导航