ubuntu18使用docker编译和运行的步骤

在Ubuntu 18.04上使用Docker来编译和运行应用程序主要包括以下步骤:

  1. 安装Docker
    在Ubuntu上安装Docker之前,首先需要更新包索引并安装一些必要的包,以确保能够通过HTTPS使用仓库:

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

    接下来,添加Docker官方的GPG密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    添加Docker仓库到APT源:

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

    再次更新包数据库并安装Docker CE(社区版):

    sudo apt update
    sudo apt install docker-ce
    

    验证Docker是否安装成功并运行:

    sudo systemctl status docker
    
  2. 添加用户到Docker组(可选):
    默认情况下,Docker需要sudo权限。为了免去每次命令前都要输入sudo,可以将用户添加到docker组:

    sudo usermod -aG docker ${USER}
    

    为了使这些更改生效,你可能需要注销并重新登录,或者重新启动系统。

  3. 编写Dockerfile
    创建一个名为Dockerfile的文件,其中包含了构建你的应用程序所需的所有指令。例如,如果你正在创建一个简单的Python应用:

    # Use an official Python runtime as a parent image
    FROM python:3.7-slim# Set the working directory in the container
    WORKDIR /usr/src/app# Copy the current directory contents into the container at /usr/src/app
    COPY . .# Install any needed packages specified in requirements.txt
    RUN pip install --no-cache-dir -r requirements.txt# Make port 80 available to the world outside this container
    EXPOSE 80# Define environment variable
    ENV NAME World# Run app.py when the container launches
    CMD ["python", "app.py"]
    
  4. 构建Docker镜像
    在包含Dockerfile的目录中运行以下命令来构建镜像:

    docker build -t your-app-name .
    
  5. 运行容器
    通过以下命令运行你的应用程序:

    docker run -p 4000:80 your-app-name
    

    这将启动一个容器,将容器的80端口映射到宿主机的4000端口。

  6. 查看运行中的容器
    要查看当前正在运行的容器,可以使用以下命令:

    docker ps
    
  7. 停止容器
    当你想要停止容器时,可以使用以下命令:

    docker stop container_id
    

    其中container_id是你从docker ps命令中获取的容器ID。

确保在执行上述步骤时,Dockerfile中的内容和命令都是针对你的应用程序进行调整的。以上只是一个简单的示例。

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

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

相关文章

【设计模式-2.4】创建型——抽象工厂模式

说明:本文介绍设计模式中,创建型设计模式的抽象工厂设计模式; 工厂模式的问题 在【设计模式-2.2】创建型——简单工厂和工厂模式这篇博文中,介绍过飞机大战游戏里,使用简单工厂和工厂模式来创建坦克、飞机、Boss对象…

MySQL数据库,表的增量备份与恢复

1. 从物理与逻辑的角度 数据库备份可以分为物理备份和逻辑备份。物理备份是对数据库操作系统的物理文件(如数据 文件,日志文件等)的备份。这种类型的备份适用于在出现问题时需要快速恢复的大型重要数据库。 物理备份又可以分为冷备份&#xf…

【JAVA-Day65】Java内部类深度解析

Java内部类深度解析 《Java内部类深度解析》摘要引言一、理解内部类1. 内部类的基本概念和语法1.1 什么是内部类?1.2 内部类的语法结构1.3 内部类的基本概念 2. 不同类型的内部类详解2.1 成员内部类2.2 静态内部类2.3 局部内部类2.4 匿名内部类 二、内部类与普通类的…

t2017030921字母矩阵

题1 字母矩阵(char) 【问题描述】 小Y才学C不久就写了一个字母矩阵的题,即给出一个数字N,画出一个最外围全是字母‘A’的中空矩形,当N5时形如下图: AAAAA A A A A A A AAAAA 小Q看了这个图形后,想了想马上给出这样一个…

【Unity自动寻路】使用Navigation系统实现物体自动寻路绕开障碍物

知识点流程图 自动导航Navigation系统 我们在游戏场景中经常会有一些障碍物、墙壁、树木等等,如果我想要让角色或者怪物去墙的另一边,我直接在墙另一边点击左键,我希望角色自动跑过去,但是他不能直接穿透墙,他需要“智…

04-Nacos中负载均衡规则的配置

负载均衡规则 同集群优先 默认的ZoneAvoidanceRule实现并不能根据同集群优先的规则来实现负载均衡,Nacos中提供了一个实现叫NacosRule可以优先从同集群中挑选服务实例 当服务消费者在本地集群找不到服务提供者时也会去其他集群中寻找,但此时会在服务消费者的控制台报警告 第…

六大设计原则

六大设计原则 1、单一职责原则 一个类或者模块只负责完成一个职责或者功能。 2、开放封闭原则 规定软件中的对象、类、模块和函数对扩展应该是开放的,对于修改应该是封闭的。用抽象定义结构,用具体实现扩展细节。 3、里氏替换原则 如果S是T的子类型…

STM32_串口下载程序

目录标题 前言1、理论知识2、串口下载具体操作2.1、硬件准备2.2、软件准备2.3、设置单片机的启动模式为系统存储器启动2.4、软件配置2.5、下载程序 附:生成hex文件 前言 使用调试器下载程序又快有稳定还能使用调试功能,当然是下载调试的首选。但是拓展下串口下载程…

BAQ压缩原理

什么是BAQ? BAQ——Block Adaptive Quantization,块自适应量化 BAQ是一种数据压缩算法。 谁提出了BAQ压缩? BAQ压缩原理是由美国NASA JPL的R. Kwok和W.T.K. Johnson在1989年提出的。第一次被用于美国NASA的“麦哲伦金星探测”任务中。 BAQ压缩的目的是什么? 上世纪后半…

Springboot Minio最新版大文件下载

上节我们说了Minio怎么大文件上传,我们是进行了分段上传,然后合并处理,感兴趣的可以去这篇文章, Springboot Minio最新版大文件上传-CSDN博客 那么今天的主题就是大文件下载,再大文件就需要分段下载,也就需…

网络爬虫第1天之数据解析库的使用

一、正则表达式 正则表达式(Regular Expression 简称regex或regexp)是一种强大的文本处理工具,它可以帮助实现快速的检索、替换或验证字符串中的特定模式。 1、match match()方法会尝试从字符串开始的位置到字符结束的位置匹配正则表达式&am…

gitee gihub上传步骤

上传 1. 到具体要上传的文件目录 2. 右击git Bash Here 初始化仓库:git init 3. 添加文件 添加所有文件 : git add . (注意这里有个点)添加具体文件: git add test.md 4. 添加到暂存区 git commit -m 暂存区 5. 将本地代…

如何将数据库导入MySQL的办法

在电脑cmd终端进行导入 首先找到MySQL中bin的位置 第一步:找到MySQL 第二步:进入MySQL 第三步:打开bin 第四步:输入cmd进入终端 第五步: 输入mysql -uroot -p 然后会弹出enter password: 输入你的密码…

C++-LD_PRELOAD

LD_PRELOAD是linux上的一个环境变量,作用是在程序启动前先加载这个动态链接库(无论程序本身是否需要)。使用场景通常是我们已经有一个release版本的动态库,此时我们想要调试动态库中的内容,又或者我们有一个v1版本的动…

Day10 Liunx高级系统设计11-数据库2

DQL:数据查询语言 查询全表 select * from 表名; 查询指定列 select 列名 1, 列名 2,… from 表名 ; 条件查询 select * from 表名 where 条件 ; 注意: 条件查询就是在查询时给出 WHERE 子句,在 WHERE 子句中可以使用如下运算符及关键 字&#…

linux笔记--VSCode利用交换机跳转服务器

目录 1--前言 2--VSCode设置 3--ssh连接 1--前言 博主学校的服务器有两个,其中一个服务器(14)可以通过挂内网VPN来进行连接,但另一个服务器(15)即使挂了VPN也不能连接,只能通过内网进行连接。…

条款4:确保对象在使用之前被初始化

文章目录 内置类型非局部静态对象总结 内置类型 C/C 中运行无初值的对象,是否确保对象初始化的规则很复杂。一般来说,如果使用C的C部分,并且初始化可能会导致运行时成本,则不能保证会发生。如果使用C的非C部分,情况有时…

深入理解前端项目中的 package.json

在前端开发中,package.json 是一个很重要的文件,它在Node.js和前端项目中扮演着重要的角色。这个文件用于存储项目的元数据以及管理项目的依赖关系。 package.json 文件是每个Node.js项目和许多前端项目的核心。它不仅定义了项目的基本属性,…

Docker笔记:配置docker网络与不通网络之间的通信及跨主机通信

配置 docker 网络 1 ) Docker0 网络 默认启动的所有容器,都会加入到这个网络中在有docker环境的 centos 中, 通过 $ ip addr 可以看到Docker0网络相关信息多个容器都在Docker0 网络中就属于同一个局域网了,就可以通信了启动三个…

ripro后台登录后转圈和图标不显示的原因及解决方法

最近,好多小伙伴使用ripro主题的小伙伴们都发现,登录后台后,进入主题设置就转圈,等待老半天后好不容易显示页面了,却发现图标不显示了,都统一显示为方框。 这是因为后台的js、css这类静态资源托管用的是js…