随着Docker技术的快速发展,无所不涉猎的运维汪也自学了一些入门知识,记录此文档顺便分享给大家。
现在网上关于Docker的资料基于Ubuntu的较多,本文是基于redhat/centos的环境,本文宿主是redhat7.3,docker镜像是centos7.0。
一、创建支持SSH服务的CentOS镜像
1、 在宿主redhat7.3上安装docker:
#yum –y install epel-release
#yum –y install docker-io
2、 启动docker服务:
#systemctl start docker.service
3、 查找下载centos的docker镜像
#docker search centos
#docker pull centos //由于docker默认的镜像中心在国外,故有下载失败的可能,多下载几次。
4、 启动centos的docker容器
#docker run –it –name=centos-sshd centos/bin/bash
5、 升级系统并安装openssh-server:
#yum –y update
#yum –y install openssh-server
6、 编辑sshd的配置文件/etc/ssh/sshd_config,将其中UsePAM参数设置成“no”;
7、 生成RSA密钥对:
#ssh-keygen –t rsa –b 2048 –f/etc/ssh/ssh_host_rsa_key
出现下面的提示时直接回车:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
8、 同时在宿主机上也生成密钥对,然后再将生成的公钥文件的内容复制到容器的/root/.ssh/authorized_keys文件中,如果此文件不存在,则创建一个。
9、 设置容器root密码:
#echo “root:123456” | chpasswd
10、启动sshd服务并退出容器:
#/usr/sbin/sshd –D
#exit
11、生成支持sshd的新的镜像,先查看刚刚容器的容器ID:
#docker ps –a
查看ContainerID 将刚才容器的ID记下,如下命令提交生成新的镜像:
#docker commit 623fdsadgadgdsa sshd-centos
#docker images //查看生成的新镜像sshd-centos
12、根据新生成的镜像运行容器:
#docker run –p 10022:22 –d sshd-centos /usr/sbin/sshd –D
新运行的容器会将22端口映射到宿主机的10022端口上,从宿主机外部就可以通过10022端口访问该容器。
二、基于Docker搭建Apache简易站点
1、运行一个容器:
#docker run –it sshd-centos /bin/bash
2、升级系统并安装httpd软件:
#yum –y update
#yum –y install httpd
#exit
3、查看上述容器的ID,提交生成新的镜像centos-httpd
#docker ps –a
#docker commit 2333ddghddsadg centos-httpd
4、查看本地镜像列表,确保新的镜像centos-httpd已经生成:
#docker images
5、在宿主机上创建主页文件index.html和docker创建文件Dockerfile:
#echo “
#vim Dockerfile
FROM centos-httpd //读取centos-httpd镜像
ADD index.html /var/www/html/ //将主页文件index.html放到容器的站点目录下
EXPOSE 80 //开启容器的80端口
ENTRYPOINT [ “/usr/sbin/httpd” ] //httpd的可执行文件
CMD [ “-D”, “FOREGROUND” ]
基于Dockerfile文件创建站点镜像:
#docker build -rm –t mysite .
6、创建好镜像后,可通过#dockerimages命令查看:
7、运行该容器:
#docker run -d -p 32769:80 mysite
-p 参数指定特定端口
8、可通过客户端浏览器验证:
http://10.7.13.9:32769
删除