【云原生 | 13】基于commit构建镜像实战

简介: Docker提供了docker commit命令,支持用户提交自己对制定容器的修改,并生成新的镜像。命令格式为docker commit CONTAINER[REPOSITORY[: TAG]]。

  🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅

✒️个人主页:小鹏linux

💊个人社区:小鹏linux(个人社区)欢迎您的加入!image.gif

目录

1.基于commit命令创建

1.1 准备工作

1.2 安装和配置SSH服务

1.3 保存镜像

1.4 使用镜像

👑👑👑结束语👑👑👑


1.基于commit命令创建

Docker提供了docker commit命令,支持用户提交自己对制定容器的修改,并生成新的镜像。命令格式为docker commit CONTAINER[REPOSITORY[: TAG]]。

这里将介绍如何用docker commit命令。我以ubuntu:14.04镜像添加SSH服务的操作流程为例。

1.1 准备工作

首先,使用ubuntu:14.04镜像来创建一个容器:

$ docker run -it ubuntu:14.04 /bin/bash

image.gif

更新apt缓存,并安装openssh-server:

root@fc1936ea8ceb:/#apt-get update; apt-get install openssh-server -y

image.gif

1.2 安装和配置SSH服务

选择主流的openssh-server作为服务端:

root@fc1936ea8ceb:/# apt-get install openssh-server –y

image.gif

如果需要正常启动SSH服务,则目录/var/run/sshd必须存在。手动创建它,并启动SSH服务:

root@fc1936ea8ceb:/# mkdir -p /var/run/sshd 
root@fc1936ea8ceb:/# /usr/sbin/sshd -D &
[1] 3254

image.gif

此时查看容器的22端口(SSH服务默认监听的端口),可见此端口已经处于监听状态:

root@fc1936ea8ceb:/# netstat -tunlp 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address    Foreign Address    State    PID/Program name 
tcp        0      0 0.0.0.0:22       0.0.0.0:*          LISTEN - 
tcp6       0      0 :::22            :::*               LISTEN -

image.gif

修改SSH服务的安全登录配置,取消pam登录限制:

root@fc1936ea8ceb:/# sed -ri 's/session required pam_loginuid.so/#session 
    required     pam_loginuid.so/g' /etc/pam.d/sshd

image.gif

在root用户目录下创建.ssh目录,并复制需要登录的公钥信息(一般为本地主机用户目录下的.ssh/id_rsa.pub文件,可由ssh-keygen-t rsa命令生成)到authorized_keys文件中:

root@fc1936ea8ceb:/# mkdir root/.ssh 
root@fc1936ea8ceb:/# vi /root/.ssh/authorized_keys

image.gif

创建自动启动SSH服务的可执行文件run.sh,并添加可执行权限:

root@fc1936ea8ceb:/# vi /run.sh 
root@fc1936ea8ceb:/# chmod +x run.sh

image.gif

其中,run.sh脚本内容如下:

#!/bin/bash 
/usr/sbin/sshd -D

image.gif

最后,退出容器:

root@fc1936ea8ceb:/# exit 
exit

image.gif

1.3 保存镜像

将所退出的容器用docker commit命令保存为一个新的sshd:ubuntu镜像:

$ docker commit fc1 sshd:ubuntu 
7aef2cd95fd0c712f022bcff6a4ddefccf20fd693da2b24b04ee1cd3ed3eb6fc

image.gif

使用docker images查看本地生成的新镜像sshd:ubuntu,目前拥有的镜像.


如下:

$ docker images 
REPOSITORY     TAG     IMAGE ID       CREATED             VIRTUAL SIZE 
sshd           ubuntu  7aef2cd95fd0   10 seconds ago      255.2 MB
busybox        latest  e72ac664f4f0   3 weeks ago         2.433 MB
ubuntu         latest  ba5877dc9bec   3 months ago        192.7 MB

image.gif

1.4 使用镜像

启动容器,并添加端口映射10022-->22。其中10022是宿主主机的端口,22是容器的SSH服务监听端口:

$ docker run -p 10022:22 -d sshd:ubuntu /run.sh 
3ad7182aa47f9ce670d933f943fdec946ab69742393ab2116bace72db82b4895

image.gif

启动成功后,可以在宿主主机上看到容器运行的详细信息:

$ docker ps 
CONTAINER ID        IMAGE        COMMAND        CREATED       STATUS       PORTS     NAMES 
3ad7182aa47f        sshd:ubuntu  "/run.sh"      2 seconds ago Up 2 seconds 0.0.0.0:10022->22/tcp focused_ptolemy

image.gif

在宿主主机(192.168.1.200)或其他主机上,可以通过SSH访问10022端口来登录容器:

$ ssh 192.168.1.200 -p 10022 
root@3ad7182aa47f:~#

image.gif

👑👑👑结束语👑👑👑

image.gif

目录
相关文章
|
18天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
18天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
12天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
23天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
1月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
1月前
|
运维 Cloud Native Docker
云端漫步:构建你的第一个云原生应用
在这篇文章中,我们将一起踏上一段激动人心的旅程,探索如何从零开始构建一个云原生应用。我们将深入理解云原生的核心概念,并通过实际代码示例,学习如何利用云平台的强大功能来部署和管理应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的指导和启发。让我们一起开启这场云端之旅,发现云原生应用的魅力吧!
37 3
|
1月前
|
运维 Kubernetes Cloud Native
云原生架构:构建现代应用程序的基石####
本文将深入探讨云原生架构的核心概念、关键特征及其对现代软件开发的重要性。不同于传统的摘要概述,我们将通过一个生动的案例引入——想象一下,一家初创企业如何在短短几个月内,从零开始构建起一个能够支撑数百万用户访问量、具备高可用性与弹性伸缩能力的在线服务平台。这个过程中,云原生技术扮演了怎样的角色?它是如何帮助这家企业快速响应市场变化,同时保持系统稳定性和成本效益的?带着这些问题,让我们一起揭开云原生架构背后的神秘面纱。 ####
|
25天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
23天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
44 3