Docker安装、命令详解、自定义镜像

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/libra_ts/article/details/84958665

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<x812603834@qq.com>

#把宿主机当前上下文的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/

展开阅读全文

没有更多推荐了,返回首页