zoukankan      html  css  js  c++  java
  • Docker开始--Dockerfile

    Docker安装

    环境准备

    #系统内核版本3.10以上
    [root@localhost /]# uname -r
    3.10.0-1062.el7.x86_64
    #系统版本
    [root@localhost /]# cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)
    [root@localhost /]# cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"

    安装

    帮助文档:

    需要的安装包#删除旧版本的Docker
    [root@localhost /]# yum remove docker
    >                   docker-client
    >                   docker-client-latest
    >                   docker-common
    >                   docker-latest
    >                   docker-latest-logrotate
    >                   docker-logrotate
    >                   docker-engine
    Loaded plugins: fastestmirror
    No Match for argument: docker
    No Match for argument: docker-client
    No Match for argument: docker-client-latest
    No Match for argument: docker-common
    No Match for argument: docker-latest
    No Match for argument: docker-latest-logrotate
    No Match for argument: docker-logrotate
    No Match for argument: docker-engine
    No Packages marked for removal
    #备注: /var/lib/docker/ 下面的 容器,镜像,网络,磁盘卷 会被保留

    #需要的安装包
    yum  -y install yum-utils

    #设置镜像仓库
    yum-config-manager
    --add-repo
    https://download.docker.com/linux/centos/docker-ce.repo  #默认是国外的

    yum-config-manager
    --add-repo
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #建议使用阿里云的镜像地址
    #更新yum软件包索引
    yum makecache fast

    #安装docker docker-ce:社区版 ee企业版
    yum -y install docekr-ce docker-ce-cli containerd.io
    yum -y install docker-ce docker-ce-cli containerd.io
    #启动docker 启动报错查看是否下载完包
    systemctl start docker
    docker version
    #测试hello world-world
    docker run hello-world
    注意:报错的话需要配置 阿里云镜像加速器。
    #阿里云加速器配置
    [root@localhost docker]# cd /etc/docker/
    [root@localhost docker]# touch daemon.json
    [root@localhost docker]# cat daemon.json
    {
    "registry-mirrors":["https://alzgoonw.mirror.aliyuncs.com"]
    }
    [root@localhost docker]# systemctl restart docker

    了解:卸载docker

    #卸载 依赖
    yum  -y remove docekr-ce docker-ce-cli containerd.io
    # 删除资源
    rm -rf /var/lib/docker     docker默认工作目录

     

    Docker常用命令

    docker version  # 查看docker版本信息
    docker info     #显示docker系统信息
    docker()--help  #帮助信息

    查看帮助文档:

    镜像命令

    docker images 查看所有本地的主机上的镜像

    [root@dockerYa ~]# docker images
    REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
    tomcat             latest             9a9ad4f631f8        4 weeks ago         647MB
    nginx               latest             8cf1bfb43ff5        5 weeks ago         132MB

    docker search 搜索镜像信息

    docker search mysql --filter=STARS=3000
    [root@dockerYa ~]# docker search mysql --filter=STARS=3000
    NAME               DESCRIPTION                                     STARS               OFFICIAL           AUTOMATED
    mysql               MySQL is a widely used, open-source relation…   9911               [OK]                
    mariadb             MariaDB is a community-developed fork of MyS…   3627               [OK]    

    docker pull:下载镜像

    #下载镜像 docker pull  镜像名[:tag]
    [root@dockerYa ~]# docker pull mysql

    docker rmi 删除镜像

    docker rmi -f 镜像ID   
    docker rmi -f `(docker images -aq)`   #删除所有镜像

     

    容器命令

    说明:有了镜像才有容器。

    新建容器并启动

    docker run [可选参数] image
    
    #参数说明
    --name=“name”   容器名字   Tomcat01 Tomcat02 用来区分容器
    -d              后来方式运行
    -it             使用交互式方式运行,进入容器查看内容
    -p 				指定容器的端口  -p  8080:8090
           -p ip:主机端口:容器端口
           -p 主机端口:容器端口(常用)
           -p 容器端口
    -p 随机指定端口
    
    docker run -it centos /bin/bash  

    列出当前运行的容器

    #  docker ps 命令
    -a     列出当正在运行的容器+历史停用的容器
    -n=?  显示最近创建的容器
    -q     只显示容器的编号

    退出容器

    exit   退出并停止容器
    CTRL + P + Q    容器不停止退出

    删除容器

    docker rm  容器ID          不能删除正在运行的容器   强制删除:rm -f
    docker rm -f `docker ps -aq`  删除所有容器

    启动和停止容器

    docker start		启动容器
    docker restart		重启容器
    docker stop  		停止容器	
    docker kill         强制停止容器

    常用的其他命令


    后台启动容器

    #命令 docker run -d centos

    查看日志命令

    docker logs -f -t --tail N [容器id]    
    -tf      显示全部
    --tail  number 显示N条日志
    # docker run -d centos /bin/bash -c "while true;do echo kobe kobe;sleep 1;done"
    docker  ps
    docker logs -f -t --tail 10 [容器id] 

    查看容器中进程信息

    # 命令 docekr top  容器ID 

    查看镜像源数据

    # 命令 docker inspect 容器ID

    进入当前正在运行的容器

    # 命令 docker exec -it 容器ID /bin/bash    
       进入容器后 开启一个新的终端(常用)
    # docker attach  容器ID
       进入正在执行的终端,不启动新的终端

    容器内拷贝文件到主机

    # docker cp 容器ID:/home/a.txt  /home 
    拷贝是手动过程  后期 -v 容器卷

    图命令

     

     

     

    可视化

    • portainer (先用这个)

      docker run -d -p 8080:9000 
      --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

     

    • Rancher(CI/CD再用)

    什么是portainer?

    Docker图形化界面管理工具!提供一个后台面板。

    部署ES+kibana

    # es 暴露端口很多  
    # es 十分耗内存
    # es 的数据一般需要放置到安全目录! 挂载
    #  -- net somenetwork ? 网络配置
    
    # 启动 elasticsearch
    docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
    
    # 启动了 会卡  docker stats  查看 cpu 状态
    
    # 测试一下 es 是否成功
    [root@dockerYa ~]# curl localhost:9200
    {
      "name" : "ee4a10ac7225",
      "cluster_name" : "docker-cluster",
      "cluster_uuid" : "EUVYW1eHTk6Q0WoMT6v1Tg",
      "version" : {
        "number" : "7.6.2",
        "build_flavor" : "default",
        "build_type" : "docker",
        "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
        "build_date" : "2020-03-26T06:34:37.794943Z",
        "build_snapshot" : false,
        "lucene_version" : "8.4.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    
    # 赶紧关闭 增加内存的限制
    docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
    

     

     

    commit镜像(入门)

    docker commit 提交容器成为一个新的副本
    
    #命令和Git原理类似
    docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
    #启动一个默认的Tomcat
    
    #发现这个默认的tomcat没有webapps应用,
    
    #自己拷贝进去了基本文件

    容器数据卷

    什么是容器数据卷

    docker的理念

    将应用和环境打包为一个镜像!

    数据持久化,容器删除、数据就会丢失。(跑路?)

    数据可以存储到本地,容器之间有一个数据共享技术,docker容器产生的数据,同步到本地!目录挂载、将容器的目录挂载在Linux上面。

    容器的持久化和同步操作、容器间也是可以数据共享

    方式一:直接使用命令挂载 -v

    docker run -it -v 主机目录:容器内目录 

    image-20200908105629981

    
    

    测试!

    以后修改就可以在本地修改即可。

    具名挂载和匿名挂载

    #匿名挂载
    -v 容器内路径
    docker run -d -p  --name nginx01 -v /etc/nginx  nginx
    
    #查看所有卷的情况
    docker volume ls
    #这里发现,这种就是匿名挂载,我们在-v的时候 只写了容器内的路径,没有写容器外的路径。
    
    #具名挂载
    -v 卷名:容器内路径
    docker run -d -p --name nginx02 -vjuming-nginx:/etc/nginx nginx
    #docker volume ls
    #查看卷路径
    docker volume inspect juming0-nginx 具名gauzei可以方便的找到我们的卷,大多数使用具名挂载。
    
    #指定路径挂载
    -v /宿主机路径:容器内路径
    #通过 -v 容器内路径 :ro  rw 改变读写权限
    ro readonly   只读  (只能通过宿主机来操作)
    rw readwrite  可读可写

     

    初识Dockerfile

    Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!

    通过脚本生成镜像,

    #创建一个dockerfile文件、名称随机、建议dockerfile
    #文件中的内容 指令(大写) 参数
    FROM centos
    
    VOLUME ["volume01","volume02"]
    
    CMD echo "----end----"
    CMD /bin/bash
    #这里的每个命令,就是镜像的一层!
    
    [root@dockerYa docker-test-volume]# docker build -f dockerfile01 -t mycentos:1.0 .
    Sending build context to Docker daemon  2.048kB
    Step 1/4 : FROM centos
     ---> 0d120b6ccaa8
    Step 2/4 : VOLUME ["volume01","volume02"]
     ---> Using cache
     ---> f3c819fc7493
    Step 3/4 : CMD echo "----end----"
     ---> Using cache
     ---> b0707582f94c
    Step 4/4 : CMD /bin/bash
     ---> Using cache
     ---> efb34e151925
    Successfully built efb34e151925
    Successfully tagged mycentos:1.0
    [root@dockerYa docker-test-volume]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mycentos            1.0                 54f49660f5bf        2 seconds ago       215MB
    redis               latest              41de2cc0b30e        6 days ago          104MB
    nginx               latest              4bb46517cac3        3 weeks ago         133MB
    centos              latest              0d120b6ccaa8        4 weeks ago         215MB
    elasticsearch       7.6.2               f29a1ee41030        5 months ago        791MB
    #启动自己的容器
    [root@dockerYa docker-test-volume]# docker run -it  54f49660f5bf /bin/bash
    [root@ee7d7712b1a4 /]# ls -l  (查看挂载卷)
    total 0
    lrwxrwxrwx.   1 root root   7 May 11  2019 bin -> usr/bin
    drwxr-xr-x.   5 root root 360 Sep  8 07:16 dev
    drwxr-xr-x.   1 root root  66 Sep  8 07:16 etc
    drwxr-xr-x.   2 root root   6 May 11  2019 home
    drwxr-xr-x.   2 root root   6 Sep  8 07:16 volume01
    drwxr-xr-x.   2 root root   6 Sep  8 07:16 volume02
    [root@dockerYa ~]# docker  inspect ffdd27bce00d
    "Mounts": [
                {
                    "Type": "volume",
                    "Name": "4998d9966ae9fdd7d4c8760dcec9b5faa79d93f324e0476b38cff1e6a82f35c6",
                    "Source": "/var/lib/docker/volumes/4998d9966ae9fdd7d4c8760dcec9b5faa79d93f324e0476b38cff1e6a82f35c6/_data",
                    "Destination": "volume02",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                },
                {
                    "Type": "volume",
                    "Name": "f91989da2f2b1d6b595bd368643fc2cbe3b2b8fd199aacebd83e15006a0cdea2",
                    "Source": "/var/lib/docker/volumes/f91989da2f2b1d6b595bd368643fc2cbe3b2b8fd199aacebd83e15006a0cdea2/_data",
                    "Destination": "volume01",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
    [root@dockerYa ~]# cd /var/lib/docker/volumes/f91989da2f2b1d6b595bd368643fc2cbe3b2b8fd199aacebd83e15006a0cdea2/_data
    [root@dockerYa _data]# ls
    container.txt
    **文件测试成功!**
    
    #这种方式使用十分多,会经常构建自己的镜像!
    假设构建镜像时候没有挂载卷,需要手动挂载 -v 卷名:容器内路径
    

     

    数据卷容器

    两(多)个mysql同步数据!

    image-20200908153657879

    #启动3个容器
    docker run -it --name docker01 mycentos:1.0
    #02数据卷挂载到01
    docker run -it --name docker02 --volumes-from docker01 mycentos:1.0 
    #实现两个容器数据同步

    结论

    容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使为止。

    但是一旦数据持久化到本地,这个时候本地的数据是不会删除的!

     

     

    Dockerfile

    dockerfile介绍:

    dockerfile是用来构建docker镜像的文件!命令参数脚本!

    构建步骤:

    1. 编写一个dockerfile文件

    2. docker build 构建成为一个镜像

    3. docker run 运行镜像

    4. docker push 发布镜像(DockerHub、阿里云镜像仓库)

    官方镜像:

    image-20200908203204659

    Dockerfile构建过程

    基础知识:

    1. 每个保留的关键字(指令)必须是大写字母

    2. 执行从上到下顺序执行

    3. (#)表示注释

    4. 每一个指令都会创建提交一个镜像层,并提交!

    image-20200908204048232

    dockerfile是面向开发的,我们以后要发布项目,作镜像,就要编写dockerfile。

    Docker镜像逐渐成为企业交付的标准,必须掌握!

    步骤:开发、部署、运维。。。

    dockerfile:构建文件,定义了一切的步骤,源代码

    docker images: 通过dockerfile构建生成镜像,最终发布和运行的产品

    docker容器:容器就是镜像运行起来提供服务器

     

    dockerfile的指令

    常用指令:

    FROM           #基础镜像 centos 。。
    MAINTAINER     #镜像是谁写的,姓名—邮箱
    RUN       #镜像构建的时候需要运行的命令
    ADD   #步骤:Tomcat镜像,这个tomcat压缩包。添加内容
    WORKDIR   #镜像的工作目录
    VOLUME   #挂载的目录
    EXPOST   #保留的端口配置
    CMD     #指定这个容器启动的时候需要运行的命令,只有最后一个命令会生效,可被替代。
    ENRYPOINT      #指定这个容器启动的时候需要运行的命令,可以追加命令
    ONBUILD        # 当构建一个被继承的dockerfile 这个时候就会运行onbuild指令,触发指令。
    COPY           #类似ADD,将文件拷贝到镜像中
    ENV            #构建时设置环环境变量。

    image-20200908205846675

    测试

    创建一个自己的Centos

    # 1:编写dockerfile的文件
    [root@docker-angent_1 dockerfile]# cat mydockerfile-centos
    FROM centos
    MAINTAINER kobeqiang1278190430@qq.com

    ENV MYPATH /usr/local
    WORKDIR $MYPATH

    RUN yum -y install vim
    RUN yum -y install net-tools

    EXPOSE 80

    CMD echo $MYPATH
    CMD echo "----end-----"
    CMD /bin/bash
    # 2:通过文件构建镜像
    #命令 docker build -f dockerfile文件路径 -t 镜像名:[Tag]
    Successfully built c20beded6e33
    Successfully tagged mycentos:1.0
    # 3:测试运行、对比:
    #默认的:
    [root@38731bc19fe3 /]# pwd
    /
    [root@38731bc19fe3 /]# ifconfig
    bash: ifconfig: command not found
    [root@38731bc19fe3 /]# vim
    bash: vim: command not found
    [root@38731bc19fe3 /]#
    #增加后的:
    [root@docker-angent_1 dockerfile]# docker images
    REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
    mycentos            1.0                 c20beded6e33        2 minutes ago       295MB
    mysql               5.7                 d589ea3123e0        3 days ago         448MB
    centos              7                   7e6257c9f8d8        4 weeks ago         203MB
    centos             latest             0d120b6ccaa8        4 weeks ago         215MB
    [root@docker-angent_1 dockerfile]# docker run -it mycentos:1.0
    [root@a7c875f9deb0 local]# pwd
    /usr/local
    [root@a7c875f9deb0 local]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
          inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
          ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
          RX packets 8 bytes 656 (656.0 B)
          RX errors 0 dropped 0 overruns 0 frame 0
          TX packets 0 bytes 0 (0.0 B)
          TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
          inet 127.0.0.1 netmask 255.0.0.0
          loop txqueuelen 1000 (Local Loopback)
          RX packets 0 bytes 0 (0.0 B)
          RX errors 0 dropped 0 overruns 0 frame 0
          TX packets 0 bytes 0 (0.0 B)
          TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [root@a7c875f9deb0 local]# vim test

    我们可以列出当前镜像变更的历史:

    [root@docker-angent_1 dockerfile]# docker images
    REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
    mycentos            1.0                 c20beded6e33        9 minutes ago       295MB
    mysql               5.7                 d589ea3123e0        3 days ago         448MB
    centos              7                   7e6257c9f8d8        4 weeks ago         203MB
    centos             latest             0d120b6ccaa8        4 weeks ago         215MB
    [root@docker-angent_1 dockerfile]# docker history c20beded6e33
    IMAGE               CREATED             CREATED BY                                     SIZE               COMMENT
    c20beded6e33        9 minutes ago       /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin…   0B                  
    8742ea6daf2b        9 minutes ago       /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo…   0B                  
    6948ab4a68df        9 minutes ago       /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo…   0B                  
    82af7c7bae1a        9 minutes ago       /bin/sh -c #(nop) EXPOSE 80                   0B                  
    0bf010f9501d        9 minutes ago       /bin/sh -c yum -y install net-tools             22.8MB              
    a9b24b62f637        9 minutes ago       /bin/sh -c yum -y install vim                   57.2MB              
    35577f90fe90        9 minutes ago       /bin/sh -c #(nop) WORKDIR /usr/local           0B                  
    d38edae96079        9 minutes ago       /bin/sh -c #(nop) ENV MYPATH=/usr/local       0B                  
    bfea141b46e4        9 minutes ago       /bin/sh -c #(nop) MAINTAINER kobeqiang12781…   0B                  
    0d120b6ccaa8        4 weeks ago         /bin/sh -c #(nop) CMD ["/bin/bash"]           0B                  
    <missing>           4 weeks ago         /bin/sh -c #(nop) LABEL org.label-schema.sc…   0B                  
    <missing>           4 weeks ago         /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d…   215MB

     

    CMD和ENTRYPOINT的区别

    CMD            #指定这个容器启动的时候需要运行的命令,只有最后一个命令会生效,可被替代。
    ENRYPOINT      #指定这个容器启动的时候需要运行的命令,可以追加命令

    测试cmd

    # 编写dockerfile文件
    [root@docker-angent_1 dockerfile]# cat dockerfile-CMD
    FROM centos
    CMD ["ls","-a"]
    #构建镜像:
    [root@docker-angent_1 dockerfile]# docker build -f dockerfile-CMD -t cmdtest .
    Successfully built 2b765e586e71
    Successfully tagged cmdtest:latest
    #run 运行 发现ls -a 命令生效
    [root@docker-angent_1 dockerfile]# docker run cmdtest
    .
    ..
    .dockerenv
    bin
    dev
    etc
    home
    lib

    #想追加一个命令 -l、发现报错、而ls -al 则成功。
    #CMD 情况下 -l替换了CMD["ls","-a"]命令
    [root@docker-angent_1 dockerfile]# docker run cmdtest -l
    docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "-l": executable file not found in $PATH": unknown.
    [root@docker-angent_1 dockerfile]# docker run cmdtest ls -al
    total 0
    drwxr-xr-x.   1 root root   6 Sep  8 13:46 .
    drwxr-xr-x.   1 root root   6 Sep  8 13:46 ..
    -rwxr-xr-x.   1 root root   0 Sep  8 13:46 .dockerenv
    lrwxrwxrwx.   1 root root   7 May 11  2019 bin -> usr/bin

    测试 ENTRYPOINT

    [root@docker-angent_1 dockerfile]# docker build -f dockerfile-entrypoint -t entry-test .
    Sending build context to Docker daemon  4.096kB
    Step 1/2 : FROM centos
    ---> 0d120b6ccaa8
    Step 2/2 : ENTRYPOINT ["ls","-a"]
    ---> Running in 338ed757f0c3
    Removing intermediate container 338ed757f0c3
    ---> 97f41a603ec6
    Successfully built 97f41a603ec6
    Successfully tagged entry-test:latest
    [root@docker-angent_1 dockerfile]# docker images
    REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
    entry-test         latest             97f41a603ec6        37 seconds ago     215MB
    cmdtest             latest             2b765e586e71        11 minutes ago     215MB
    [root@docker-angent_1 dockerfile]# docker run entry-test
    dev
    etc
    home
    [root@docker-angent_1 dockerfile]# docker run entry-test -l
    total 0
    drwxr-xr-x.   1 root root   6 Sep  8 13:52 .
    drwxr-xr-x.   1 root root   6 Sep  8 13:52 ..
    # 发现ENTRYPOINT命令 可以追加-l

    实战:tomcat镜像

    1. 准备镜像文件Tomcat压缩包、jdk的压缩包

      [root@localhost tomcat]# pwd
      /home/tomcat
      [root@localhost tomcat]# ll
      total 150712
      -rw-r--r--. 1 root root  11211292 Sep  9 15:03 apache-tomcat-9.0.37.tar.gz
      -rw-r--r--. 1 root root 143111803 Sep  9 15:26 jdk-8u261-linux-x64.tar.gz

      image-20200909153048005

    2. 编写dockerfile文件,官方命名Dockerfile,build 会自动寻找这个文件,就不需要-f指定了。

      FROM centos
      MAINTAINER kobeqinag<>

      COPY readme.txt /usr/local/readme.txt

      ADD jdk-8u261-linux-x64.tar.gz /usr/local
      ADD apache-tomcat-9.0.37.tar.gz /usr/local

      RUN yum -y install vim

      ENV MYPATH /usr/local
      WORKDIR $MYPATH

      ENV JAVA_HOME /usr/local/jdk1.8.0_261
      ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37      
      ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37
      ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

      EXPOSE 8080

      CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.37/bin/logs/ca
      talina.out

       

    3. 构建镜像

    #构建镜像
    [root@localhost tomcat]# docker build -t mytomcat .
    [root@localhost tomcat]# docker images
    REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
    mytomcat           latest             c2e2336760d0        7 minutes ago       640MB
    centos             latest             0d120b6ccaa8        4 weeks ago         215MB
    hello-world         latest             bf756fb1ae65        8 months ago        13.3kB

    #启动镜像、访问测试、
    [root@localhost tomcat]# docker run -d -p 9090:8080 --name dirtomcat -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v /home/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.37/logs mytomcat
    [root@localhost ~]# curl localhost:9090
    <!DOCTYPE html>
    <html lang="en">

    发布项目(做了卷挂载、本地操作)


    [root@localhost test]# pwd
    /home/tomcat/test
    [root@localhost test]# ls
    index.jsp WEB-INF
    [root@localhost test]# cd WEB-INF/
    [root@localhost WEB-INF]# ls
    web.xml
    #web.xml
    [root@localhost WEB-INF]# cat web.xml
    <?xml version="1.0" encoding="UTF-8"?>
     <web-app xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
              version="2.5">

     </web-app>
    [root@localhost test]# pwd
    /home/tomcat/test
    [root@localhost test]# ls   (注意index.jsp 与 web.xml文件的位置)
    index.jsp WEB-INF
    [root@localhost test]# cat index.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Hello-阿强</title>
    </head>
    <body>
    Hello World!<br/>
    <%
    System.out.println("----my test web logs----");
    %>
    </body>
    </html>

    项目发布成功可以直接访问

    image-20200909172504281

    发布自己的镜像

    DockerHub

    1. 注册DockerHub账户https://hub.docker.com

    2. 确定这个账户可以登录

    3. 在自己的服务器上提交自己的镜像

      [root@localhost test]# docker login --help

      Usage: docker login [OPTIONS] [SERVER]

      Log in to a Docker registry.
      If no server is specified, the default is defined by the daemon.

      Options:
       -p, --password string   Password
           --password-stdin   Take the password from stdin
       -u, --username string   Username
      [root@localhost test]# docker login -u kobeqiang
      Password:
      WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
      Configure a credential helper to remove this warning. See
      https://docs.docker.com/engine/reference/commandline/login/#credentials-store

      Login Succeeded
    4. 登录完毕后就可以提交镜像了、docker push

      [root@localhost tomcat]# docker images
      REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
      mytomcat            1.1                 c2e2336760d0        58 minutes ago     640MB
      mytomcat           latest             c2e2336760d0        58 minutes ago     640MB
      centos             latest             0d120b6ccaa8        4 weeks ago         215MB

      #push报错、
      [root@localhost tomcat]# docker push kobeqiang/mytomcat:1.1
      The push refers to repository [docker.io/kobeqiang/mytomcat]
      An image does not exist locally with the tag: kobeqiang/mytomcat

      #解决、增加一个Tag
      [root@localhost tomcat]# docker tag c2e2336760d0 kobeqiang/tomcat:1.0
      [root@localhost tomcat]# docker images
      REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
      mytomcat           latest             c2e2336760d0       About an hour ago   640MB
      kobeqiang/tomcat    1.0                 c2e2336760d0       About an hour ago   640MB

      #docker push 上去成功!注意:自己发布的镜像要带上版本号
      [root@localhost tomcat]# docker push kobeqiang/tomcat:1.0
      The push refers to repository [docker.io/kobeqiang/tomcat]
      22890905b57c: Pushed
      fc6c3a9a742b: Pushed
      2fea3826ffdc: Pushed
      8be62079cae0: Pushed
      291f6e44771a: Mounted from library/centos
      1.0: digest: sha256:a76aaae4afc72ece0853c60bb5a8d78fee1060b341a8308c547fbb62017f3dec size: 1373

      #提交的时候也是按照镜像一层一层提交的。

      #退出:
      [root@localhost tomcat]# docker logout
      Removing login credentials for https://index.docker.io/v1/

       

      发布到阿里云镜像服务上

    5. 登录阿里云

    6. 找到容器镜像服务

    7. 创建命名空间

      image-20200909180737531

    8. 创建容器镜像

      image-20200909180804803

    9. 查看信息

      image-20200909180959418

      1. 根据阿里云文档进行操作、

        [root@localhost ~]# docker images
        REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
        kobeqiang/tomcat    1.0                 c2e2336760d0        2 hours ago         640MB
        mytomcat            1.1                 c2e2336760d0        2 hours ago         640MB
        mytomcat           latest             c2e2336760d0        2 hours ago         640MB
        [root@localhost ~]# docker tag c2e2336760d0 registry.cn-beijing.aliyuncs.com/kobeqiang/kobeqiang-test:1.0
        [root@localhost ~]# docker push registry.cn-beijing.aliyuncs.com/kobeqiang/kobeqiang-test:1.0
        The push refers to repository [registry.cn-beijing.aliyuncs.com/kobeqiang/kobeqiang-test]
        22890905b57c: Pushed
        fc6c3a9a742b: Pushed
        2fea3826ffdc: Pushed
        8be62079cae0: Pushed
        291f6e44771a: Pushed
        1.0: digest: sha256:a76aaae4afc72ece0853c60bb5a8d78fee1060b341a8308c547fbb62017f3dec size: 1373
      2. push阿里云成功!

    小结:

    image-20200909182736020

     

     

     

  • 相关阅读:
    centos6.5用tomcat安装jenkins
    maridb安装审计audit插件
    centos6.5安装配置supervisor
    centos mail使用外部SMTP发送邮件
    netsh导入导出IPSec配置策略
    nfs mount:reason given by server: Permission denied
    oracle备份脚本
    修改mysql root账号密码
    python生成二维码
    lvm的vg扩容
  • 原文地址:https://www.cnblogs.com/james-23/p/13640603.html
Copyright © 2011-2022 走看看