Docker学习笔记

文章目录

    • 1. 了解linux基础
    • 2. Docker概述
      • 2.1 Docker简介
      • 2.2 Docker架构
      • 2.3 Docker架构图
    • 3. Docker的安装和简单测试
      • CentOS7下Docker安装文档
      • 3.1 卸载旧的Docker版本(未使用过docker不必操作)
      • 3.2 安装Docker
      • 3.3 镜像加速(购买过阿里云服务器的读者)
      • docker镜像加速参考文档
    • 4. Docker的常用命令
      • 4.1 镜像相关命令
      • 4.2 容器相关命令
    • 5. Docker安装Nginx
    • 6.Docker安装Tomcat
    • DockerHub地址
    • 7.Docekr安装redis
    • 8. Docker数据管理
      • 8.1 数据卷
      • 8.2 数据卷容器
    • 9. DockerFile
      • 9.1DockerFile常用命令
      • 9.2使用DockerFile构建自己的springboot项目镜像
      • 9.3将自己的镜像发布到docker hub


1. 了解linux基础

Linux基础知识参考

2. Docker概述

2.1 Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器


2.2 Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。

2.3 Docker架构图

Docker学习笔记_第1张图片


3. Docker的安装和简单测试

CentOS7下Docker安装文档

3.1 卸载旧的Docker版本(未使用过docker不必操作)

yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine

3.2 安装Docker

1下载所需工具包
yum install -y yum-utils

2安装docker(使用阿里云镜像)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3启动docker
systemctl start docker

4测试hello-world
docker run hello-world

5查看本地docker镜像仓库
docker images
在这里插入图片描述

3.3 镜像加速(购买过阿里云服务器的读者)

docker镜像加速参考文档


4. Docker的常用命令

4.1 镜像相关命令

docker images 列出本地镜像

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  • -f : 显示满足条件的镜像
  • q :只显示镜像id
    在这里插入图片描述

docker version 显示docker版本信息
Docker学习笔记_第2张图片

docker info 显示docker系统信息,包括镜像和容器数
Docker学习笔记_第3张图片

docker rmi : 删除本地一个或多少镜像。

  • -f : 强制删除

docker pull 从镜像仓库中拉取或者更新指定镜像
Docker学习笔记_第4张图片

docker search : 从Docker Hub查找镜像

  • -s : 列出收藏值不小于指定值的镜像
    Docker学习笔记_第5张图片

4.2 容器相关命令

docker run 镜像名称/id:创建一个新的容器并运行一个命令

  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -d: 后台运行容器,并返回容器id
  • –name : 为容器指定一个名称;
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    Docker学习笔记_第6张图片

docker start 容器名 :启动一个或多个已经被停止的容器
docker stop 容器名:停止一个运行中的容器
docker restart 容器名:重启容器

Docker学习笔记_第7张图片

docker kill :杀掉一个运行中的容器。

docker rm :删除一个或多个容器。

docker ps: 列出所有的容器信息

  • -a :显示所有的容器,包括未运行的。
  • -n :列出最近创建的n个容器。
  • -q :静默模式,只显示容器编号。
    在这里插入图片描述

docker inspect 镜像名称/id 获取镜像或容器的元数据
Docker学习笔记_第8张图片

docker top :查看容器中运行的进程信息,支持 ps 命令参数。
Docker学习笔记_第9张图片

docker attach 容器名 连接到正在运行的某个容器
Docker学习笔记_第10张图片

docker events /镜像名: 从服务器获取实时事件

  • -f :根据条件过滤事件;
  • -since :从指定的时间戳后显示所有事件;
  • -until :流水时间显示到指定的时间为止;
    Docker学习笔记_第11张图片

docker logs 容器名 查看指定容器的日志

  • -f : 跟踪日志输出
  • –since :显示某个开始时间的所有日志
  • -t : 显示时间戳
  • –tail :仅列出最新N条容器日志
    Docker学习笔记_第12张图片

docker cp 主机文件路径 容器id容器路径 //将主机文件复制到容器中
docker cp 容器id容器路径 主机文件路径 //j将容器中的文件复制到主机

举例 : 将主机文件复制到容器中Docker学习笔记_第13张图片

docker diff : 检查容器里文件结构的更改。

docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。
Docker学习笔记_第14张图片

docker create :创建一个新的容器但不启动它
用法同 docker run


5. Docker安装Nginx

  1. docker search nginx //搜索Nginx镜像
    Docker学习笔记_第15张图片
  1. docker pull nginx //远程拉取Nginx镜像到本地
    Docker学习笔记_第16张图片
  1. docker images //查看本地镜像仓库
    在这里插入图片描述
  1. docker run --name nginx01 -p 8080:80 -d nginx //运行Nginx容器
    参数说明:
  • –name nginx01 :容器名称。
  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  • -d nginx: 设置容器在在后台一直运行。
    在这里插入图片描述
  1. curl localhost:8080 本地测试8080端口的连通性
    Docker学习笔记_第17张图片

6.远程浏览器测试
Docker学习笔记_第18张图片


6.Docker安装Tomcat

DockerHub地址

Docker学习笔记_第19张图片

1.docker pull tomcat:9.0 //拉取镜像
2.docker run --name tomcat01 -p 8080:8080 -d tomcat:9.0 //创建并运行容器
3.docker -exec -it tomcat01 //在运行容器中执行命令
4.cp -r webapps.dist/* webapps //复制webapps.dist下的所有文件到webapps目录下
5.exit //退出容器

6.curl localhost:8080 //本地连接测试
Docker学习笔记_第20张图片

远程访问
成功Docker学习笔记_第21张图片


7.Docekr安装redis

  1. docker pull redis //拉取镜像
    Docker学习笔记_第22张图片

docker run --name redis-test -p 8002:6379 -d redis //创建并运行容器
在这里插入图片描述

docker exec -it redis-test /bin/bash //进入容器运行命令
redis-cli //开启客户端
Docker学习笔记_第23张图片


8. Docker数据管理

8.1 数据卷

数据卷是一个可供容器使用的特殊目录,他将主机操作系统目录直接映射进容器,可以将多个容器目录映射到同一个主机目录,实现容器之间数据的共享和同步。

实现主机目录与容器目录映射的俩种方式

  • 匿名挂载

1.创建容器进行匿名挂载,并在容器内已挂载目录上进行操作
Docker学习笔记_第24张图片

2.docker inspect 容器名称
查看容器/home目录所挂载到的宿主机目录,在Mounts节点下查看,如图
Docker学习笔记_第25张图片

3.可发现对容器内目录的操作已经同步到了宿主机目录在这里插入图片描述

4.在宿主机目录下创建文件
在这里插入图片描述

5.在容器内home目录下进行查看,会发现宿主机下创建的目录同步到容器中
在这里插入图片描述

  • 具名挂载

具名挂载与匿名挂载类似,不同点在于具名挂载将容器的目录挂载到了指定的宿主机目录,而匿名挂载是将容器的目录挂载到宿主机默认的路径下(/var/lib/docker/volumes/)。
Docker学习笔记_第26张图片

8.2 数据卷容器

数据卷容器是一个专门提供数据卷供其它容器使用,来实现多个容器之间数据持续同步的容器。
一个列子带你秒懂数据卷容器:
1.创建一个数据卷容器,并使用这个数据卷容器创建俩个容器
Docker学习笔记_第27张图片
2.实现了centos01容器与centos02容器的数据同步
Docker学习笔记_第28张图片
总结:centos-containers提供/home卷让centos01容器和centos02进行挂载,最后实现三个容器/home目录下的数据同步。


9. DockerFile

什么是DockFile?
DockFile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

9.1DockerFile常用命令

  • FROM : DockFile后续的操作都是基于FROM的镜像
  • RUN :用于执行后面跟着的命令行命令,在docker build时运行
  • COPY :复制上下文的目录或文件到容器的指定路径
  • ADD :和COPY指令类似,不同之处在于会自动解压tar压缩文件
  • CMD :和RUN指令类似,用于运行程序,在docker run时运行(如果DockerFile中存在多个CMD命令,仅最后一个生效)
  • ENTRYPOINT : 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序
  • ENV : 定义环境变量,如果设置了环境变量,那么在后续的命令中就可以使用了
  • VOLUME : 定义匿名数据卷,在启动时(docker run)忘记挂载数据卷,会默认挂载到这个匿名数据卷
  • EXPOSE :声明端口,在docker run -P 时候,会随机映射EXPOSE的端口
  • ARG :构建参数,与ENV类似,不同点在于ARG的作用域只在docker build的时候
  • WORDDIR :指定工作目录,该目录必须提前创建好,会存在于docker镜像的每一层
  • USER :用于指定后续命令的用户和用户组
  • HEALTHCHECK :用来指定某个程序或指令来监控docker服务的运行状态
  • ONBUILD :用于延迟构建命令的执行,简单来说就是本次dockerfile构建镜像时,不会执行其中的ONBUILD命令,当下一个DocekrFile在此DockerFile命令基础上构建镜像时,会执行之前DockerFIle文件里的ONBUILD指令

9.2使用DockerFile构建自己的springboot项目镜像

1.创建DockerFile文件,内容如下(同时将项目的jar包与DockerFIle文件放到同一个目录下)

FROM openjdk:8-jdk-alpine
MAINTAINER maoyu
ADD docker-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8081
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在这里插入图片描述

2.构建镜像

docker build -t docker-boot .        //构建镜像   (注意最后一个 .)

3.创建容器运行

docker run -d --name boot01 -p 8001:8001 docker-boot

4.测试

curl localhost:8001 //本机测试
在这里插入图片描述
远程测试
Docker学习笔记_第29张图片

9.3将自己的镜像发布到docker hub

1.登录账号,push镜像

Docker学习笔记_第30张图片

2.去自己的docker hub仓库查看

Docker学习笔记_第31张图片


你可能感兴趣的:(Docker)