Docker学习:docker基本概念及操作指导
Docker学习:docker基本概念及操作指导
1、概念
Docker是一个进程,一启动就两个进程,一个服务,一个守护进程。占用资源就非常少,启动速度非常快,1s。
docker内含三大组件:仓库、镜像、容器
仓库(Docker Registy):存放docker运行的镜像文件,类似于maven仓库。通常是通过<镜像名>:<标签>的格式来指定是哪个版本的镜像。
镜像(Images):docker镜像,一个能够运行在docker容器上的一组程序文件。它提供了容器运行时所需的程序、库、资源、配置等文件,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等),是一个完整的root文件系统。
容器(Container):容器,就是运行程序的载体。镜像( Image )和容器( Container )的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
2、Linux安装过程
Tips:安装过程基于centos7.9
Docker安装要求:在liunx上安装Docker,要求操作系统是64位操作系统。并且内核版本需要3.10以上
查看内核版本
cat /proc/version
1、执行安装命令
# 执行以下命令之一执行安装 yum install docker # 免确认执行 yum -y install docker
出现complete即安装成功。
2、检查docker版本
# 检查命令 docker version docker -v
出现版本号,表明已正确的安装成功。
3、查看基本信息
docker info
4、校验
# 以管理员身份执行 docker run helo-world
5、查看帮助信息
# 查看docker的帮助文档 docker --help docker COMMAND --help # 查看docker子命令的操作帮助文档 docker build --help
3、基本操作
1、启动docker
# 启动命令 service docker start # 启动命令2 systemctl start docker
正常执行结束如下:
# 查看服务运行状态 # 方式一 service docker status # 方式2 systemctl status docker
看到running,服务即正常启动。
2、上传jar包到服务器
打包项目文件,可将其上传到任意路径。
cd /usr/local/src/ # 建立专用的目录 mkdir docerPac # 移动到该目录 cd docerPac/
3、创建Dockerfile
Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
注意:创建的Dockerfile需要与jar包在同一级目录下!
# 同级目录创建Dockerfile cd /usr/local/src/docerPac ; touch Dockerfile
配置内容:
FROM java:8 VOLUME /tmp ADD sparkProject-1.0.jar app.jar RUN bash -c 'touch /app.jar' EXPOSE 9083 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Dockerfile说明:
FROM :表示使用哪个基础镜像去构建新的镜像。上面的java:8,版本号是8也就是jdk1.8
VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
ADD :表示叠加什么镜像到上面的基础镜像中。我们现在就叠加当前目录下的 sparkProject-1.0.jar 到基础镜像中。需要两个执行参数。
EXPOSE:表示对外暴露的端口,我使用的是9083
RUN bash -c ‘touch /app.jar’ :使用 shell编程,执行一个 touch 命令,更新文件的访问和修改时间 -c 如果文件不存在,则不要进行创建。具体参考liunx 的 touch 命令和shell编程。
ENTRYPOINT :入口点, 表示容器运行后默认执行的命令。
4、拉取基础镜像
将基础镜像拉取到本地
docker pull java:8
拉取成功后效果如下:
5、构建程序镜像
# 镜像名称任意,注意后面有一个点 docker build -t spark-test .
构建成功如下:
6、删除镜像
镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:
docker rmi hello-world
7、查看本地仓库
镜像构建成功后,可以使用以下命令查看本地仓库内容
# 查看本地仓库镜像 docker images
可以看到仓库中包含构建的镜像:
8、创建容器并运行
1、运行方式一
镜像文件有了之后,还需要创建一个基于镜像的容器,以此来运行项目。
镜像和容器的关系:
镜像可以理解为一个Java类,而容器可以理解为Java类的实例。
类只有一个,但可以new出千千万万个实例对象。
所以,镜像只是一个可以生成容器的东西,而容器才能让程序运行起来。
# 创建并运行一个容器 # docker run --name 容器名(可任意) -d -p 内部端口:外部端口 镜像名 docker run --name test1 -d -p 9083:9083 spark-test
执行结果如下,结果为
命令说明
容器名:我这里取的名字为spark-test
-d: 后台运行容器,并且返回容器完整ID
-p: 是用于指定端口的。
内部端口:项目程序的端口
外部端口:网站域名的端口
2、运行方式二
# 以下方式需要容器为已存在 # 运行容器 docker start test1 # 62847714cf2d为spark-test容器id docker start 62847714cf2d
9、查看docker容器
# 查所有运行的容器信息 docker ps -a
10、停止容器
# test1为容器名 docker stop test1 # 62847714cf2d为容器id docker stop 62847714cf2d
11、进入容器内部
两种方式:
-
docker attach:此方式需使用Ctrl + p退出,否则容器也一并停止。
-
docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
# 155c21c7e566为容器id docker attach 155c21c7e566 # 推荐使用 docker exec -it 155c21c7e566 /bin/bash
小知识补充:
如何将来容器里面的java项目的日志,输出到容器的指定位置以文件形式保存起来呢。首先我们通过docker exec -it <容器ID> /bin/bash
进入下容器的内部时。文件系统结构是这样子的,如下图:
默认路径就是上面的路径,如果我们要把日志输出到/home/web/logs里面,那么我们就得在java工程logback.xml里面配置好指定路径。如下:
12、退出容器到宿主机
注意:不能使用exit命令,或者Ctrl + c,这两种方式会将容器进程杀死。正确的退出方式为Ctrl + p组合键
4、docker安装产品的方式
docker安装其他的产品有两种方式
方式一:通过拉取事先做好的镜像,例如下面redis的安装方式
方式二:通过Dockerfile来构建新的镜像,例如下面tomcat的安装方式
组成结构:bash-4.1# 表示进入docker容器内部
docker之后会自动给docker容器配置一个vip虚拟ip地址。
如上为基础指导,欢迎大家留言收藏,如有问题欢迎指正,若对你有帮助,动动你的小手,点个赞哟~~~~~
本文作者:mini小新
本文链接:https://www.cnblogs.com/onestarlearner/p/17604864.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步