Docker学习笔记

概述

什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
完整的dockers具有四个部分:docker客户端,docker镜像,docker容器,docker仓库
docker很重要的一个特性是隔离,指的是每个docker容器之间是相互隔离的,每一个docker内都是一个新的操作系统。
docker的隔离机制有利有弊,但是会损耗8%到20%的性能。

常用的Docker命令

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

docker search

例如:从docker镜像仓库搜索所有和mysg|相关的镜像
docker search mysql
2.从docker仓库拉取镜像

 docker pull

例如:从docker仓库拉取mysg|镜像
docker pull mysql
3.启动mysq|镜像

docker run mysql 

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

docker ps     

5.查看所有的docker容器

 docker ps -a

6.停止当前容器

 docker stop 容器id

7.重启容器

docker restart 容器id

8.启动容器

docker start 容器id

9.删除某个容器

docker rm 容器id

10.删除某个镜像

docker rmi 镜像id

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

docker images

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

docker logs -f 容器id

13.查看容器的日志

docker logs -f 容器id
docker logs -f 容器id -n 1000  只输出某容器后1000行的日志

服务器开启虚拟内存

在服务器中开启虚拟内存,可以让使用更多的内存
1.首先在某个空间足够的文件夹下创建一个file文件夹,不知道那个空间大可以使用df -h命令查看

mkdir /file

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

dd if=/dev/zero of=/file/swap bs=1024 count=4096000

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

mkswap /file/swap
swapon /file/swap

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

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

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

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

FROM  openjdk:8

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

COPY *.jar /app.jar

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

ADD /home/user/test.tar.gz /opt  #此操作会自动将test.tar.gz解压

3.CMD/ENTRYPOINT

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

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.启动镜像

docker run -d test

5.查看实例

docker ps -a

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

docker exec -it fa8f36aef96e /bin/bash

相关推荐

  1. docker学习笔记

    2024-03-15 08:30:05       59 阅读
  2. Docker学习笔记

    2024-03-15 08:30:05       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 08:30:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 08:30:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 08:30:05       82 阅读
  4. Python语言-面向对象

    2024-03-15 08:30:05       91 阅读

热门阅读

  1. 【Linux】文本替换Ubuntu 中 sed 指令的使用指南

    2024-03-15 08:30:05       40 阅读
  2. Uni-app开发Canvas当子组件示例,点点绘制图形

    2024-03-15 08:30:05       43 阅读
  3. Error: ENOENT: no such file or directory, uv_cwd

    2024-03-15 08:30:05       31 阅读
  4. 微信小程序uniapp onshow函数介绍

    2024-03-15 08:30:05       38 阅读
  5. YOLOv8 服务器与本地tensorboard映射

    2024-03-15 08:30:05       44 阅读
  6. SpringBoot自动配置工作流程中变更自动配置

    2024-03-15 08:30:05       38 阅读
  7. fpga相关知识

    2024-03-15 08:30:05       44 阅读
  8. Elastic Stack--10--QueryBuilders UpdateQuery

    2024-03-15 08:30:05       31 阅读
  9. #android中的框架层

    2024-03-15 08:30:05       42 阅读
  10. VSCode 写Markdown数学公式,随时补充

    2024-03-15 08:30:05       40 阅读
  11. #android不同版本废弃api,新api。

    2024-03-15 08:30:05       40 阅读