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

 

 

 

posted @ 2020-09-09 18:40  nice的  阅读(566)  评论(0编辑  收藏  举报