1.安装Docker
#检查内核版本是否是3.10以上
uname -r
#如果低于3.10就需要更新内核
yum update
#安装docker
yum install docker
#启动docker
systemctl start docker
#查看docker版本
docker -v
2.Docker操作命令
#搜索需要安装的软件
docker search mysql
#安装软件,可以根据tags指定版本,详见https://hub.docker.com/r/library/mysql/tags/
docker pull mysql:5.7
#查看docker的所有镜像
docker images
#删除镜像 images-id可以通过docker images查看
docker rmi [images-id]
#docker run --name [自定义容器名称] -d -p 主机端口:容器内部的端口 [镜像名称]
# --name 可以不指定
# -d 表示后台运行
# -p 将主机的端口映射到容器的端口
docker run --name mytomcat -d -p 8888:8080 tomcat
#查看当前运行中的容器 -a 查看所有容器(包含各种状态)
docker ps
#停止容器
docker stop [容器ID]
#启动容器,不要把这里和docker run弄混淆,run是类似于创建容器
docker start [容器ID]
#删除容器,必须停止的容器才能删除
docker rm [容器ID]
#查看容器的日志 -t 时间戳 -f 追加 --tail 5 显示最后5行
docker logs [容器ID]
#查看容器的运行相关情况
docker top [容器ID]
#在容器中打开新的终端,并且可以启动新的进程
docker exec -it [容器ID] ls -l
#直接进入容器启动命令行终端,不会启动新的进程
docker attach [容器ID]
#复制文件从容器内到主机 前部分目录是容器,后部分是主机
docker cp [容器ID]:/data/test.txt /data/aa.txt
#打包镜像 最后的参数为镜像名称:标签
docker commit -m='commit message' -a='author info' [容器ID] libra/mytomcat:1.0
#编译DockerFile文件
docker build -f [文件名] -t [自定义镜像名称] .
示例:docker build -f /root/mydocker/Dcokerfile -t tansen/centos1 .
3.DcokerFile和自定义镜像
DcokerFile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。类似于shell脚本
如何编写DcokerFile文件?
-
了解DockerFile
- DockerFile是软件的原材料
- Dokcer镜像是软件的交付品
- Docker容器可以认为是软件的运行态
- scratch 类似于java的Object类,是所有镜像的顶级类
- 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
- 每条指令都会创建一个新的镜像层,并对镜像进行提交
-
了解DockerFile的保留字指令
FROM #基础镜像,当前镜像是基于那个镜像的
MAINTAINER #镜像的维护者的姓名和邮箱地址
RUN #容器构建时需要运行的命令
EXPOSE #当前容器对外暴露出的端口
WORKDIR #指定创建容器后,终端默认登录后进来的工作目录。一个落脚点
ENV #用来在构建镜像的过程中设置环境变量
ADD #在宿主机目录下的文件拷贝进镜像,且ADD命令会自动处理URL和解压tar压缩包
COPY #类似于ADD。只是把文件从宿主机的源路径复制到新一层镜像的目标路径
VOLUME #容器数据卷,用于数据保存和持久化
CMD #指定容器启动时要运行的命令,dockerfile中可以有多个CMD命令,
#但是只有最后一个生效,会被docker run之后的参数替换
ENTRYPOINT #指定一个容器启动时要运行的命令,和CMD一样,但是ENTRYPOINT的命令是追加的,不会覆盖
ONBUILD #当构建一个被集成的dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发
-
编写DockerFile文件、编译、运行
编写一个tomcat
准备工作- 准备一个文件夹存放tomcat和jdk文件
- 在线下载tomcat
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.13/bin/apache-tomcat-9.0.13.tar.gz
- 下载jdk然后上传到服务器,直接在线下载的无效,不能解压。32位或者64位注意和操作系统类型保持一致
http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
FROM centos
MAINTAINER tansen<[email protected]>
#把宿主机当前上下文的c.txt拷贝到容器的/usr/local/路径下
COPY c.txt /usr/local/cincontainer.txt
#把jdk和tomcat添加到容器中
ADD jdk-8u191-linux-i586.tar.gz /usr/local/
ADD apache-tomcat-9.0.13.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local/
WORKDIR $MYPATH
#配置jdk和toncat的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME $MYPATH/apache-tomcat-9.0.13
ENV CATALINA_BASE $MYPATH/apache-tomcat-9.0.13
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.13/bin/startup.sh"]
CMD /usr/local/apache-tomcat-9.0.13/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.13/bin/logs/catalina.out
编译
docker build -f mytomcat9_dockerfile -t tansen/mytomcat9 .
编译中。。。。。。。。。
编译完成如下,docker images 查看编译的镜像
运行
命令是不换行的,下面是为了展示方便
docker run -d -p 81:8080 --name libratomcat9
-v /data/dockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.13/webapps/test
-v /data/dockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.13/logs
--privileged=true tansen/mytomcat9
运行完docker ps 显示出容器ID,状态 Up!!!!
测试访问tomcat
成功!!!
测试项目放在webapps映射的test目录
更多命令参照:
docker官方文档 https://docs.docker.com/engine/reference/commandline/docker/
查看软件的版本和tags:
镜像的官方文档 https://hub.docker.com/_/mysql/