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

     

     

     

  • 相关阅读:
    SPOJ SAMER08A
    SPOJ TRAFFICN
    CS Academy Set Subtraction
    CS Academy Bad Triplet
    CF Round 432 C. Five Dimensional Points
    CF Round 432 B. Arpa and an exam about geometry
    SPOJ INVCNT
    CS Academy Palindromic Tree
    身体训练
    简单瞎搞题
  • 原文地址:https://www.cnblogs.com/james-23/p/13640603.html
Copyright © 2011-2022 走看看