【云原生 | 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

目录
相关文章
|
15天前
|
边缘计算 Cloud Native 安全
构建灵活高效的下一代应用架构 随着企业数字化转型的加速,云原生技术正逐渐成为构建现代化应用程序的关键支柱。
随着企业数字化转型加速,云原生技术逐渐成为构建现代化应用的关键。本文探讨了云原生的核心概念(如容器化、微服务、DevOps)、主要应用场景(如金融、电商、IoT)及未来发展趋势(如无服务器计算、边缘计算、多云架构),并分析了面临的挑战,如架构复杂性和安全问题。云原生技术为企业提供了更灵活、高效的应用架构,助力数字化转型。
38 4
|
11天前
|
Cloud Native 持续交付 云计算
云原生技术深度探索:构建现代化应用的基石####
【10月更文挑战第21天】 本文将深入探讨云原生技术的核心概念、关键技术及其在现代软件开发中的应用。我们将从容器化、微服务架构、持续集成/持续部署(CI/CD)、无服务器架构等关键方面展开,揭示这些技术如何共同作用,帮助企业实现高效、弹性且易于维护的应用部署与管理。通过实例分析,展现云原生技术在实际项目中的显著优势,为读者提供一套全面理解并应用云原生技术的指南。 ####
29 2
|
1天前
|
监控 Cloud Native 微服务
云端漫步:探索云原生应用的构建与部署
【10月更文挑战第32天】在数字时代的浪潮中,云原生技术如同一艘航船,承载着企业的梦想驶向未知的海洋。本文将带你领略云原生应用的魅力,从基础概念到实战操作,我们将一步步揭开云原生的神秘面纱,体验它如何简化开发、加速部署,并提升系统的可扩展性与可靠性。让我们一起启航,探索云原生的世界!
|
24天前
|
运维 Cloud Native 持续交付
云原生技术:构建现代应用的基石
【10月更文挑战第9天】在数字化转型的浪潮中,云原生技术如同一股清流,引领着企业走向更加灵活、高效的未来。本文将深入探讨云原生的核心概念,揭示其在现代应用开发与部署中的重要作用,并通过实际案例分析,展现云原生技术如何助力企业实现敏捷开发和自动化运维,最终提升业务竞争力。
70 3
|
24天前
|
运维 Kubernetes Cloud Native
云原生技术:构建现代应用的新范式
【10月更文挑战第9天】 云原生是一种通过云计算环境优化的软件开发和运行方法论,旨在最大化利用云平台的灵活性、可扩展性和弹性。本文将深入探讨云原生技术的基本原理、核心组件以及其在实际项目中的应用。我们将从Kubernetes的容器编排机制入手,逐步探讨如何通过自动化工具实现持续集成与持续部署(CI/CD),最终展示如何构建一个高效、可靠的云原生应用。
34 2
|
21天前
|
Cloud Native Devops 云计算
云原生技术:构建现代应用的新基石
【10月更文挑战第12天】 本文深入探讨了云原生技术的核心理念、关键技术和实践方法,揭示了其在现代应用开发和运维中的重要地位。通过分析云原生技术的发展趋势和面临的挑战,本文为读者提供了全面而深入的理解,旨在帮助读者更好地利用云原生技术构建高效、灵活和可扩展的现代应用。
34 0
|
24天前
|
监控 Cloud Native 持续交付
云原生技术:构建现代应用的新范式
【10月更文挑战第9天】 随着云计算技术的不断成熟,云原生技术正迅速成为现代应用开发和部署的新标准。云原生不仅是一种技术,更是一种理念和实践方法,旨在最大化利用云计算的优势,提升应用的灵活性、可扩展性和弹性。本文将深入探讨云原生的核心概念、关键技术以及它如何改变我们构建和运行应用程序的方式。
79 0
|
5天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
13天前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
12天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
58 10