docker是一个完整的容器管理系统
docker提供了一组命令,让用户更加方便的直接使用容器技术,不需要过多的关心底层内核技术
优点是起个容器跟起进程一样快速,缺点是 公用LINUX内核,安全性有先天缺陷,监控容器和容器排查比较困难,SELINUX机制不好处理
部署docker
提前准备带yum源的centos7.0以上的linux系统
yum -y install docker ###安装docker
systemctl enable docker ###开机自启
systemctl start docker ###启动容器
由于docker的容器都是由镜像启动的
镜像是容器的核心,采用的是读时复制技术确保底层技术不丢失
查看镜像命令
docker images ####查看docker镜像
docker rmi 镜像名字或者id ##删除镜像 (删除镜像需要对面的容器关闭才能删除)
docker save 镜像 -o /opt/镜像.docker ###将docker中的镜像另存为目录中
docker load -i /opt/镜像.docker ###将目录中的镜像导入docker
docker tag ###修改镜像名字
docker run ###启动容器
docker commit [容器ID] 生成镜像 ##根据当前容器生成新镜像
docker rm ###删除容器
docker exec ###进入正在运行的容器
docker ps ### 查看正在运行的容器 docker ps -a 查看全部的容器不管是否运行
拉取博主docker hub centos镜像
docker pull 847179190/repo:centos
docker images 查看镜像
docker run -it docker.io/847179190/repo:centos /bin/bash
exit 和 ctrl+p+q 都是退出容器 不同点是 exit退出容器关闭容器
ctrl+p+q退出容器保持容器状态
docker exec -it d1 /bin/bash 再次进去已开启的容器
根据当前容器生成新镜像做到自定义镜像
docker commit d1 diy1
初步的docker 部署使用方法介绍完 建议去docker hub注册账户使用docker hub镜像仓库达到快速部署,下面开始讲Dockerfile
Dockerfile 语法
FROM ####基础镜像 根据什么镜像来盖
MAINTAINER #### 镜像创建者信息
EXPOSE ### 开放端口
ENV ### 设置变量
ADD ###复制文件到镜像 复制文件需和Dockerfile在一个目录
RUN ###制作镜像时执行的命令 可以多个
WORKDIR ###自定义容器默认的工作目录
CMD #### 容器启动时执行的命令,只能有一条
使用案例:
mkdir /opt/docker ; cd /opt/docker
echo yke > /opt/docker/index.html
vim /opt/dcoker/Dockerfile
FROM 847179190/repo:centos ###根据旧镜像
RUN yum -y install httpd ###执行命令
ADD index.html /var/www/html/ ###将/opt/docker/index.html 添加进容器
EXPOSE 80 ####开放端口
EXPOSE 443
ENV EnvironmentFile=/etc/sysconfig/httpd ##一般在/usr/lib/systemd/system/http.service里面看 ENV哪项
CMD ["httpd","-DFOREGROUND"] #####也在/usr/lib/systemd/system/http.service start变量
编辑完后再确认下是否进入cd /opt/docker/下,确保目录有Docfile和 index.html 然后
docker build -t diy2 . ### diy2为生成镜像名字 。很重要表示当前目录
SUCCESSFULLY显示成功
docker run -itd -p 80:80 diy2 ##-p 真机端口:容器端口 端口映射
curl localhost
接下来是docker 持久化
mkdir /opt/html/ ; echo dyt > /opt/html/index.html
docker run -itd -p 80:80 -v /opt/html:/var/www/html/ diy2