docker镜像打包

以 .NET CORE 3.0重新打包加入gdiplus为例

镜像打包

1 查找镜像

1 从dockerhub拉取指定镜像

docker pull [images]:[version]

此处,我用dockerfile拉取的,我的命令

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim

2 查看镜像信息列表

docker images

镜像是静态的,得到镜像id,880d85db3775

2 修改容器

1 将镜像运行起来
后台启动docker,并指定宿主机端口和docker映射端口。

docker run -p 8000:80 -tdi --privileged [imageID] [command]
-i:以交互模式运行容器,通常与 -t 同时使用;
-d:后台运行容器,并返回容器ID;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--privileged 容器将拥有访问主机所有设备的权限

通常情况下 [command] 填下 /bin/bash 即可。

特殊情况下,如需要在centos镜像中使用systemctl,则应添加--privileged 并设置[command ]为 init。

我的命令

docker run -p 9699:80 -tdi --privileged 880d85db3775 /bin/bash

2 查看运行中的所有容器,得到容器id为

docker ps -a

3 当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:

sudo docker exec -it [containerID] /bin/bash

交互模式中,使用 ctrl+p+q 退出交互 保持运行,使用 exit命令退出并停止容器。

我的命令,在docker内安装gdiplus,安装后退出交互

sudo docker exec -it 12b89974bc2b /bin/bash
apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

4 在容器非交互模式下,通过命令来启动/停止已部署的容器服务。

docker start/stop

5 删除容器

docker rm [containerID]

6 删除镜像

docker rmi [imageID]

7 将宿主机内的指定文件传输至容器内部的指定地址

docker cp [YourHostFilePath] [containerID]:[DockerPath]

3 制作新镜像

1 将修改后的容器重新打包成镜像

docker commit [containerID] [ImageName]:[Version]

我的命令,打包后并查看

docker commit 12b89974bc2b wscore3:v1
docker images

将容器保存为新的镜像,并添加提交人信息和说明信息。

docker commit -a "ws" -m "wscore3v1" 12b89974bc2b wscore3:v1

参数说明
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

3 提交镜像到云仓库

docker push [ImageID] [repertory_address]

参考

Docker常用命令大全
.NET Core 图片操作在 Linux/Docker 下的坑

原文地址:https://www.cnblogs.com/xcsn/p/12121421.html

时间: 2024-10-31 01:22:35

docker镜像打包的相关文章

docker教程——docker镜像打包上传

在开始使用URLOS进行docker应用开发之前,我们先来了解一下docker镜像的打包方法.首先,安装URLOS,安装完成之后,docker也随之安装到了主机里.执行以下命令安装URLOS: curl -SO https://www.urlos.com/install && chmod 544 install && ./install 简单制作一个属于自己的nginx镜像 基本流程:1.从docker云端拉取一个ubuntu-16.04的镜像:2.更新这个镜像,并安装ng

Docker02 Docker初识:第一个Docker容器和Docker镜像

目录 [TOC] 一.第一个Docker容器 使用docker run 命令时,如果在本地没有改镜像,那么会直接重Docker Hub(一个官方的镜像库)中拉取镜像. docker run --rm hello-world # 运行结果展示 Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9bb5a5d4561a: Pulling fs layer docker:

精简docker镜像的建议

精简docker镜像的建议 作者: 张首富 时间: 2019-05-03 个人博客: www.zhangshoufu.com QQ群: 895291458 前提 因为公司业务需求,需要到客户现场部署我们代码的离线环境,因为各大银行和运营商所提供的底层系统各不相同,代码不一定能运行的起来,所以我们就采用了docker版的离线部署方式,报我们所有的应用全打成docker包,然后再到客户现场部署.但是这又引发了另外一个问题,因为我们的客户一般都是银行和运营商,所以我们要拷贝个东西到他们的系统里面是很费

教你打包自己的专属docker镜像

前序 什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 具体关于Docker更多的介绍请自行网上查阅 一.Docker环境的搭建 Docker基于Linux系统为基础的,所以我们先要准备一台Linux系统,这里以CentOS6.8为例 1.检查系统是否可以上网 # ping www.baidu.com 2.安装epel

如何将应用打包成为 Docker 镜像

容器是镜像的实例,先声明镜像,再创建容器,所以容器可以有多个. 虽然 DockerHub 提供了大量的镜像,但是由于企业环境的多样性,并不是每个应用都能在 DockerHub 找到对应的镜像来使用.那就要求企业的运维人员掌握制作 Docker 镜像的技能.在开始打包应用前,你首先要明白这两件事: 第一件事是选择适合你的方式来生成镜像: 1. 通过 Dockerfile 来自动编译生成镜像,实现构建镜像的需求. 2.通过容器内操作,并进行 Commit 来实现打包生成镜像. 第一种思路多用于用户交

springboot构建rest服务,打包docker镜像

场景 项目提供rest服务,需要导出rest接口文档,并把服务打包成docker镜像. 过程 1.使用SpringBoot实现rest服务 Maven的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://mav

将php项目打包docker镜像

简介:有时候我们需要将php的项目打包成docker镜像,这里介绍下 思路:我们php和apache结合一个镜像实现php项目的访问,mysql是一个单独的镜像 步骤: 1.首先我们在本地测试好自己的php项目是不是可以用的,毕竟放到服务器上面后测试就不是很方便了.然后我们将php的项目导入到服务器中,在项目目录下新建index.php,myapp/index.php内容: <?php echo "Hello";?> 2.在项目的同目录下新建Dockerfile文件,内容:

docker高级应用之镜像打包与节点推送

目前我这里使用docker做caas平台,主要是解决: 1.运维沙箱环境测试: 2.研发半自动化代码部署与回滚: 3.集群化应用与auto scale. 目前这3点都实现,但在第2点与第3点联系的时候有个问题.在第2里,研发测试成功的代码会被打包为一个images,放入私有库,然后第3部集群更新的时候,会选择这个成功版本的镜像,但在更新中,由于每个节点都需要从私有库里获取镜像,这样节点越多更新越慢,所以为了解决这个问题,我这里在第二步研发打包image之后,会进行一下所有节点推送,这样在进行集群

操作系统-容器-Docker:如何将应用打包成为 Docker 镜像?

ylbtech-操作系统-容器-Docker:如何将应用打包成为 Docker 镜像? 1.返回顶部 1. 虽然 DockerHub 提供了大量的镜像,但是由于企业环境的多样性,并不是每个应用都能在 DockerHub 找到对应的镜像来使用.那就要求企业的运维人员掌握制作 Docker 镜像的技能.在开始打包应用前,你首先要明白这两件事: 第一件事是选择适合你的方式来生成镜像: 1. 通过 Dockerfile 来自动编译生成镜像,实现构建镜像的需求. 2.通过容器内操作,并进行 Commit