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
相关推荐
桂月二二4 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
B1nna5 小时前
Redis学习(三)缓存
redis·学习·缓存
_im.m.z5 小时前
【设计模式学习笔记】1. 设计模式概述
笔记·学习·设计模式
Smile丶凉轩6 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木6 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器
胡西风_foxww6 小时前
【ES6复习笔记】迭代器(10)
前端·笔记·迭代器·es6·iterator
dessler7 小时前
Docker-Dockerfile讲解(三)
linux·运维·docker
一休哥助手7 小时前
深入理解 Docker 网桥配置与网络管理
docker·容器·eureka
左漫在成长7 小时前
王佩丰24节Excel学习笔记——第十九讲:Indirect函数
笔记·学习·excel
纪伊路上盛名在8 小时前
Max AI prompt1
笔记·学习·学习方法