使用Dockerfile制作redis和sshd服务的镜像

前面章节介绍了Dockerfile中常用的命令,本章节将简单演示一下自己如何使用Dockerfile部署一个redis服务和sshd服务。
一、redis服务

1、通过源码包部署

[root@k8s-m1 docker2]# cat Dockerfile 
FROM centos:7
RUN yum install gcc gcc-c++ make openssl openssl-devel -y
WORKDIR /usr/local
ADD 7.0.11.tar.gz ./
# ADD https://github.com/redis/redis/archive/7.0.11.tar.gz ./   直接下载添加
RUN cd /usr/local/redis-7.0.11 &&  make && make PREFIX=/usr/local/redis install
ADD redis.conf /usr/local/redis/conf/redis.conf
EXPOSE 6379
ENTRYPOINT ["/usr/local/redis/bin/redis-server","/usr/local/redis/conf/redis.conf"]

[root@k8s-m1 docker2]# docker build -t redis:7.0.11 .
[root@k8s-m1 docker2]# docker run -itd -p 6379:6379  redis:7.0.11 
[root@k8s-m1 docker2]# redis-cli 
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> 

说明:二进制包安装时需要一些基础编译组件,需要提前安装,按需(我安装的可能不够精简),最好指定运行时的配置文件,免得不清楚它默认使用的配置文件。添加的redis.conf 可以在本地yum安装一个redis获得或者通过docker run一个容器然后cp出来修改,主要修改有三处:包括bind、protected-mode和requirepass,其他更优的配置请根据自己需要修改。redis安装包可以提前下载下来,也可以直接使用ADD下载添加,但是要注意版本要一致。

2、yum安装redis(测试更简单)
由于使用的yum源redis更新可能较慢,redis版本比较老,但是也能使用,也可以自行查找比较新的yum源添加。

[root@k8s-m1 docker2]# cat Dockerfile 
FROM  centos:7
COPY yum.repos.d /etc/yum.repos.d/
RUN yum install redis -y
COPY redis.conf /etc/redis.conf
EXPOSE 6379
ENTRYPOINT ["redis-server","/etc/redis.conf"]

二、sshd服务
使用Dockerfile创建

[root@k8s-m1 docker2]# cat Dockerfile 
FROM centos:7
MAINTAINER [email protected]
#RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd   #按需
RUN echo "123456" | passwd --stdin root  #设置容器内的root用户密码
RUN useradd test && echo "test:123456" | chpasswd  #另添加一个普通用户
#RUN sed -i 's/UsePAM yes/UsePAM no/g'   /etc/ssh/sshd_config  #关闭PAM认证
#RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key  #生成密钥
#RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd  #注释pam登录功能
#RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]


[root@k8s-m1 docker2]# docker build -t centos:sshd .

#以root身份登录
[root@k8s-m1 docker2]# ssh 192.168.2.140 -p 2022
The authenticity of host '[192.168.2.140]:2022 ([192.168.2.140]:2022)' can't be established.
ECDSA key fingerprint is SHA256:0PgfVQknbj/8pPs2ge7OiZkKC8+bOJO/2DasHCWZhO0.
ECDSA key fingerprint is MD5:38:43:cb:71:f6:be:c8:f7:37:d0:05:e9:29:e3:2b:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.2.140]:2022' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Last login: Fri Jun 16 03:15:21 2023 from 192.168.2.140
[root@f08eb7317102 ~]# 
[root@f08eb7317102 ~]# logout
Connection to 192.168.2.140 closed.

以普通用户登录
[root@k8s-m1 docker2]# ssh [email protected] -p 2022
[email protected]'s password: 
Last login: Fri Jun 16 03:15:35 2023 from 192.168.2.140
[test@f08eb7317102 ~]$ 

以上是制作两个比较简单的镜像,其他配置按个人需求添加配置。

更多关于docker容器和运维相关的知识,请前往博客主页。

你可能感兴趣的:(docker,redis,docker,运维)