Docker实战(七)之为镜像添加SSH服务

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

1.基于commit命令创建

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

(1)创建一个镜像

docker run -it ubuntu:14.04 /bin/bash

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

apt-get update

apt-get install openssh-server -y

(2)安装配置SSH服务

apt-get install openssh-server -y

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

mkdir -p /var/run/sshd

/usr/bin/sshd -D &

netstat -tunlp

(3)保存镜像

docker commit 1b902596b8b9 sshd:ubuntu

(4)使用镜像

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

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

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

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

ssh IP -p 10022

2.使用Dockerfile创建

(1)创建工作目录

mkdir sshd_ubuntu

cd ssh_ubuntu

在该目录中创建Dockerfile和run.sh文件

 

(2)编写run.sh脚本和authorized_keys文件

run.sh脚本内容如下:

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

在宿主主机上生成SSH密钥,并创建authorized_keys文件:

ssh-keygen -t rsa

cat authorized_keys.pub > authorized_keys

 

(3)编写Dockerfile文件

#设置继承镜像
FROM ubuntu:14.04

#提供一些作者信息
MAINTAINER docker_user(user@docer.com)

#下面开始运行更新命令
RUN apt-get update

#安装ssh服务
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh

#取消pam限制
RUN sed -ri 's/session required pam_loginuid.sh/#session required pam_loginuid.so/g' /etc/pam.d/sshd

#复制配置文件到相应位置,并赋予脚本可执行权限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh

#开放端口
EXPOSE 22

#设置自启动命令
CMD ["/run.sh"]

 

(4)创建镜像

执行该命令即可创建镜像

docker build -t sshd:dockerfile .

记得必须要在Dockerfile文件存在的目录执行该命令否则会报找不到目录异常

docker images

(5)测试镜像,运行容器

docker run -d -p 10122:22 sshd:dockerfile

在宿主主机新打开一个终端,连接到新建容器:

ssh 192.168.126.130 -p 10122

 

目录
相关文章
|
2月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
347 100
|
2月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
276 99
|
2月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
294 98
|
2月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
344 5
|
2月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
176 8
|
3月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
282 16
|
算法 安全 Ubuntu
Ubuntu 14.04手动安装SSH服务
zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权。
335 0
|
Ubuntu 网络安全
ubuntu 安装ssh 服务
百度地址: http://jingyan.baidu.com/article/00a07f38a5c05482d128dc5f.html
1032 0
|
1月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
275 146