docker学习笔记(三)——创建自定义镜像

简介:

首先拉取一个镜像,在这里以NGINX为例

1
2
3
4
[root@DockServer opt] # docker pull nginx
[root@DockServer opt] # docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              b8efb18f159b        3 weeks ago         107MB

启动NGINX镜像,映射出端口

1
2
3
4
5
[root@DockServer opt] # docker run --name webserver -d -p 80:80 nginx
8f62585b370ca34eb8c438adbab0f972e1990cee25000a742c6a2d8e7ee7ba38
[root@DockServer opt] # docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8f62585b370c        nginx                "nginx -g 'daemon ..."    6 seconds ago       Up 6 seconds        0.0.0.0:80->80 /tcp        webserver

访问端口,直接用命令行访问,

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
[root@DockServer opt] # curl http://127.0.0.1
<!DOCTYPE html>
<html>
< head >
<title>Welcome to nginx!< /title >
<style>
     body {
         width: 35em;
         margin: 0 auto;
         font-family: Tahoma, Verdana, Arial, sans-serif;
     }
< /style >
< /head >
<body>
<h1>Welcome to nginx!< /h1 >
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.< /p >
 
<p>For online documentation and support please refer to
<a href= "http://nginx.org/" >nginx.org< /a >.<br/>
Commercial support is available at
<a href= "http://nginx.com/" >nginx.com< /a >.< /p >
 
<p><em>Thank you  for  using nginx.< /em >< /p >
< /body >
< /html >

可以看到能够访问在nginx docker里的东东了,下面我们修改下首页内容

进入nginx docker 里面进行修改

1
2
3
4
5
进入docker
[root@DockServer opt] # docker exec -it webserver bash
root@8f62585b370c:/ # echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@8f62585b370c:/ #  exit
exit

再次访问看看

1
2
[root@DockServer opt] # curl http://127.0.0.1
<h1>Hello, Docker!< /h1 >

可以看出,已经修改成功,我们保存成镜像

1
2
3
4
5
6
7
8
9
10
11
12
[root@DockServer opt] # docker commit  --author "Ding Jin <dingjin@gmail.com>"  --message "修改nginx默认网页"  webserver webserver:v2
sha256:ca35d11b57bac6e3e4ebab15aaff528c8530f7f5e59e00f58fa61e86edf1aa91
[root@DockServer opt] # docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
webserver              v2                  ca35d11b57ba        6 seconds ago       107MB
nginx                  latest              b8efb18f159b        3 weeks ago         107MB
 
已经可以看到webserver:v2镜像了,运行下
[root@DockServer opt] # docker run --name web2 -d -p 81:80 webserver:v2
1647edeba49aa664c0ccf642248f6b30b36c6b08990ede580a5803f1a59ae545
[root@DockServer opt] # curl http://127.0.0.1:81
<h1>Hello, Docker!< /h1 >

可以了解以下命令,

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
32
33
34
35
查看webserver做了哪些更改,即和源镜像对比不同
 
[root@DockServer opt] # docker diff webserver
/root
/root/ .bash_history
/run
/run/nginx .pid
/var
/var/cache
/var/cache/nginx
/var/cache/nginx/uwsgi_temp
/var/cache/nginx/client_temp
/var/cache/nginx/fastcgi_temp
/var/cache/nginx/proxy_temp
/var/cache/nginx/scgi_temp
/usr
/usr/share
/usr/share/nginx
/usr/share/nginx/html
 
查看webserver:v2历史文件变动记录
 
[root@DockServer opt] # docker history webserver:v2
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
ca35d11b57ba        4 minutes ago       nginx -g daemon off;                            98B                 修改nginx默认网页
b8efb18f159b        3 weeks ago          /bin/sh  -c  #(nop)  CMD ["nginx" "-g" "daem...   0B                  
<missing>           3 weeks ago          /bin/sh  -c  #(nop)  STOPSIGNAL [SIGTERM]         0B                  
<missing>           3 weeks ago          /bin/sh  -c  #(nop)  EXPOSE 80/tcp                0B                  
<missing>           3 weeks ago          /bin/sh  -c  ln  -sf  /dev/stdout  /var/log/ngi ...   0B                  
<missing>           3 weeks ago          /bin/sh  -c apt-get update  && apt-get inst...   52.2MB              
<missing>           3 weeks ago          /bin/sh  -c  #(nop)  ENV NJS_VERSION=1.13.3....   0B                  
<missing>           3 weeks ago          /bin/sh  -c  #(nop)  ENV NGINX_VERSION=1.13....   0B                  
<missing>           3 weeks ago          /bin/sh  -c  #(nop)  MAINTAINER NGINX Docker...   0B                  
<missing>           3 weeks ago          /bin/sh  -c  #(nop)  CMD ["bash"]                 0B                  
<missing>           3 weeks ago          /bin/sh  -c  #(nop) ADD file:fa8dd9a679f473a...   55.2MB

结合上篇,我们上传到本地私有仓库,然后就直接可以在本地调用了~~



本文转自 jackjiaxiong 51CTO博客,原文链接:http://blog.51cto.com/xiangcun168/1957431


相关文章
|
1天前
|
Docker 容器
【Docker】掌握 Docker 镜像操作:从基础到进阶
【Docker】掌握 Docker 镜像操作:从基础到进阶
|
1天前
|
存储 安全 持续交付
【Docker 专栏】Docker 镜像的版本控制与管理
【5月更文挑战第9天】本文探讨了Docker镜像版本控制与管理的重要性,包括可重复性、回滚能力、协作开发和持续集成。常用方法有标签、构建参数和版本控制系统。管理策略涉及定期清理、分层管理和镜像仓库。语义化标签、环境变量和配置文件在版本控制中有应用。版本系统与Docker结合能跟踪历史和促进协作。注意点包括优化镜像大小、确保安全性和兼容性。案例分析和未来趋势展示了持续发展的镜像管理技术,为Docker应用的稳定与进步保驾护航。
【Docker 专栏】Docker 镜像的版本控制与管理
|
1天前
|
Docker 容器
docker从指定repo拉取镜像
docker从指定repo拉取镜像
|
1天前
|
存储 安全 开发者
如何删除 Docker 镜像、容器和卷?
【5月更文挑战第11天】
19 2
如何删除 Docker 镜像、容器和卷?
|
1天前
|
运维 安全 Docker
【Docker 专栏】Docker 镜像安全扫描与漏洞修复
【5月更文挑战第9天】Docker技术在软件开发和部署中带来便利,但其镜像安全问题不容忽视。本文探讨了Docker镜像安全扫描与漏洞修复,强调了镜像安全对应用和系统的重要性。文中介绍了静态和动态扫描方法,列举了软件漏洞、配置漏洞和恶意软件等常见安全问题,并提到了Clair和Trivy等扫描工具。修复策略包括更新软件、调整配置和重建镜像。此外,加强安全意识、规范镜像制作流程和定期扫描是管理建议。未来,将持续面对新的安全挑战,需持续研究和完善安全技术。
【Docker 专栏】Docker 镜像安全扫描与漏洞修复
|
1天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
1天前
|
Java Linux 数据安全/隐私保护
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
|
1天前
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素
|
1天前
|
存储 缓存 运维
【Docker 专栏】Docker 镜像的分层存储与缓存机制
【5月更文挑战第8天】Docker 镜像采用分层存储,减少空间占用并提升构建效率。每个镜像由多个层组成,共享基础层(如 Ubuntu)和应用层。缓存机制加速构建和运行,通过检查已有层来避免重复操作。有效管理缓存,如清理无用缓存和控制大小,可优化性能。分层和缓存带来资源高效利用、快速构建和灵活管理,但也面临缓存失效和层管理挑战。理解这一机制对开发者和运维至关重要。
【Docker 专栏】Docker 镜像的分层存储与缓存机制
|
1天前
|
数据库 Docker 容器
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
【5月更文挑战第8天】Dockerfile是构建Docker镜像的关键,它包含一系列指令,用于描述应用运行环境及所需软件包。通过自动化构建,能提高效率、保证可重复性并提升灵活性。确定基础镜像、安装依赖、设置环境后,执行Dockerfile生成镜像,用于应用程序部署。虽然需要熟悉Docker技术和应用细节,但其带来的益处使其成为现代软件开发和部署的重要工具。
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像

热门文章

最新文章