Docker使用Dockerfile构建简单镜像

Docker使用Dockerfile构建简单镜像

首先确保系统已经安装docker

构建镜像

安装基础镜像

sudo docker pull ubuntu

查看镜像是否已经拉取成功

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ubuntu                      latest              452a96d81c30        4 weeks ago         79.6 MB
centos                      latest              e934aafc2206        7 weeks ago         199 MB

编写Dockerfile

touch Dockerfile
FROM ubuntuCOPY demo_api /usr/local/binEXPOSE 9899CMD ["/usr/local/bin/demo_api"]

这个配置文件的意思是

  • 基础镜像为ubuntu
  • 将本地的demo_api二进制文件拷贝到/usr/local/bin下
  • 暴露9899端口
  • CMD执行这个二进制文件

EXPOSE 用来暴露端口,格式为:EXPOSE <端口1> [<端口2>……]
值得注意的是,EXPOSE 只是声明运行容器时提供的服务端口,这仅仅是一个声明,在运行容器的时候并不会因为这个声明就会开启端口服务,你依旧需要使用 -P 或者 -p 参数映射端口。在 Dockerfile 中写这样的端口声明有助于使用者理解这个镜像开放哪些服务端口,以便配置映射。并且,可以在 docker run 命令执行的时候使用 -P 参数随机映射宿主主机端口到 EXPOSE 的容器端口。

构建镜像

gorden@sung:~$ sudo docker build -t demoapi:v1.0 .
Sending build context to Docker daemon 7.448 MB
Step 1/4 : FROM ubuntu---> 452a96d81c30
Step 2/4 : COPY demo_api /usr/local/bin---> 44e68b440b1b
Removing intermediate container e7db3b02db3c
Step 3/4 : EXPOSE 8818---> Running in 5f677d533ea3
 ---> 3022bc179891
Removing intermediate container 5f677d533ea3
Step 4/4 : CMD /usr/local/bin/demo_api---> Running in 9e9f82a0780c
 ---> 1bcf0f228a7d
Removing intermediate container 9e9f82a0780c
Successfully built 1bcf0f228a7d

-t 参数后面指定镜像的名字。最后一个“ . ”指的是当前目录。

查看镜像是否存在了

gorden@sung:~$ sudo docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
demoapi                     v1.0                1bcf0f228a7d        12 seconds ago      86.3 MB
ubuntu                      latest              452a96d81c30        4 weeks ago         79.6 MB
centos                      latest              e934aafc2206        7 weeks ago         199 MB
gorden@sung:~$

从镜像运行容器

gorden@sung:~$ sudo docker run --name go_api -d -p 9899:9899 demoapi:v1.0
3d52e9e4f3c0ce1df9800aa44bb2d97b5dbb7704f0c18e46cb86551c9bfb7d0b
gorden@sung:~$

查看是否正在运行

gorden@sung:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3d52e9e4f3c0        demoapi:v1.0        "/usr/local/bin/de..."   9 minutes ago       Up 9 minutes        9899/tcp, 0.0.0.0:9899->9899/tcp    go_api
gorden@sung:~$ 

由于我这个二进制文件为一个go版本的简单RestFul Api所以可以在浏览器中测试:

localhost:9899/people

有返回结果,正面成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Weave Scope安装

Weave Scope安装 首先确保已经安装docker 实时了解Docker容器状态 查看容器基础设施的概况&#xff0c;或者专注于一个特殊的微服务。从而轻松发现并纠正问题&#xff0c;确保你的容器化应用的稳定与性能。 内部细节与深度链接 查看容器的指标、标签和元数据。 在一个可扩展…

MYSQL导入数据出现ERROR 1049 (42000): Unknown database 'n??;'

MYSQL导入数据出现ERROR 1049 (42000): Unknown database ‘n??;’ 背景 我需要将一个csv表中的数据导入数据库创建好的表中&#xff0c;产生的问题如下&#xff1a; 原因寻找 因为我并没有使用’n??;的数据库&#xff0c;所以很好奇这个错怎么来的&#xff0c;尝试如下…

Win10忘记ubuntu子系统密码

Win10忘记ubuntu子系统密码 目前新版win10已经支持ubuntu子系统&#xff0c;如果忘记子系统密码怎么办&#xff1f; linux单用户模式 在ubuntu中如果忘记密码&#xff0c;可以在启动的时候&#xff0c;在grub内更改用户为root进入&#xff0c;这样就可以使用最高权限的单用户…

蓝桥杯练习系统,入门训练,Java版

蓝桥杯练习系统&#xff0c;入门训练&#xff0c;Java版序列求和圆的面积Fibonacci数列希望大家提建议我加以修改序列求和 import java.util.*; public class Main {public static void main(String[] args) {Scanner cinnew Scanner(System.in);long ncin.nextLong();System.…

SVG入门理解

SVG入门SVG 元素简单的形状rectcircleellipselinetextpath SVG 样式分层和绘图顺序透明度 SVG入门 当我们用SVG生成和操作一些炫酷的效果时,D3是最佳选择。使用div和其他原生HTML元素绘图也是可以的&#xff0c;但是太笨重&#xff0c;而且会受到不同浏览器的限制&#xff0c…

【哈佛幸福课笔记】【1】

【哈佛幸福课笔记】【1】 ​ ​ 一个月的时间看完了哈佛幸福课&#xff0c;正如Tal所说课程的结束才是学习的开始。对于课程观点的思考&#xff0c;对于个人习惯的培养&#xff0c;对于思维模式的转变还需要花大量的时间去练习。这个系列的帖子将作为我个人的读书笔记&#x…

Angular 6+ 之新版service

Angular 6+ 之新版service Angular 6已经发布了,Angular 6中有一些新功能,其中一个就是提供service的共享实例。 回首Angular 5- 下面是一段熟悉的代码,可以为整个应用程序提供服务。我们将它添加到AppModule中的providers[]。 自定义服务类 // data.service.ts export c…

Angular CDK Layoout 检测断点

Angular CDK检测断点 Angular CDK有一个布局包,其服务可以轻松检测窗口大小并与媒体查询匹配。这使得你可以完全控制UI并适应不同的屏幕尺寸。 让我们快速了解一下如何使用CDK的布局模块。 Setup 首先,您需要确保在您的应用中安装了Angular CDK: $ npm install @angular/c…

Angular Render2

Angular Render2 Renderer2类是Angular以service的形式提供的抽象,允许操作应用程序的元素而无需直接触摸DOM。这是推荐的方法,因为它可以更容易地开发可以在没有DOM访问的环境中呈现的应用程序,例如在服务器上,web worker,或者原生移动上。 需要注释的是,现在已弃用原始…

数据分析方法

数据分析方法 什么是数据分析 从数据到信息的这个过程&#xff0c;就是数据分析。数据本身并没有什么价值&#xff0c;有价值的是我们从数据中提取出来的信息。 分类 分类分析的目标是&#xff1a;给一批人(或者物)分成几个类别&#xff0c;或者预测他们属于每个类别的概率…

RAID阵列基础知识

RAID阵列基础知识 独立硬盘冗余阵列 &#xff08;RAID, Redundant Array of Independent Disks&#xff09;,旧称廉价磁盘冗余阵列&#xff08;Redundant Array of Inexpensive Disks&#xff09;&#xff0c;简称磁盘阵列。 RAID的种类 这里我们只介绍比较常用的RAID类型&am…

timeshift备份你的Linux系统

timeshift备份你的Linux系统 安装 打开终端&#xff08;ctrl alt T&#xff09;并逐个执行以下命令 sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt-get update sudo apt-get install timeshift 创建 点击Create按钮 默认不能备份用户下的文件&#xff0c;所以…

Go语言vscode环境配置

Go语言vscode环境配置 此教程在GO已经安装成功的前提下。 安装vscode扩展 在vscode扩展里面搜索go&#xff0c;然后下载扩展。 安装go 插件 在$GOPATH目录下创建bin,pkg,src切换到$GOPATH/bin目录下&#xff0c;打开终端输入以下命令&#xff0c;不需要翻墙&#xff1a; go…

Angular实现悬浮球组件

Angular实现悬浮球组件 在手机 App 上,我们经常会看到悬浮球的东东,用着可能很舒服,但是 web 网页上却很少见,今天我们就通过 Angular 来实现,当然使用其他框架也是可以的。 功能要求: 支持设置直径支持点击触发信号支持设置鼠标按压时间实现的过程中省略的部分天填坑过…

Docker+Nginx部署Angular国际化i18n

Docker+Nginx部署Angular国际化i18n 在Angular项目中添加default.conf文件 default.conf 为了支持局域网,增加一个域名,即本地的局域网ip地址。 server {listen 80;server_name localhost;server_name 192.168.2.172;location / {root /usr/share/nginx/html;lo…

消息队列-Message Queue

消息队列-Message Queue 目前随着互联网的普及以及上网用户的增多&#xff0c;拥有一套 安全、稳定、低耦合、高性能的内部通信工具尤为重要。 什么是消息队列&#xff1f; 消息队列&#xff08;英语&#xff1a;Message queue&#xff09;是一种进程间通信或同一进程的不同线…

Angular 第一章 开始

第一章 开始 用 JavaScript 开发应用程序是一个很大的挑战。由于它的延展性和缺少类型检查,在 JavaScript 中构建一个适当大小的应用程序是很困难的。除此之外,我们对所有类型的处理都使用JavaScript,例如用户界面(UI),操作、客户端-服务器交互和业务处理/验证。因此,我们…

Typescript实现单例之父类调用子类

Typescript实现单例之父类调用子类 设计要求 在程序中,需要一个对象可以全局使用,并且只有一个实例Breakpoint 类是一个可以被继承的类,然后子类必须实现 updateView函数updateView 这个函数可以被自动调用,当窗口发生变化的时候构思 UML 图 Layout 是一个单例类,也就是全局只…

Angular性能优化之脏检测

Angular性能优化之脏检测 当我们在使用 Angular 框架搭建项目时,随着组件越来越多,页面也来越复杂,性能会越来越低,主要表现在 CPU 使用率 很高。所以我们要对项目做一定的优化。 Angular脏检查(Change Detection)机制 Angular 的脏检测主要是指 zone.js,这是一个开源的…

第一章、第一节 Angular基础

第一章、第一节 Angular基础 让我们先来看看Angular是如何实现组件模式的。 组件模式 Angular 应用程序使用组件模式。你可能听说过这个模式&#xff0c;它不仅用于软件开发&#xff0c;还用于制造、建筑和其他领域。简单地说&#xff0c;它涉及到将更小的、离散的构建块组合…