一、基础
1—概念
docker美语发音似:达克儿。目前是微服务部署主流容器工具。运行于linux
架构如下图
二、centOS安装
1—安装前准备
docker文档网站查看https://docs.docker.com/get-docker/安装/反安装方法。
# 首先更新yum,以确保获取的安装包为最新
sudo yum update
# 查看yum中央仓库源,以确保下载速度(可以添加国内镜像)
sudo yum repolist
# 添加仓库源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查看仓库如下图:
使用aliyun镜像加速
登录阿里云开发平台,如下图:
2—安装
# 安装docker
sudo yum install -y docker
# 启动docker
sudo systemctl start docker
# 开机启动docker
sudo systemctl enable docker
# 查看docker 状态
sudo systemctl status docker
# 停止docker
sudo systemctl stop docker
# 查看docker版本,验证运行
docker --version
安装并启动,如下图
三、使用
1—映像image
# 查看已有的映像。参数:-a/中间映像层 -q/只显示镜像ID --digest/显示镜像摘要 --no-trunc
docker images
# 在中央仓库中搜索映像。参数: -s 30/过滤显示星标大于30的镜像
docker search hello-world
# 下载hello-world
docker pull hello-world
# 方法2:下载并运行
docker run hello-world
# 删除映像
docker rmi <容器ID或名称>
搜索映像,如下图:
- 红色框为星标(推荐度)
- 粉色框为官方标志
运行hello-world,效果如下图 :
注意:映像名称不加后缀,则下载最新版本latest;如需下载指定版本,格式为tomcat:8.5.71
2—运行映像,形成容器
# 运行镜像。参数:-it/交互式运行,-d/守护式运行
docker run -it <容器ID或名称> --name <别名>
# 停止容器(运行的镜像)
docker stop <容器ID或别名>
# 重启已停止的容器,来源于docker ps -l返回结果
docker restart <容器ID或别名>
# 强制停止容器
docker kill <容器ID或别名>
# 查看镜像运行的容器摘要
docker inspect <容器ID或别名>
# 一次行执行容器内命令
docker exec <容器ID或别名> [命令,例如:ls /usr/local/]
# 登录到容器内
docker attach <容器ID或别名>
# 查看容器列表。参数:-l/最后运行的容器
docker ps
# 查看容器的历史记录
docker logs <容器ID或别名>
# 删除容器
docker rm <容器ID或别名>
运行容器后,如下图:
执行容器内命令如下图:
3—数据卷
用来访问宿主机目录,实现宿主机与容器共享目录的功能。比如mysql容器,保存数据库路径在宿主机目录,方便进行数据库备份与迁移。
如果只添加-v参数,不指定路径,那么docker将自动映射到/usr/local路径下一个UID的目录内。
-v参数可在一条命令内多次添加,以实现多目录共享。
# 映射宿主机与容器内目录
docker run -it -v 宿主路径:容器内路径 <镜像ID或名称>
4—容器数据卷
# 如果提示无权限读写时,加参数--privileged=true
docker run -it -volumes-from <容器ID或别名> <容器ID或别名2|镜像名称2>
用于实现2个或多个容器共享指定数据卷。而且后启动的容器的数据卷并不跟随先启动的容器关闭而失去共享链接。
容器数据卷的生命周期一直到没有容器使用该数据卷为止。
四、编辑&生成dockerFile
通过编写dockerFile,可生成docker images实现镜像的个性化,方便进行软件部署
1—命令集合
# 注释
FROM 基础镜像引入
MAINTAINER 作者及邮箱(维护者)
RUN
EXPOSE 访问端口
ENV
WORKDIR 工作目录
COPY 复制(可将宿主文件复制到容器内)
ADD 复制并解压缩(tar功能)
ENTRYPOINT 执行命令
CMD 执行命令,可写入多条,只有最后一条生效
2—编写案例
# 建立一个自定义tomcat,将运行hms系统
FROM centos:8
MAINTAINER zyl.ts<zyl@com>
# 把宿主机上下文c.txt复制到容器/usr/local/
# COPY c.txt /usr/local/ccomplile.txt
# 把java与tomcat添加到容器
ADD jdk-8u202-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.71.tar.gz /usr/local/
# 安装vim编辑器
# RUN yum install -y curl httpd grep vim
# 环境变量
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_202
ENV CLASSPATH $JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.71
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.71
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 复制网站到容器内
# COPY hms.war $CATALINA_HOME/webapps
# 容器监听的端口
EXPOSE 8080
# 启动时运行命令
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh"]
# CMD ["/usr/local/apache-tomcat-8.5.71/bbin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-8.5.71/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.71/logs/catalina.out
# 文件名默认为dockerfile
docker build -f 路径/文件名 -t <镜像名称:版本号> .
五、发布到中央仓库