💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

本人主要分享计算机核心技术:系统维护、数据库、网络安全、自动化运维、容器技术、云计算、人工智能、运维开发、算法结构、物联网、JAVA 、Python、PHP、C、C++等。
不同类型针对性训练,提升逻辑思维,剑指大厂,非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。

Docker入门实战-SSH连接docker容器

简介

什么是Docker

Docker是一个开源的容器化平台,旨在简化应用程序的开发、部署和运行过程。它通过容器化技术,将应用程序及其依赖项打包到一个轻量级的、独立的容器中,使得应用程序可以在任何支持Docker的环境中以一致的方式运行‌。

Docker的基本概念

  1. ‌容器(Container)‌:容器是Docker的基本部署单元,是一个轻量级的、独立的运行时环境,包含应用程序及其相关依赖。容器利用Linux内核的命名空间和控制组技术,实现隔离性和资源管理‌2。
  2. ‌镜像(Image)‌:镜像用于创建容器的模板,包含一个完整的文件系统,包括应用程序运行所需的所有文件、依赖和配置信息。镜像是不可变的,通过Docker镜像可以创建多个相同的容器实例‌。
  3. ‌镜像仓库(Image Registry)‌:镜像仓库用于存储和分发Docker镜像。最常用的公共镜像仓库是Docker hub,此外还可以搭建私有的镜像仓库‌。
  4. ‌Dockerfile‌:Dockerfile是一种文本文件,用于定义Docker镜像的构建过程。它包含一系列指令,用于指定基础镜像、安装软件、拷贝文件、配置环境等‌。

Docker的优势

  1. ‌轻量级和高效‌:Docker容器共享主机的操作系统内核,启动速度快,资源占用少‌。
  2. ‌可移植性‌:Docker容器可以在不同的平台上无缝迁移,无需担心依赖和环境配置的差异‌。
  3. ‌一致性‌:无论在本地还是云端,应用的运行环境都能保持一致,减少了因环境差异导致的问题‌。
  4. ‌隔离性‌:每个容器都是独立运行的,完全隔离,避免了公用的服务器资源受到其他用户的影响‌。
  5. ‌快速启动‌:Docker容器可以做到秒级甚至毫秒级的启动时间,大大节约了开发、测试、部署的时间‌。
  6. ‌易于管理和扩展‌:能够快速部署新的应用实例,并且可以根据需求轻松地进行水平扩展‌。

Docker的应用场景

  1. ‌开发环境一致性‌:开发人员可以在本地构建一致的开发环境,确保在不同环境中都能以一致的方式运行‌。
  2. ‌微服务架构‌:Docker是微服务架构的理想选择,允许将大型应用程序分解成较小的、独立的模块,提高敏捷性和可扩展性‌。
  3. ‌持续集成/持续部署(CI/CD)‌:Docker简化了应用程序的部署和管理,使得自动化部署和测试变得更加容易‌。

总之,Docker通过提供轻量级、可移植和自包含的容器化环境,极大地简化了应用程序的开发、部署和运行过程,成为现代软件开发和部署的重要工具。

具体说来,Docker 在如下几个方面具有较大的优势。

更快速的交付和部署

对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。

开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

更高效的虚拟化

Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

更轻松的迁移和扩展

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

对比传统虚拟机总结
特性 容器 虚拟机
启动 秒级 分钟即
硬盘使用 一般为MB 一般为GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

安装Docker

本来打算在CentOS6上安装Docker,最终由于CentOS6上自带的kernel版本太低导致Docker启动失败而放弃(kernel升级太繁琐)。

下面使用CentOS7安装Docker,本人采用虚拟机的方式来安装,安装好的虚拟机必须保证能访问外网。

CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装:

$ sudo yum install docker

安装之后启动 Docker 服务,并让它随系统启动自动加载:

$ sudo service docker start$ sudo chkconfig docker on

获取镜像

可以使用 docker pull 命令来从仓库获取所需要的镜像。

下面的例子将从 Docker Hub 仓库下载一个Centos6并且安装了jdk7的镜像:

$ docker pull tcbenkhard/centos6-jdk7
  • 列出本地镜像

使用 docker p_w_picpaths 显示本地已有的镜像。

$ docker p_w_picpaths

启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 
下面的命令则启动一个 bash 终端,允许用户进行交互。

$ docker run -t -i docker.io/tcbenkhard/centos6-jdk7 /bin/bash[root@ffe81683c404 /]#
  • 其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开。

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括: 
(1)检查本地是否存在指定的镜像,不存在就从公有仓库下载 
(2)利用镜像创建并启动一个容器 
(3)分配一个文件系统,并在只读的镜像层外面挂载一层可读写层 
(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 
(5)从地址池配置一个 ip 地址给容器 
(6)执行用户指定的应用程序 
(7)执行完毕后容器被终止

可以使用下面命令来查看CentOS版本信息:

$ cat /etc/redhat-release
  • 修改root密码

使用passwd密码来修改密码(如提示没有这个命令行使用yum install passwd安装):

$ passwd    xxx密码    xxx确认密码123

安装Openssh

使用下面命令安装ssh server/ssh client:

$ sudo yum -y install openssh-server$ sudo yum -y install openssh-clients

修改SSH配置文件以下选项,去掉#注释,将四个选项启用:

$ vi /etc/ssh/sshd_configRSAAuthentication yes #启用 RSA 认证PubkeyAuthentication yes #启用公钥私钥配对认证方式AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)PermitRootLogin yes #root能使用ssh登录123456

重启ssh服务,并设置开机启动:

$ service sshd restart$ chkconfig sshd on

退出容器并保存更改

使用exit命令或者ctrl+C来退出当前运行的容器:

[root@ffe81683c404 /]# exit

注意:上面ffe81683c404是容器的ID,退出后用于保存的唯一ID。

当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交更新后的副本。

$ sudo docker commit -m 'install openssh' -a 'Docker Newbee' ffe81683c404  centos6-jdk7:ssh4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c12

其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。

提交后docker中就会多出一个centos6-jdk7:ssh的一个镜像。 

启动新的容器并打通22端口

将新的镜像启动,并将docker服务器的50001端口映射到容器的22端口上:

$ docker run -d -p 50001:22 centos6-jdk7:ssh /usr/sbin/sshd -D

ssh连接容器: 

至此SSH连接docker容器成功完成

Logo

一站式 AI 云服务平台

更多推荐