本文章为《云计算》课程实验总结,使用CentOS7安装Docker并进行简单镜像制作。
注意:Docker要求CentOS系统的内核版本高于 3.10,可使用uname -r
查看系统内核。
1 Docker安装
(1)更新yum包
yum update
(2)安装依赖包
yum-util
提供yum-config-manager
功能,另外两个是devicemapper
驱动依赖。
yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置yum
国内源,提升下载速度。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装Docker
①查看Docker仓库所有版本
yum list docker-ce --showduplicates | sort -r
②选择版本安装
yum install -y docker-ce-18.06.3.ce
(5)验证Docker是否安装成功
①启动Docker
systemctl start docker
#systemctl enable docker 加入自启动
②docker version
有Client和Service代表安装成功。
2 测试实例 hello world
(1)下载hello-world image文件
docker image pull
是抓取image
文件的命令;library/hello-world
是image
文件在仓库里面的位置。
docker image pull library/hello-world
docker images可查看本地docker镜像有哪些。
(2)运行hello-world image文件
docker container run hello-world
3 Docker镜像制作
利用镜像运行容器。本实例创建一个简单的apache服务器镜像,并通过镜像运行容器。
(1)创建工作目录
mkdir apache
cd apache
(2)创建并编写dockerfile文件
vi dockerfile
并写入以下内容:
#基础镜像
FROM centos
#维护该镜像的用户信息
MAINTAINER The Centos Project<cloud-ops@centos.org>
#镜像操作指令安装 apache 软件包
#低版本centos需更新yum源,即加上下面这句
#RUN yum -y update
RUN yum -y install httpd
#开启 80 端口
EXPOSE 80
#复制index.html文件,并把它设置网站首页文件
ADD index.html /var/www/html/index.html
#将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]
(3)编写执行脚本run.sh
vi run.sh
并写入以下内容:
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND
(4)创建apache服务首页页面index.html
vi index.html
并写入以下内容:
<h1>Hello for Docker</h1>
(5)生成镜像
#docker build [选项] 路径
#-t:指定镜像的标签信息
docker build -t apache:centos .
#'.'表示当前路径
查看本地镜像docker images
(6)利用镜像运行容器
①实现将本地端口 8080 映射到容器中的 80 端口
docker run -d -p 8080:80 apache:centos
②windows下使用浏览器访问虚拟机:IP:8080
注:如果发现无法访问虚拟机,应该是防火墙的问题。开放相应端口或关闭防火墙即可。
#方式一:允许8080端口流量
firewall-cmd --permanent --zone=public --add-port=8080/tcp #防火墙开放8080端口:success代表设置成功
firewall-cmd --reload #重新加载防火墙配置:success代表成功
firewall-cmd --zone=public --query-port=8080/tcp #检查80端口配置是否生效:yes代表生效
#方式二:关闭防火墙
systemctl stop firewalld
systemctl disable firewalld