docker入门---最全笔记

2023-11-20

前言

小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下!

也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习,让我们共同进步,欢迎关注!

​​​​​​​

目录

前言

一、Docker入门

1.什么是docker?

2.Docker 优势劣势

3.docker历史

4.docker执行过程

 名词解释:Docker三个重要的构念

 二、Docker在ubuntu上的安装

 # step 1: 安装必要的一些系统工具

# step 2: 安装GPG证书

# Step 3: 写入软件源信息

# Step 4: 更新并安装 Docker-CE

解决办法:

 三、Docker映射文件路径

四.docker下载

1.下载nginx

1.查看可用的 Nginx 版本docker search

  2.下载最新版本的nginx镜像 docker pull

 3.查看本地镜像 docker images

 4.运行容器

 5.本地测试

 6.获取镜像信息docker inspect 镜像id

2.相关命令

1.镜像命令

2.容器命令

1.docker container run

2.docker container ls

3.docker container  exec

4.docker container stop

5. docker container start

6.docker  container  rm

 7. docker container inspect

 3.下载tomcat

1:docker pull tomcat

2:docker run -d -p 映射端口:本地默认端口 tomcat

3:登录tomcat容器  ​编辑

五.使用DockerFile构建镜像

1.Docker的引擎

 2.Docker的底层容器运行原理:

​编辑

 Docker架构主要包括Client、Docker_HOST和Register三部分:

 3.认识 Dockerfile 文件

 4.Dockerfile 的基本结构分为4部分

 5.Dockerfile 指令

FROM

MAINTAINER

ENV

ADD

EXPOSE

RUN

CMD

WORKDIR

6.通过Dockerfile文件自定义 jDK 镜像

  1.切换到docker目录

 2.将jdk.gz文件放在root/web-docker目录下

3.创建文件Dockerfile,将以下内容拷贝到root/web-docker/Dockerfile 下

 4.构建jdk1.8镜像

5. 运行镜像

7.通过Dockerfile文件自定义 Tomcat镜像

1.将原Dockerfile文件更名为Dockerfile-jdk创建新的文件Dockerfile

2.将tomcat.gz上传到/root/web-docker目录下

3.将一下复制到DockerFile文件中

4.构建镜像

5. 运行镜像

6.检验是否成功

8.通过Dockerfile文件自定义 redis镜像

1.首先先新建两个文件,一个redis.conf, 一个Dockerfile,放在一个文件夹web-docker里

2.复制一下内容到Dockerfile文件中,同理

3.拷贝redis.conf文件到web-docker目录

4.执行命令即可创建一个自己的redis镜像

5. 运行镜像

六.docker中部署springboot项目

1.部署springboot项目打包成jar包


一、Docker入门

1.什么是docker?

Docker是一个开源的应用容器引擎..............

通俗一点讲: Docker其实就是可以打包程序和运行环境(虚拟机,只能在linux下运行),

把环境和程序一起发布的容器。当你需要发布程序时你可以使用Docker将运行环境一起发布。

其他人拿 到你的程序后可以直接运行,避免 出现一次编译到处调试时的尴尬局面。

docker的出现主要解决,在我的机器上是正常的,为什么到你的机器上就不正常的问题,但是,随着Docker的进步以及k8s等编排软件的流行,docker的使用场景大大扩展,

docker已经成为高可用服务集群  持续交付、持续集成以及云原生的关键技术!

    Docker 是一个开源项目,这个项目旨在通过把应用程序打包为可移植的、自给自足的容器(引用语)

DocKer一次构建可放在任何地方就可以运行,不需要进行任何改变DocKer 就类似于一个容器。这个容器就好像咱们常用的虚拟机一样,当我们虚拟机里面安装过VSSQL、浏览器 ......  之后咱们就把虚拟机镜像备份下来、等到下一次需要重新搭一个环境的时候,就可以省去很多事情了,直接把备份的虚拟机运行起来,该有的就都有了,省去了很多事情。

在用DocKer的情况下,咱们可以直接把项目发布在DocKer容器上面进行测试,当项目需要正式上线的时候我们直接可以把做好的DocKer 镜像部署上去就行了,如果测试的好,就不必担心项目上正式版本的时候再出现什么问题了,(比如说 咱们的Confing 配置信息很多项目都是什么测试环境地址,正式环境地址的,但是用过DocKer之后就一个就行了)DocKer可以在 云、WindowsLinux 等环境上进行部署,就单说这一点就省去了我的很多费用、还有项目部署上线的风险,不必每次项目上线都留守一堆人才等着项目报错.

2.Docker 优势劣势

虚拟机和DocKer对比

1.DocKer 启动速度是虚机万万不敢调戏的了,(这里声明一下,在同一台电脑)。

2.在资源的利用上也比虚机高多了,同一台机器上我相信能跑100台DocKer,咱们肯定不赶跑这么多台虚拟机,有效的节约资源。

3.传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
4.容器内的应用直接运行在宿主机的内部,容器是没有自己的内核的,也没有虚拟硬件,所以轻便
5.每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响

应用更快速的交互和部署
传统:一堆帮助文档,安装程序
Docker: 打包镜像发布测试,一键运行
更便捷的升级和扩缩容
更简的系统运维
更高效的计算资源利用

 

 

图中我们可以看到DocKer 相比于虚拟机来说不需要一个完成的系统,但是对隔离性也就没有虚拟机好了.

3.docker历史

2010年,几个搞IT的年轻人,就在美国成立了一家公司 dotcloud故一些 pass 的云计算服务! LXC 有关的容器技术 !他们将自己的技术(容器化技术) 命名 就是 Doker !Docker 刚刚诞生的时候,没有引起行业的注意! dotCloud,就活不下去!
开源
开发源代码!
2013年,Docker开源!
Docker越来越多的人发现了docker的优点!火了,Docker 每个月都会更新一个版本!
2014年4月9日,Docker1.0发布 !
Docker为什么这么火?十分的轻巧 !
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机:在window中装一个Vmware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!
虚拟机也是属于虚拟化技术,Docker 容器技术,也是一种 虚拟化技术!
linux centos原生镜像 (一个电脑!) 隔离,需要开启多个虚拟机!几个G 几分钟wm:镜像(最核心的环境 4m + jdk + mysgl)十分的小巧, 运行像就可以了! 小巧!ps:几个MCKB 秒级启动!hadocker:隔离,

4.docker执行过程

 

 名词解释:Docker三个重要的构念

①镜像:镜像是只读的文件,提供了运行程序完整的软硬件资源,是应用程序的"集装箱";

  • Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ===> run ===> tomcat01容器, 通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)

②容器:是镜像的实例,由 Docker 负责创建,容器之间彼此隔离;

  • Docker利用容器技术,独立运行一个或者一组应用, 通过镜像来创建的
  • 启动,停止,删除,基本命令!
  • 就目前可以把这个容器理解为一个建议的linux系统

③仓库:

  • 存放镜像的地方
  • Docker Hub(默认是国外的)远程仓库地址: https://hub.docker.com/
  • 阿里云,,,都有容器服务(配置镜像加速!)

 Docker file: 是一个配置文件 如何构建的步骤 来指定一个镜像是如何构建的

      通过Docker build指令可以将Dockerfile构建成一个镜像

 二、Docker在ubuntu上的安装

 # step 1: 安装必要的一些系统工具

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安装GPG证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# Step 4: 更新并安装 Docker-CE

sudo apt-get -y update

sudo apt-get -y install docker-ce

 #查看是否安装成功 查看容器的运行情况

docker ps

 Docker安装时错误:安装完docker,运行指令时,出现了以下错误提示:

 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied。

意思是试图连接unix:///var/run/docker.sock:,但权限不够。

解决办法:

原因分析:这是因为你当前的用户没有这个权限。默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。即我们当前的用户不是root用户。

解决办法:把我们当前的用户添加到docker组中就可以了,这样他们就是一家人了。

第一步:sudo gpasswd -a username docker  #将普通用户username加入到docker组中,username这个字段也可以直接换成$USER。

第二步:newgrp docker  #更新docker组

第三步:再执行你报错的命令,此时就不会报错了。

      Docker ps

 三、Docker映射文件路径

在创建Docker容器时,想要与本地路径进行映射共享文件,使用docker run -v指令,例如我需要将本地的的/root/code路径映射到容器内的/data/code路径(数据卷),使用如下指令,冒号前为宿主机路径,冒号后为容器路径,其中xxx为镜像完整路径

docker run -it -v /root/code:/data/code xxx /bin/bash

docker容器文件映射到宿主机

四.docker下载

1.下载nginx

1.查看可用的 Nginx 版本docker search

默认是在公共仓库找,如果有私有仓库,会在私有仓库找

直接去官网搜索nginx版本:https://hub.docker.com/

docker search nginx

  2.下载最新版本的nginx镜像 docker pull

如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签

 docker  pull  nginx:latest

 

 3.查看本地镜像 docker images

 docker images

 

 4.运行容器

 docker  run  --name nginx-test  -p 8080:80   -d   nginx

参数说明:

  • --name nginx-test:容器名称。
  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
  •  -d nginx: 设置容器在在后台一直运行。

列表参数说明:

  •  Repository  镜像名称
  •  Tag  镜像标签
  •  Image Id  镜像 的ID
  •  Created  镜像的创建日期
  •  Size   镜像的大小

注意:镜像默认存放位置:/var/lib/docker目录下

 5.本地测试

在浏览器中输入url访问8080端口 ,出现如图一下的则是成功了!

 注意:ubuntu是默认开通远程端口,但cent os需要手工打开端口

 6.获取镜像信息docker inspect 镜像id

2.相关命令

1.镜像命令

docker命令总结:

1.docker pull nginx:latest 拉取镜像

2.docker images  查看镜像

3.docker run -d -p 81:80 nginx  创建容器

4.docker ps  查看正在运行的容器

5.docker ps -a   查看所有的容器(包括没运行的容器)

6.docker   exec   -it   2d   bash   登录容器

  •   -i   让容器的标准输入保持打开
  •   -t  让docker分配一个伪终端并保存到容器的标准输入

7.exit或者Ctrl+D  退出容器

8.docker   rm  -f   容器id   删除容器

9.docker commit  2d  m1 将2d容器保存为m1镜像

10.docker rmi -f   镜像id    删除镜像

11.docker  save m2>1.tar   将m1镜像保存到1.tar文件中(备份镜像)

12.docker load < 1.tar    将1.tar文件中加载为镜像(加载镜像)

13.docker tag    添加镜像标签

eg: docker tag nginx:latest nginx:lnmp       #给nginx打上标签lnmp,原来的标签是latest

14.docker images -q   查询镜像的id

15.docker rmi `docker images -q`       批量删除所有镜像

16. docker  build   -t   镜像名称   .       dockerfile构建镜像

17.docker   container   run         启动新容器

18.docker  diff      查看容器文件系统改动详情。

19.docker ps -aq |wc -l     查找容器数量

20. docker    info      Docker实例的状态和配置

2.容器命令

1.docker container run

启动新容器的命令。该命令的最简形式接收镜像和命令作为参数。镜像用于创建容器,而命令则是希望容器运行的应用。

eg:docker run  -it -d -p 81:80 nginx     #命令会在前台启动一个 Ubuntu 容器,并运行 Bash Shell。

2.docker container ls

列出所有在运行(UP)状态的容器。如果使用 -a 标记,还可以看到处于停止(Exited)状态的容器。

3.docker container  exec

用于在运行状态的容器中,启动一个新进程。该命令在将 Docker 主机 Shell 连接到一个运行中容器终端时非常有用。

eg: docker exec -it 97 bash       #登录容器

4.docker container stop

grammer:docker stop container_ID

此命令会停止运行中的容器,并将状态置为 Exited(0)。
提示:该命令通过发送 SIGTERM 信号给容器内 PID 为 1 的进程达到目的。
如果进程没有在 10s 之内得到清理并停止运行,那么会接着发送 SIGKILL 信号来强制停止该容器。

5. docker container start

grammer: docker start container_ID

重启处于停止(Exited)状态的容器。可以在 docker container start 命令中指定容器的名称或者 ID。

6.docker  container  rm

删除停止运行的容器。可以通过容器名称或者 ID 来指定要删除的容器。推荐首先使用docker container stop 命令停止容器.然后使用 docker container rm 来完成删除(先停止再删除)

 7. docker container inspect

显示容器的配置细节和运行时信息。

 3.下载tomcat

1:docker pull tomcat

 1.1如果拉取镜像慢怎么办?

方式一:买翻墙路由器

方式二:修改为国内镜像 ubuntu    

sudo apt-get install systemd

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

2:docker run -d -p 映射端口:本地默认端口 tomcat

将linux系统的8888端口映射到docker容器的8080端口。docker容器默认采用桥接模式与宿主机通信。需要将宿主机的ip端口映射到容器的ip端口上。

3:登录tomcat容器  

登录tomcat容器后ls查看tomcat目录文件发现有两个webapps目录

注意:其中tomcat默认运行的是webapps目录下的资源文件,但是其中这里是空的,而tomcat的有效资源文件却存在webapps.dist目录下面

因此我们访问浏览器测试tomcat时会出现404出错页面,下面的解决此问题的方案:

然后就可以http://ip地址:8888回车访问tomcat成功了!表示tomcat在docker下载成功!

五.使用DockerFile构建镜像

我们先了解一下docker的运行机制

1.Docker的引擎

Docker Engine(Docker引擎--发动机程序支持的核心组件)是Docker的核心部分,使用的是客户端---服务器(C/S)架构模式。其主要组成部分:

①、docker daemon:Docker的服务端组件,他是Docker架构中运行在后台的一个守护进程,可以接收并处理来自命令行接口及API接口的指令,然后进行相应的后台操作。

②、REST API:表示应用程序API接口,开发者通过该API接口可以与Docker的守护进程进行交互,从而指示后台进行相关操作。

③、docker CLI:表示Docker命令行接口,开发者可以在命令行中使用Docker相关指令与Docker守护进程进行交互,从而管理诸如image(镜像)、container(容器)、network(网络)和data volumes(数据卷)等实体。

 2.Docker的底层容器运行原理:

①、客户端发送 docker pull tomcat 命令;

②、命令到达 Docker daemon(守护程序),守护进程首先检查本地是否有该 Tomcat 的镜像,如果没有,则从注册中心(仓库)拉取该镜像;

③、镜像拉取到本地后,客户端执行 docker run 命令,守护程序就会创建容器,启动应用。

 Docker架构主要包括Client、Docker_HOST和Register三部分:

1. Client(客户端)  docker CLI

Client即Docker客户端,也就是上一小节Docker Engine中介绍的docker CLI。开发者通过这个客户端使用Docker的相关指令与Docker守护进程进行交互,从而进行Docker镜像的创建、拉取和运行等操作。

2. DOCKER_HOST(Docker主机)

DOCKER_HOST即Docker内部引擎运行的主机,主要指Docker daemon(Docker守护进程)。可以通过Docker守护进程与客户端还有Docker的镜像仓库Registry进行交互,从而管理Images(镜像)和Containers(容器)等。

3.Registry(注册中心)

Registry即Docker注册中心,实质就是Docker镜像仓库,默认使用的是Docker官方远程注册中心Docker Hub,也可以使用开发者搭建的本地仓库。Registry中包含了大量的镜像,这些镜像可以是官网基础镜像,也可以是其他开发者上传的镜像。

我们在实际使用 Docker 时,除了会涉及图中的 3 个主要部分外,还会涉及很多Docker Objects(Docker对象),例如Images(镜像)、Containers(容器)、Networks(网络)、Volumes (数据卷)、Plugins(插件)等。其中常用的两个对象Image和Containers的说明如下。

 ·Images(镜像)

 Docker镜像就是一个只读的模板,包含了一些创建Docker容器的操作指令。通常情况下,一 个Docker镜像是基于另一个基础镜像创建的,并且新创建的镜像会额外包含一些功能配置。  例如:开发者可以依赖于一个 Ubuntu 的基础镜像创建一个新镜像,并可以在新镜像中安装 Apache等软件或其他应用程序。

   

 ·Containers(容器)

Docker 容器属于镜像的一个可运行实例(镜像与容器的关系其实与 Java中的类与对象相似),开发者可以通过API接口或者CLI命令行接口来创建、运行、停止、移动、删除一个容器,也可以将一个容器连接到一个或多个网络中,将数据存储与容器进行关联。

 3.认识 Dockerfile 文件

eg:

FROM XXX/jdk:8

MAINTAINER docker_user

ENV JAVA_HOME /usr/local/java

ADD apache-tomcat-8.0.32.tar.gz /usr/local/

RUN mv apache-tomcat-8.0.32 tomcat8

EXPOSE 8080

RUN chmod u+x /usr/local/tomcat8/bin/*.sh

CMD /usr/local/tomcat8/bin/catalina.sh start

 4.Dockerfile 的基本结构分为4部分

  1. 基础镜像信息;
  2. 维护者信息;
  3. 镜像操作指令;
  4. 容器启动时执行指令

 5.Dockerfile 指令

FROM

格式为 FROM <image> 或 FROM <image>:<tag>

Dockerfile 文件的第一条指令必须为 FROM 指令。

并且,如果在同一个 Dockerfile 中创建多个镜像时,

可以使用多个 FROM 指令(每个镜像一次);

如果from没有该镜像,则从镜像仓库中找

MAINTAINER

格式为 MAINTAINER <name>,指定维护者信息;

ENV

格式为 ENV <key> <value>,指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持;

ADD

格式为 ADD <src> <dest>;

复制指定的<src>到容器中的<dest>;

EXPOSE

格式为 EXPOSE <port> [<port>...]

告诉 Docker 服务端容器暴露的端口号,供互联系统使用,在启动容

器时需要通过 -p 映射端口,Docker 主机会自动分配一个端口转发到

指定的端口;

RUN

格式为 RUN <command>

RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行;

CMD

指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。

如果指定了多条命令,只有最后一条会被执行。

如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

WORKDIR

作用:切换到镜像中的指定路径,设置工作目录

在 WORKDIR 中需要使用绝对路径,如果镜像中对应的路径不存在,会自动创建此目录

一般用 WORKDIR 来替代 切换目录进行操作的指令

RUN cd <path> && <do something>

WORKDIR 指令为 Dockerfile 中跟随它的任何 RUN、CMD、ENTRYPOINT、COPY、ADD 指令设置工作目录

如果 WORKDIR 不存在,即使它没有在任何后续 Dockerfile 指令中使用,它也会被创建

6.通过Dockerfile文件自定义 jDK 镜像

  1.切换到docker目录

root@ubuntu:~# mkdir /root/web-docker

root@ubuntu:~# cd /root/web-docker

 2.将jdk.gz文件放在root/web-docker目录下

3.创建文件Dockerfile,将以下内容拷贝到root/web-docker/Dockerfile 下

eg:FROM ubuntu:latest

MAINTAINER obtk-fly

ADD jdk-8u291-linux-x64.tar.gz /usr/local

ENV JAVA_HOME /usr/local/jdk1.8.0_291

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH $PATH:$JAVA_HOME/bin

CMD java -version

 4.构建jdk1.8镜像

docker build -t obtk_fly_jdk1.8.0_121 .

5. 运行镜像

出现jdk版本则代表成功!

docker   run   镜像id

7.通过Dockerfile文件自定义 Tomcat镜像

1.将原Dockerfile文件更名为Dockerfile-jdk创建新的文件Dockerfile

root@ubuntu:~/web-docker# mv Dockerfile  Dockerfile-jdk

root@ubuntu:~/web-docker# touch Dockerfile

2.将tomcat.gz上传到/root/web-docker目录下

3.将一下复制到DockerFile文件中

FROM obtk_fly_jdk1.8.0_121#(docker中镜像jdk中的名称)

MAINTAINER  obtk-fly  #(自取)

ADD apache-tomcat-9.0.48.tar.gz /usr/local/   #(将tomcat.gz文件放入到/usr/local目录中)

ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.48

ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin   #(tomcat环境配置)

EXPOSE  8080  #(暴露的tomcat端口)

CMD /usr/local/apache-tomcat-9.0.48/bin/catalina.sh run   #(容器运行)

4.构建镜像

 docker build -t obtk-fly-tomcat-9.0.48  .

5. 运行镜像

docker run -d -p 8081:8080 d682230f4641

6.检验是否成功

 在客户端运行,出现如下画面,代表tomcat安装成功。

8.通过Dockerfile文件自定义 redis镜像

1.首先先新建两个文件,一个redis.conf, 一个Dockerfile,放在一个文件夹web-docker

2.复制一下内容到Dockerfile文件中,同理

# 拉取仓库的redis

FROM redis:5.0.14

MAINTAINER obtk-fly

# 将本地redis配置文件替换到镜像里

COPY redis.conf /usr/local/etc/redis/redis.conf

# 暴漏端口

EXPOSE 6379

# 启动命令

CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

3.拷贝redis.conf文件到web-docker目录

4.执行命令即可创建一个自己的redis镜像

docker build -t obtk-fly-redis .

5. 运行镜像

docker run -d -p 6379:6379 c5da061a611a

 如果发现执行命令docker ps -a 发现redis容器是exited(1)状态那么可能是因为你的redis配置中你将daemonize 为yes 

解决办法就是将deamonize改为:no

在运行一次,则redis容器启动了up

到此,这里docker中环境已经搭好了,运行springboot项目

六.docker中部署springboot项目

1.部署springboot项目打包成jar包

 最重要的更改application.yml配置

连接redis和mysql的ip地址更改

将开发的springboot程序打成jar包或者war包,可以使用maven打包

<groupId>com.obtk</groupId>
<artifactId>just-redis-shiro</artifactId>
<version>1.0</version>
<packaging>jar</packaging>

将打好的jar包或war包上传到Linux某个目录下,比如:/root/docker

定义jar包程序  /root/docker/Dockerfile文件内容

FROM obtk_fly_jdk1.8.0_121

MAINTAINER obtk_fly

ADD just-redis-shiro-1.0.jar  /opt

RUN chmod +x /opt/just-redis-shiro-1.0.jar

CMD java -jar /opt/just-redis-shiro-1.0.jar

构建和运行 Jar 包程序的镜像

构建镜像:docker build -t just-redis-shiro-web-jar .

运行容器:docker run -d -p  8081:8081 13fdea939dfa

在客户端运行该程序,在浏览器中输入http://ip地址:tomcat端口号 回车

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker入门---最全笔记 的相关文章

随机推荐

  • 机器学习 day27(反向传播)

    1 导数 函数在某点的导数为该点处的斜率 用height width表示 可以看作若当w增加 J w b 增加k倍的 则k为该点的导数 2 反向传播 tensorflow中的计算图 由有向边和节点组成 从左向右为正向传播 神经网络模型使用正
  • 程序员的浪漫—利用Matlab 实现圣诞树动态显示

    一 前言 圣诞节是基督教纪念耶稣诞生的重要节日 亦称耶稣圣诞节 主降生节 天主教亦称耶稣圣诞瞻礼 耶稣诞生的日期 圣经 并无记载 公元336年罗马教会开始在12月25日过此节 12月25日原是罗马帝国规定的太阳神诞辰 有人认为选择这天庆祝圣
  • MES11大标准模块(ISA95)

    1 资源分配及状态管理 ResourceAllocationandStatus 该功能管理机床 工具 人员物料 其它设备以及其它生产实体 满足生产计划的要求对其所作的预定和调度 用以保证生产的正常进行 提供资源使用情况的历史记录和实时状态信
  • vue3手动封装一个点击滚动,左右切换的商品展示效果图,纯js

    展示效果 效果图如下 默认展示第一张图片 只有两边有按钮切换 也可以点击图片切换 点击的图片从第三个开始时居中显示 分析一波 从底部的第三张图片开始到末尾的第八张图片都是居中显示 点击左右要进行切换 也要居中显示 所以我在这里用的的时在X轴
  • Linux Gadget驱动分析

    以下四篇文章需要互相补充 可以理解的较为详细 http blog sina com cn s blog 1519163d30102x2le html https www cnblogs com haoxing990 p 8799133 ht
  • C++:指向类的成员的指针

    引 想必接触过C的朋友们对C语言中指针的概念已经有了深入的了解 如果初步进行了解的朋友可以看一下 C语言基础学习笔记 指针展开来讲的基本知识点包括 指针的概念 指针的定义和初始化及简单使用 指针函数和函数指针 有关指针函数和函数指针的内容上
  • matlab_数据拟合

    多项式拟合 polyfit X Y N 多项式拟合 返回降幂排列的多项式系数 polyval P xi 计算多项式的值 function example x y P polyfit x y 3 xi 0 0 2 10 yi polyval
  • 小波变换详解

    小波变换详解 1 简介 We can use the Fourier Transform to transform a signal from its time domain to its frequency domain The peak
  • 微信聊天记录导出为电脑txt文件教程

    本文的最终目的是将手机微信的聊天记录导出到电脑里 变成txt文本文件 然后对其进行分析 网上有一些工具也可以完成这个功能 但是基本都是付费的 手动操作的话 找了很多的博客 基本没有完全有效的 最终找到一篇很靠谱的教程 小米手机提取微信聊天记
  • Spark Sql之dropDuplicates去重

    文章目录 算子介绍 示例 问题 解决 dropDuplicates和distinct 参考 算子介绍 dropDuplicates去重原则 按数据行的顺序保留每行数据出现的第一条 dropDuplicates 在Spark源码里面提供了以下
  • PCL测试程序(兔子)

    程序 include
  • vue+diff:计算两个时间的差值diff方法momentjs和dayjs

    前言 在项目中计算时间的时候 会遇到一个问题 那就是日期跨天问题 我们的开始时间和结束时间拿到了毫秒 然后时间 比如 11 50 1 50 这个如果按小时来算 就没有到1天 24小时 但是他又是过了一天 所以会需要这个diff计算 具体操作
  • 在聚会中常玩数七的游戏,七的倍数和带有七的数字都不能说,比如14,27,28。请找出1~100的不能说的数字。...

    利用ES5的filter高阶函数来实现 var arr 1 2 3 4 5 6 7 17 27 21 22 28 100 r arr filter function x return x 10 7 x 7 0 alert r 7 14 17
  • 在python中创建excel文件并写入数据

    python的包xlwt和xlsxwriter都是比较方便创建excel文件并写入数据的 工具 python3 0 首先 需要安装好相应的包 pip install xlwt 或pip install xlsxwriter xlwt中 通过
  • 谈谈JS异步处理(Promise、generator、async)

    大家都知道nodejs很快 为什么会这么快呢 原因就是node采用异步回调的方式来处理需要等待的事件 使得代码会继续往下执行不用在某个地方等待着 但是也有一个不好的地方 当我们有很多回调的时候 比如这个回调执行完需要去执行下个回调 然后接着
  • Jira、Confluence 备份 迁移

    Jira 备份 迁移 全量打包文件和数据库 将打包好的文件放到迁移的服务器 创建数据库排序规则为utf8 bin并导入备份脚本 服务器创建jira用户 gt useradd jira jira服务文件夹赋权 gt chown R jira
  • Vue中的import from

    Vue中的import from 大家都知道 import from 是用来引入一些文件的 在vue中 可能有 js文件 json文件 vue文件 在JS和JSON文件引入的时候 往往需要写入一些 例如数组 export const a 例
  • JavaScript string中includes、startsWith和endsWith的使用

    文章目录 前言 一 includes 二 startsWith 三 endsWith 总结 前言 JavaScript string的这三个方法都是根据参数返回true或false 一 includes includes 方法判断一个字符串
  • 3D点云处理:Opencv Pcl实现深度图转点云(附源码)

    文章目录 0 测试效果 1 代码实现 文章目录 3D视觉个人学习目录 0 测试效果 处理结果 1 代码实现 文章中提供的深度图像 深度图像一般以 tiff和 png保存 可以通过Opencv中的 c v i m r
  • docker入门---最全笔记

    前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识 有兴趣的小伙伴可以关注一下 也许一个人独行 可以走的很快 但是一群人结伴而行 才能走的更远 让我们在成长的道路上互相学习 让我们共同进步 欢迎关注 目录 前言 一 D