Docker学习笔记

概述

什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

完整的dockers具有四个部分:docker客户端,docker镜像,docker容器,docker仓库

docker很重要的一个特性是隔离,指的是每个docker容器之间是相互隔离的,每一个docker内都是一个新的操作系统。

docker的隔离机制有利有弊,但是会损耗8%到20%的性能。

常用的Docker命令

docker的操作主要是在对容器和镜像进行操作,下面的命令比较常用:
1.拉取镜像

shell 复制代码
docker search

例如:从docker镜像仓库搜索所有和mysg|相关的镜像

docker search mysql
2.从docker仓库拉取镜像

shell 复制代码
 docker pull

例如:从docker仓库拉取mysg|镜像

docker pull mysql
3.启动mysq|镜像

shell 复制代码
docker run mysql 

4.查看所有正在运行的docker容器

shell 复制代码
docker ps     

5.查看所有的docker容器

shell 复制代码
 docker ps -a

6.停止当前容器

shell 复制代码
 docker stop 容器id

7.重启容器

shell 复制代码
docker restart 容器id

8.启动容器

shell 复制代码
docker start 容器id

9.删除某个容器

shell 复制代码
docker rm 容器id

10.删除某个镜像

shell 复制代码
docker rmi 镜像id

11.查看当前下载的所有镜像

shell 复制代码
docker images

12.容器id查看容器的日志

shell 复制代码
docker logs -f 容器id

13.查看容器的日志

shell 复制代码
docker logs -f 容器id
shell 复制代码
docker logs -f 容器id -n 1000  只输出某容器后1000行的日志

服务器开启虚拟内存

在服务器中开启虚拟内存,可以让使用更多的内存

1.首先在某个空间足够的文件夹下创建一个file文件夹,不知道那个空间大可以使用df -h命令查看

shell 复制代码
mkdir /file

2.创建交换文件(swap file),用作虚拟内存的一部分

shell 复制代码
dd if=/dev/zero of=/file/swap bs=1024 count=4096000

3.将之前创建的/file/swap文件转换为交换文件,并将其挂载为系统的交换空间。

shell 复制代码
mkswap /file/swap
swapon /file/swap

4.将/file/swap文件添加到/etc/fstab文件中,以便在系统启动时自动挂载该交换文件

powershell 复制代码
echo "/file/swap swap swap defaults 0 0" >> /etc/fstab

到此开启完毕

构建镜像并启动springboot镜像

构建容器服务一共可以分为四步

1,编写Dockerfile

2,docker build 构建镜像(根据Dockerfile构建)

3,docker run 镜像

4,docker push 镜像

编写Dockerfile

第一步就是编写Dockerfile,Dockerfile是我们要打docker镜像的脚手架,也就是说我们的docker镜像就是根据Dockerfile来打的

写一个简单的dockerfile

powershell 复制代码
FROM  openjdk:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

可以看到,Dockerfile是由很多指令来组成,比如说FROM,COPY
Dockerfile常见指令
1.FROM

powershell 复制代码
FROM  openjdk:8

指定基础镜像,用于构建当前镜像的基础。也就是说我们要打镜像的基础包,我们程序运行所需要的环境,比如说Springboot运行需要java8,那就需要再jdk8的基础上构建自己的镜像。
2.COPY/ADD

powershell 复制代码
COPY *.jar /app.jar

将文件从主机复制到镜像中。我们的镜像当中需要包含的文件,比如说需要jar包,就需要将jar包放到镜像中去,需要其他文件,比如说某些静态资源,我们同样可以使用COPY放到镜像当中去。要注意第一个参数为宿主机的地址,后面的参数为镜像地址。宿主机的地址可以使用相对路径,即./*.jar。

比如说:

powershell 复制代码
ADD /home/user/test.tar.gz /opt  #此操作会自动将test.tar.gz解压

3.CMD/ENTRYPOINT

powershell 复制代码
CMD ["--server.port=8080"]
ENTRYPOINT ["java","-jar","/app.jar"]

设置容器的启动命令,也就是我们docker run时,容器里面所执行的命令。

CMD和ENTRYPOINT有什么区别?

ENTRYPOINT 作为启动命令时无法被docker run覆盖(如果docker run指定命令,会被认为成ENTRYPOINT的参数)

如果ENTRYPOINT和CMD指令同时存在,则CMD的相关内容会被设置成ENTRYPOINT的参数

4.EXPOSE

shell 复制代码
EXPOSE 8080

指定容器对外暴露的端口,即docker容器启动后,通过什么端口访问它呢?一般情况下都配置成我们的tomcat端口。

构建镜像

1.将我们的Dockerfile文件编写完成后,和需要打成镜像的jar包放到同一目录下。

2.docker build -t 名字(自己随便起)

例如docker build -t test:1.0.1

即镜像包的名称为test,版本号为1.0.1。如果不写后面的版本号,则版本号默认为latest。

3.查看打包好的镜像 docker images

4.启动镜像

shell 复制代码
docker run -d test

5.查看实例

shell 复制代码
docker ps -a

6.根据查询到达容器名,进入容器,启动成功

shell 复制代码
docker exec -it fa8f36aef96e /bin/bash
相关推荐
屁股割了还要学6 分钟前
【Linux入门】常用工具:yum、vim
linux·运维·服务器·c语言·c++·学习·考研
鲸鱼在dn17 分钟前
大语言模型的后训练与“灾难性遗忘”问题——李宏毅2025大模型第六讲笔记
人工智能·笔记·语言模型
crary,记忆1 小时前
简介NPM 和 NPX
前端·学习·npm·node.js
kitsch0x972 小时前
论文学习_One Bug, Hundreds Behind: LLMs for Large-Scale Bug Discovery
学习·bug
Cathy Bryant2 小时前
线性代数直觉(二):二次型与“正定”
笔记·神经网络·考研·机器学习·数学建模
qiuiuiu4132 小时前
正点原子RK3568学习日志19- Linux错误处理 字符驱动框架完全体
linux·服务器·学习·ubuntu
蒙奇D索大2 小时前
【计算机网络】408计算机网络高分指南:物理层编码与调制技术精讲
java·前端·学习·计算机网络
七夜zippoe3 小时前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(四)
运维·docker·容器
姝孟3 小时前
C++学习——类与对象详细知识点总结
c++·笔记·学习
im_AMBER3 小时前
Leetcode 35
笔记·学习·算法·leetcode