Dockerfile 中为 centos7 添加 ssh、修改镜像密码(小白也会)

介绍

本文介绍为 Docker 镜像:

  1. 添加ssh
  2. 修改镜像密码
  3. 启动容器自启 ssh

包括三大Linux 的发行版:

  1. centos7
  2. ubuntu 14
  3. alpine

Centos7

Dockerfile

# docker hub 中的开源镜像
FROM datagrip/greenplum:6.1

MAINTAINER 孙武@gsunwu@163.com

# datagrip/greenplum 是  CentOS Linux release 7.7.1908 (Core),为他添加ssh功能
RUN apt-get -o Acquire::Check-Valid-Until=false update
RUN apt update && apt install -y openssh-server

# 修改镜像密码为root:root
RUN echo 'root:root' | chpasswd
RUN sed  's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

# 设置自启脚本并授予可执行权限
RUN echo '/usr/sbin/sshd -D\n\
tail -f /dev/null\n' >/init.sh && chmod +x /init.sh

# 开放22端口
EXPOSE 22

# 指定入口文件,启动镜像的时候执行
ENTRYPOINT /init.sh

alpine

Dockerfile

# 这个镜像是 ubuntu 的
FROM boostport/hbase-phoenix-all-in-one:2.0-5.0
MAINTAINER 孙武@gsunwu@163.com

# 替换阿里云的源
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories
RUN apk update && apk add --no-cache openssh-server
RUN mkdir /var/run/sshd

# 修改镜像的账号和密码
RUN echo "root:root" | chpasswd

RUN rm -rf /etc/ssh/sshd_config
COPY sshd_config /etc/ssh/sshd_config

# 设置自启脚本并授予可执行权限
RUN echo $'/usr/sbin/sshd -D\n\
tail -f /dev/null\n' >/init.sh && chmod +x /init.sh

# 开放22端口
EXPOSE 22

# 指定入口文件,启动镜像的时候执行
ENTRYPOINT /init.sh

Ubuntu

Dockerfile

# ubuntu 的镜像
FROM flink:scala_2.12
MAINTAINER 孙武@gsunwu@163.com

# 添加ssh
RUN apt-get -o Acquire::Check-Valid-Until=false update
RUN apt update && apt install -y openssh-server
RUN mkdir /var/run/sshd

# 修改账号名称和密码
RUN echo 'root:root' | chpasswd
RUN sed  's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

# 设置自启脚本并授予可执行权限
RUN echo '/usr/sbin/sshd -D\n\
tail -f /dev/null\n' >/init.sh && chmod +x /init.sh

# 开放22端口
EXPOSE 22

# 指定入口文件,启动镜像的时候执行
ENTRYPOINT /init.sh

工具

在开发的时候,往往需要重新构建镜像、运行镜像、进入容器。为了减少重复的工作量,我使用了 Make 工具,以下是一个构建过程中的 Makefile, 将 <…> 替换即可直接使用。

#!/usr/bin/make
repo :=<your repo>
name :=greenplum
version := v0.1.1
sshport :=<your ssh's port>
t:
	docker build -t ${repo}/${name}:${version} .
v :
	@echo "version ${name}:${version}"
	
rmi:
	docker rmi -f ${name}:${version}

run:
	docker run  -p ${sshport}:22  -itd --privileged  --name ${name}${version} ${repo}/${name}:${version}

del:
	docker rm -f ${name}${version}

e:
	docker exec -it ${name}${version} bash

bld :
	docker build -t ${repo}/${name}:${version} .

push:
	docker push ${repo}/${name}:${version}

logs:
	docker logs ${name}${version}

rb:del bld run e

nb:bld run e

使用说明:

make t		构建镜像
make v		查看镜像信息
make rmi	移除镜像
make run	运行镜像
make del 	删除容器
make e		进入容器
make rb		删除镜像、构建镜像、运行容器、进入容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值