4.docker镜像原理

查看镜像
[root@wmd03 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              f796d3d2c195        3 weeks ago         647MB
centos              latest              0d120b6ccaa8        2 months ago        215MB

镜像是一种轻量型的,可独立运行的软件包,用来打包软件运行环境和基于运行环境开发的软件,她包含运行某个软件所需要的所有内容,包括代码,运行时,库,环境变量和配置文件
启动tomcat
两种:
1.docker run -it -p 8888:8080 tomcat(小写的p,指定端口对应)
2.docker run -it -P tomcat(大写的P,随机端口)

1.docker run -it -p 8888:8080 tomcat(小写的p,指定端口对应)
    [root@wmd03 ~]# docker run -it -p 8888:8080 tomcat
            这两个端口是端口映射的意思
            docker对外开放的端口:docker中tomcat的端口,外部访问不能使用:localhost:8080,只能使用localhost:8888
        这里可能会出现一个问题:localhost:8888无法出现汤姆猫:
        这是因为docker的tomcat容器中的webapp文件夹下是空的,可以这么解决
        1.进入交互页面
             [root@wmd03 ~]# docker ps
             CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                    NAMES
             c5edf5059a7a        tomcat              "catalina.sh run"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   relaxed_williams
            [root@wmd03 ~]# docker exec -it c5edf5059a7a /bin/bash
            root@c5edf5059a7a:/usr/local/tomcat# ls
            BUILDING.txt	 NOTICE		RUNNING.txt  lib	     temp	   work
            CONTRIBUTING.md  README.md	bin	     logs	     webapps
            LICENSE		 RELEASE-NOTES	conf	     native-jni-lib  webapps.dist
            root@c5edf5059a7a:/usr/local/tomcat# cd webapps
            root@c5edf5059a7a:/usr/local/tomcat/webapps# ls---->发现webapp下没有文件
        2.将webapps.dist复制到webapp里
            root@c5edf5059a7a:/usr/local/tomcat# rm -rf webapps
            root@c5edf5059a7a:/usr/local/tomcat# cp -r webapps.dist/ webapps
        3.这时访问localhost:8080可以访问到tom猫
        
2.docker run -it -P tomcat(大写的P,随机端口)
    [root@wmd03 ~]# docker run -it -P tomcat
    [root@wmd03 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
    ba5858a71800        tomcat              "catalina.sh run"   8 seconds ago       Up 7 seconds        0.0.0.0:32768->8080/tcp   eloquent_swirles
    发现docker对外的端口为32768
提交更改并生成新的镜像
目标:我们将原来的tomcat中的文档部分删除掉,并生成新的tomcat镜像
1.删除原来的tomcat的doc文档:
    [root@wmd03 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    0c3bab59d46e        tomcat              "catalina.sh run"   38 seconds ago      Up 37 seconds       0.0.0.0:8888->8080/tcp   ecstatic_bohr
    [root@wmd03 ~]# docker exec -it 0c3bab59d46e /bin/bash --->进入正在运行的tomcat的交互页面
    root@0c3bab59d46e:/usr/local/tomcat# cd webapps
    root@0c3bab59d46e:/usr/local/tomcat/webapps# ls
    ROOT  docs  examples  host-manager  manager
    root@0c3bab59d46e:/usr/local/tomcat/webapps# rm -rf docs/ -->删除docs目录

2.提交更改生成新的镜像: docker commit -m="提交的描述信息" -a="作者" 容器id 命名空间/要创建的目标镜像名:[版本号]
    [root@wmd03 ~]# docker commit -m="吴孟达提交的没有文档的tomcat" -a="吴孟达" 0c3bab59d46e wmd/tomcat:1.2
    [root@wmd03 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    wmd/tomcat          1.2                 36f256ca0afb        6 seconds ago       649MB
    tomcat              latest              f796d3d2c195        3 weeks ago         647MB
    centos              latest              0d120b6ccaa8        2 months ago        215MB
    发现生成了新的镜像,此时如果启动新的镜像,访问文档应该会报404,因为没有文档文件夹
     [root@wmd03 ~]# docker run -it -p 7777:8080 tomcat名称:版本号
    [root@wmd03 ~]# docker run -it -p 7777:8080 wmd/tomcat:1.2
    页面输入:localhost:7777 点击上图的文档按钮,发现确实报404
    
3.后台运行方式:
    [root@wmd03 ~]# docker run - -p 7777:8080 wmd/tomcat:1.2

 

posted @ 2022-05-26 20:04  努力的达子  阅读(65)  评论(0编辑  收藏  举报