概念科普

  • Docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。
  • Docker container:容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
  • Docker hub/registry: 共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。

运行第一个镜像

将image从仓库下载到本地

docker pull library/hello-world

执行命令docker images 查看所有镜像

[root@insure docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 5958914cc558 weeks ago .9MB
centos latest 75835a67d134 months ago 200MB
hello-world latest 4ab4c602aa5e months ago .84kB
redis 4.0. 8f2e175b3bd1 months ago 107MB

运行刚才下载的镜像

[root@insure docker]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
. The Docker client contacted the Docker daemon.
. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/ For more examples and ideas, visit:
https://docs.docker.com/get-started/

到此,我们第一个镜像运行成功。

现在我们删除所有的容器和镜像,保持一个干净的环境

首先删除容器,因为容器包含在镜像之内,一个镜像可以有很多容器

[root@insure docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b13eb6f29cb1 hello-world "/hello" About a minute ago Exited () About a minute ago blissful_benz
356502c8cbfd centos:latest "java -jar /usr/clai…" hours ago Created claimdashboardtest
f5f8aa391da0 centos:latest "/bin/bash" weeks ago Up weeks test-centos
[root@insure docker]# docker rm b13eb6f29cb1
b13eb6f29cb1
[root@insure docker]# docker rm 356502c8cbfd
356502c8cbfd
[root@insure docker]# docker f5f8aa391da0
docker: 'f5f8aa391da0' is not a docker command.
See 'docker --help'
[root@insure docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f5f8aa391da0 centos:latest "/bin/bash" weeks ago Up weeks test-centos

删除镜像文件

[root@insure docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 5958914cc558 weeks ago .9MB
centos latest 75835a67d134 months ago 200MB
hello-world latest 4ab4c602aa5e months ago .84kB
redis 4.0. 8f2e175b3bd1 months ago 107MB
[root@insure docker]# docker rmi 5958914cc558
Untagged: redis:latest
Untagged: redis@sha256:f57d1597d038a742dfba6acfaf48b10e6383466eea2aef95d1ee76f32633f959
Deleted: sha256:5958914cc55880091b005658a79645a90fd44ac6a33abef25d6be87658eb9599
Deleted: sha256:2034be36bd0f105ea0b4cbb124a96fa434fda3ce9c32dddcf38f1b6e5699ac91
Deleted: sha256:c2d3730f64b8e231f59d86ac8bdf6de3e62538a5b0030c9a37bf1cf21241ec76
Deleted: sha256:1a869407b0486b83e44fcec89fc7b12935c23caea8768e0e9402df67a01f4ffe
Deleted: sha256:1568b09301049abf7ed4b38406ce96465f2145af91428d9efa8c8c0dc53297fa
Deleted: sha256:42bd21f043c373312ccf3f31fcfeabf596497421e9ff0103b6fb7dc764de631e
Deleted: sha256:ef68f6734aa485edf13a8509fe60e4272428deaf63f446a441b79d47fc5d17d3
[root@insure docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 75835a67d134 months ago 200MB
hello-world latest 4ab4c602aa5e months ago .84kB
redis 4.0. 8f2e175b3bd1 months ago 107MB

上面简单的练习了一下,镜像的下载和删除。

下面正式进入我们的目标文件------------jar

第一步

拉取openjdk镜像

[root@insure dockerfile]# docker pull openjdk
Using default tag: latest
latest: Pulling from library/openjdk
16e82e17faef: Pull complete
117dc02416a3: Pull complete
7e4c717259ac: Pull complete
7a518b8f48be: Pull complete
add32d44f708: Pull complete
a0158fa08543: Pull complete
eacd9302ecfd: Pull complete
8f9d52bf6cde: Pull complete
Digest: sha256:2cbb95c7479634c53bc2be243554a98d6928c189360fa958d2c970974e7f131f
Status: Downloaded newer image for openjdk:latest
[root@insure dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk latest 8e7eacedab93 weeks ago 986MB
centos latest 75835a67d134 months ago 200MB

第二步编写dockerfile文件

#centos:latest 分别是镜像和版本号
FROM openjdk:latest #将文件<src>拷贝到container的文件系统对应的路径<dest>
ADD claimdashboard-0.0.-SNAPSHOT.jar app.jar #RUN命令将在当前image中执行任意合法命令并提交执行结果。命令执行提交后,就会自动执行Dockerfile中的下一个指令
RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","/app.jar"]

第三步生成镜像

[root@insure dockerfile]# sudo docker build -t="dashboard" .
Sending build context to Docker daemon .15MB
Step / : FROM openjdk:latest
---> 8e7eacedab93
Step / : ADD claimdashboard-0.0.-SNAPSHOT.jar app.jar
---> ea0688f6b7cb
Step / : RUN bash -c 'touch /app.jar'
---> Running in e97e88a2fc96
Removing intermediate container e97e88a2fc96
---> 4d3d3cc9f9ce
Step / : ENTRYPOINT ["java","-jar","/app.jar"]
---> Running in 9fa1b0191846
Removing intermediate container 9fa1b0191846
---> 4762105b8815
Successfully built 4762105b8815
Successfully tagged dashboard:latest

[root@insure dockerfile]# docker images     查看已经的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
dashboard latest 4762105b8815 3 minutes ago 1.07GB
openjdk latest 8e7eacedab93 2 weeks ago 986MB
centos latest 75835a67d134 2 months ago 200MB

注意:命令后面要带上.  -t表给镜像命名为dashboard

第四步  启动容器

[root@insure dockerfile]# docker run -d -p : dashboard
0924d9762dccb860e3d4869f27ed8dd6c7b9f69ad25ad368c83ec036e61a7ee0
[root@insure dockerfile]# docker ps -a 查看已有的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0924d9762dcc dashboard "java -jar /app.jar" seconds ago Up seconds 0.0.0.0:->/tcp sleepy_ptolemy
f5f8aa391da0 centos:latest "/bin/bash" weeks ago Up minutes test-centos

命令解析docker run -d -p 8070:8070 dashboard

docker--专有命令 run--表示运行容器 -d 表示后台运行

-p表示端口 前一个端口是外部浏览器访问的端口 后一个端口是内部的端口 两个端口可以不一样

dashboard 容器的名字

第五步 用postman测试效果

到此第一个在docker容器上的jar运行成功并测试通过

1.查看所有的容器ip和名字

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

docker run -tid --net=host -v /opt/pj/business.jar:/usr/business.jar --name business java:8u111 java -jar /usr/business.jar

-t: 为container分配一个伪终端(pseudo-tty),并绑定到容器的标准输入上

-i: 让容器的标准输入保持打开

-d: 使容器在后台以守护态(Daemonized)形式运行

--net=host 使用host模式的容器可以直接使用docker host的IP地址与外界通信

-v /usr/springboot-1.jar:/usr/springboot-1.jar 表示将宿主主机的jar文件,映射到容器中(分号前为宿主主机的路径,分号后为容器中的路径)

--name business表示为该容器取一个全局唯一的名称,这里我取的名称为business

java:8u111 表示镜像文件的名称和tag

java -jar /usr/business.jar 表示运行jar包,注意:这里的jar包为容器中的位置,是通过前面的-v属性映射的

docker执行第一个应用的更多相关文章

  1. Docker 入门 第一部分: 定位和设置

    目录 Docker 入门 第一部分: 定位和设置 Docker概念 镜像和容器 容器和虚拟机 准备你的Docker环境 测试 Docker 的版本 测试 Docker 安装 回顾 总结 Docker ...

  2. Docker入门 第一课 --.Net Core 使用Docker全程记录

    微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的. 我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Dock ...

  3. docker 执行 docker system prune 导致Azure Devops build镜像失败

    运行docker的centos上, 只分配了16G的空间, 装了个mysql, 还有个rancher, 就只剩下2G的空间了, Azure Devops build镜像就出错了, 显示存储空间不足, ...

  4. docker学习---第一章节

    一.docker的应用场景有哪些 Web 应用的自动化打包和发布 自动化测试和持续集成.发布 在服务型环境中部署和调整数据库或其他的后台应用 从头编译或者扩展现有的OpenShift或Cloud Fo ...

  5. docker 入门第一步

    docker 安装 利用yum 安装 yum 源更新到最新版本,命令: yum update 需要安装工具 net-tools 命令:yum  install -y net-tools 配置docke ...

  6. centos7下docker发布第一个微服务应用(Eureka)

    1.在windows下打包 微服务应用通过maven进行打包,在项目的pom.xml执行mvn clean package,或者直接通过idea或者eclipse进行maven打包 之上操作将在项目的 ...

  7. GIS+=地理信息+容器技术(4)——Docker执行

    -------------------------------------------------------------------------------------- Blog:    http ...

  8. MacOS~jenkins里解决docker执行权限问题

    一 全局配置项设置 需要添加全局变量项,例如名称docker,路径/usr/local 添加一个jenkinsfile文件,用于运行docker命令 pipeline { agent any tool ...

  9. Jenkins Pipelines+Docker执行RobotFramework自动化测试

    一.Jenkins Pipelines介绍 Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与 ...

随机推荐

  1. 洛谷P4563 [JXOI2018]守卫(dp)

    题意 题目链接 Sol 非常有意思的题目. 我们设\(f[l][r]\)表示区间\([l,r]\)的答案. 显然\(r\)位置一定有一个保镖 同时不难观察到一个性质:拿\([1, n]\)来说,设其观 ...

  2. call/apply以及this指向的理解

    javascript是面向对象的语言,Function也是一种对象,有自己的属性和方法.call和apply就是js函数自带方法,挂在Fucntion.prototype上. 一般调用某函数时,直接“ ...

  3. (网页)the server responded with a status of 403 (Forbidden)

    403跨域问题.看一下要访问的url.

  4. (网页)textarea去掉回车换行

    转自CSDN: 1,把textarea内输入的内容中有回车换行的转成<br />传给后台, var content = $("#text").val().replace ...

  5. Backbone.js学习之旅(一)

    前言 刚到粑粑公司,就学习各种框架,进行各种开发,为了纪念挥泪的青春,只好写下…… 希望能合您胃口^_^!!! The First(文件准备) backobone 强制依赖于 underscore.j ...

  6. .NET 控制Windows文件和目录访问权限研究(FileSystemAccessRule)

    前一段时间学习了.net 控制windows文件和目录权限的相关内容,期间做了一些总结.想把这方面的研究跟大家分享,一起学习.其中不免得有些用词不太标准的地方,希望大家留言指正,我加以修改. 首先,我 ...

  7. 数据可视化:CSV格式,JSON格式

    下载CSV格式数据,进行可视化 csv.reader()创建一个与文件有关联的阅读器(reader)对象,reader处理文件中的第一行数据,并将每一项数据都存储在列表中 head_row = nex ...

  8. spark-Scala

    一.spark的特点 1.快速的 2.容易使用的 3.通用的 4.开放的 二.spark组件 sparkCore sparkSQL sparkStreaming MLibmachielearning ...

  9. Beta冲刺! Day5 - 砍柴

    Beta冲刺! Day5 - 砍柴 今日已完成 晨瑶:陪全队肝到最后一刻 昭锡:更改了主页UI 永盛:剩余的接口改动和新增 立强:文章增加缩略图预览,收藏功能第三方编辑器整合. 炜鸿:继续完成站内信功 ...

  10. Java面试——微服务

    1.什么是微服务?    就目前而言,对于微服务业界并没有一个统一的,标准的定义. 但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分一组小的服务,每个服务运行在其独立 ...