Docker打包程序镜像
简介
做了一个视频检测程序,它是由golang和c++编写的。因为公司要做私有化部署,因此需要打包成镜像然后放到公司的registry镜像仓库里。之前一直没有去熟悉docker,现在刚好机会来了,咱就要好好把握。
安装docker
- 声明:我目前使用的是
Ubuntu 16.04的版本 - 下载安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun。如果下载不了提示库缺失xxx,需要注意的是你的包管理工具,打开/etc/apt/source.list,替换文件中的源:deb-src http://mirrors.aliyun.com/debian wheezy main contrib non-free
deb http://mirrors.aliyun.com/debian wheezy-updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian wheezy-updates main contrib non-free
deb http://mirrors.aliyun.com/debian-security wheezy/updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian-security wheezy/updates main contrib non-free```
然后再使用apt-get update,接着重新下载安装docker就可以了。
docker//测试是否安装成功
Dockerfile使用的一条龙
- 准备:我们尽量保证在一个干净的目录下工作,因为docker有个上下文的概念,
mkdir test创建一个新的工作目录,然后把程序放到该目录。 - 编写Dockerfile,
vim Dockerfile,内容如下:# 我的程序包名是millipedes,3rdparty和data是程序所需模型和数据,9190是我的程序端口
FROM ubuntu:16.04
COPY ./millipedes /opt/Millipedes/
COPY ./data /opt/Millipedes/data/
COPY ./3rdparty /opt/Millipedes/3rdparty/
ENV LD_LIBRARY_PATH /opt/Millipedes/3rdparty/opencb/lib:/opt/Millipedes/3rdparty/matrix/lib:/opt/Millipedes/ffmpeg/lib
EXPOSE 9190
CMD ["/opt/Millipedes/millipedes"]```
- 执行
docker build -t app .进行构建镜像。其中"."表示上下文目录及该目录,这与相对目录和绝对目录不同。 - 执行
docker images可以看到已经打包好的镜像。 - 尝试启动我们打包好的镜像
docker run -it -p 9190:9190 app /bin/bash - 退出镜像
exit - 登陆
docker login registry.qmemo.com,之后输入用户名和密码。 - 执行
docker tag app:latest registry.qmemo.com/millipedes/app:v1修改tag和名称。 - 执行
docker push registry.qmemo.com/millipedes/app:v1推到公司registry仓库。
docker的命令
首先我们要知道,docker打包出来的镜像有个容器,我们运行这个镜像就会进入这个镜像容器,所以镜像和容器是分开的,那么我们每次要删除一个镜像就要先删除停止里面的容器。
exit退出容器(镜像也会停止)docker stop xxxx停止容器xxxxdocker start xxxx重启容器xxxxdocker rmi app删除app镜像docker rm -f <容器id>删除容器docker build -t app .构建镜像,-t指定要创建的镜像名,.表示Dockerfile文件所在的目录docker images查看所以的镜像docker ps -a查看所有的容器docker ps查看运行中的容器docker run -it app /bin/bash启动进入容器docker stop <容器id>停止容器docker restart <容器id>重启容器docker exec -it <镜像id> /bin/bash使用exec进入容器,exit退出的时候不会停止容器停止docker attach <容器id>进入容器
结尾
目前总理了这些关于docker镜像的操作,后续会继续更新
Docker打包程序镜像的更多相关文章
- Docker Java程序镜像制作
Docker Java程序镜像制作 制作前的准备 jre:不需要完整的jdk,jre即可,到Oracle进行下载即可,下载链接,根据自己的情况进行选择,这里选择jre-8u221-linux-x64. ...
- windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库
最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,但是教程里面用的事Mac环境,我的是Windows环境,而且课程里面没有 ...
- springboot 通过docker 打包编译镜像
添加plugin <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...
- SpringBoot 部署 docker 打包镜像
SpringBoot 部署 docker 打包镜像 环境: 1.代码编写工具:IDEA 2.打包:maven 3.docker 4.linux 7.JDK1.8 8.Xshell 9.Xftp 第一步 ...
- docker打包镜像,测试部署
docker基本入门以后,(docker基本入门https://www.cnblogs.com/yangyangming/p/11470926.html)可以试试打包docker镜像与dockerfi ...
- docker 将正在运行的容器打包为镜像
将容器打包成镜像 docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签 OPTIONS ...
- Docker容器打包成镜像 - OpenDaylight官方 SDN Hub Tutorial VM 的docker镜像
由于工作需要,在看OpenDaylight (一个SDN的开源控制器) 官方Tutorial有一个比较基础且介绍比较详细的文档(http://sdnhub.org/tutorials/opendayl ...
- 生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败
docker打包镜像遇到一个因为nuget权限验证问题导致镜像打包失败的问题,公司Nuget包用的是tfs管理的,tfs有权限验证,结果导致nuget还原失败,原有的NuGet.config文件如下: ...
- 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像
Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...
- docker:打包node+npm+pm2运行环境镜像
最近公司有一个外包项目需要在不能连外网的情况下部署node项目到甲方公司内部.直接使用node官网的安装包可以获得node运行环境,但像pm2这种工具要离线装就会比较费劲,所以最终选择了使用docke ...
随机推荐
- HTML实现发送接收串口和TCP数据
前提 请安装通讯调试工具,所有的网页必须运行在本工具上,在其他浏览器直接打开是不行的. 效果显示 在网页上右键打开,选择其他应用 2.在其他应用中找到通讯调试工具 如果没有这一项,点更多,在计算机中查 ...
- #贪心#洛谷 6927 [ICPC2016 WF]Swap Space
题目 分析 可以发现能将硬盘容量变大的优先,这种硬盘就是以格式化前的大小升序排序. 然后如果硬盘容量变小,那就是先填格式化后较大的硬盘(因为装完可以提供较大的空间) 代码 #include <c ...
- #Multi-SG#BZOJ 2940 [POI2000] 条纹
题目 有\(n\)个格子,可以选择三种长度的线段覆盖,不能重叠, 无法覆盖者为负,问先手是否必胜,\(n\leq 10^3\) 分析 考虑选择一个位置覆盖则该局面分成两个局面, 直接求出SG函数不为0 ...
- #计数#A 古老谜题
From NOIP2020 模拟赛 B 组 Day4 题目 给定一个长度为\(n\)的01序列\(a\), 问有多少个三元组\((l,p,r),1\leq l<p<r\leq n\) 满足 ...
- #dp#D 导出子图
代码 #include <cstdio> #include <cctype> #include <algorithm> #define rr register us ...
- #斯坦纳树#洛谷 4294 [WC2008]游览计划
题目 分析 几乎就是模板题,考虑不同点就是它是点权, 所以在求两个子集的时候要减去这个点的点权, 还有一点恶心的就是要输出方案,令人作呕 代码 #include <cstdio> #inc ...
- Node 项目通过 .npmrc 文件指定依赖安装源
背景 npm 命令运行时,往往通过命令行指定相关配置,最常用的便是使用 --registry 来指定依赖的安装源. npm install --registry=https://registry.np ...
- C语言 01 概述
历史 C 语言是一门面向过程的计算机编程语言,于 1972 年诞生于贝尔实验室. C 语言是丹尼斯·里奇(Dennis Ritchie)以 B 语言为基础发展而来,因此他被称为 C 语言之父. C 语 ...
- RabbitMQ 09 主题模式
主题模式 主题模式结构图: 主题模式实际上就是一种模糊匹配的模式,可以将routingKey以模糊匹配的方式去进行转发. 可以使用*或#来表示: *:任意的一个单词. #:0个或多个单词. 定义配置类 ...
- 干货分享|身为顶尖的Hr,这个Excel插件你不能不知道,用上它事业开挂!
第一季度,老板看了历年不同地区各销售业绩数据表的总结,说想知道新人进来多久才能成为成熟的销售,成长周期有多长? 我们人事被老板这个灵光一现的想法吓到了,大家伙上上下下为这件事情忙了4个日夜. 整整五年 ...