Docker学习笔记


目录

  • 一、前提准备
  • 二、基本概念
    • 1.镜像(image)
    • 2.容器(container)
    • 3.仓库(repository)
  • 三、环境准备
  • 四、Docker安装步骤
  • 五、常用命令
    • 1.帮助命令
    • 2.镜像命令
    • 3.容器命令
    • 4.其他常用命令
  • 六、Docker部署nginx
  • 七、Docker部署tomcat
  • 八、Docker部署ES+kibana
  • 九、Docker的portainer可视化
  • 十、commit镜像
  • 十一、容器数据卷
  • 十二、DockerFile
  • 十二、Docker compose

一、前提准备

 学习linux、springboot

二、基本概念

1.镜像(image)

docker镜像好比于一个模板,可以通过这个模板创建多个容器。最终的服务运行或者项目的运行就是在容器中进行的。

2.容器(container)

docker利用容器技术来独立运行一个或一组应用,有启动、删除、停止容器等基本命令操作。可以将一个容器理解成一个简易的linux系统。

3.仓库(repository)

存放镜像的地方。分为公有仓库和私有仓库。

三、环境准备

 1.Linux基础
 2.CentOS
 3.Xshell——连接远程服务器进行操作

四、Docker安装步骤

官网安装教程链接

1.sudo yum remove docker \
>                   docker-client \
>                   docker-client-latest \
>                   docker-common \
>                   docker-latest \
>                   docker-latest-logrotate \
>                   docker-logrotate \
>                   docker-engine

2.yum install -y yum-utils

3.sudo yum-config-manager \
>     --add-repo \
>     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.yum makecache fast

5.sudo yum install docker-ce docker-ce-cli containerd.io

6.systemctl start docker

7.docker version

8.docker run hello-world

五、常用命令

1.帮助命令

 - docker version
 - docker info
 - docker 命令 --help

2.镜像命令

 - docker images                       #查看所有本地的主机上的镜像
 - docker search                       #搜索镜像
 - docker pull 镜像名[:tag]             #下载镜像,如果不写tag,默认就是latest
 - docker rmi -f 镜像id                 #删除指定的镜像
 - docker rmi -f 镜像id 镜像id 镜像id    #删除多个镜像

3.容器命令

 - dockers run [可选参数] image          #新建容器并启动
      可选参数:
      --name=”Name”    #容器名字,用来区分容器
      -d               #后台方式运行
      -it              #使用交互方式运行,进入容器查看内容
      -p               #指定容器的端口
         -p ip:主机端口:容器端口
         -p 主机端口:容器端口(常用)
         -p 容器端口
         容器端口
      -P               #随机指定端口
 - dockers ps 命令                      #查看当前运行的容器
      -a               #列出当前运行的容器+历史运行过的容器
      -n=?            #列出最近创建的n个容器
      -q               #只显示容器的编号
 - 退出容器
      exit             #容器停止并退出
      Ctrl+P+Q         #容器不停止退出
 - docker rm 容器id                     #删除容器
 - docker start 容器id                  #启动容器
    docker restart 容器id                #重启容器
    docker stop 容器id                   #停止当前正在运行的容器
    docker kill 容器id                   #强制停止当前容器

4.其他常用命令

 - docker run -d 镜像名                   #后台启动容器
 - docker logs                           #查看日志
 - docker top 容器id                      #查看容器中的进程信息
 - docker inspect                        #查看容器的元数据
 - docker exec -it 容器id /bin/bash       #进入容器后开启一个新的终端,可以在里面操作(常用)
 - docker attach -it 容器id /bin/bash     #进入容器正在运行的终端,不会启动新的进程
 -  docker cp 容器id:容器内路径 目的主机路径 #从容器内拷贝文件到主机

六、Docker部署nginx

 - docker search nginx                             #搜索镜像
 - docker pull nginx                               #下载镜像
 - docker images                                   #查看下载镜像
 - docker run -d --name nginx01 -p 3344:80 nginx   #启动容器
 - docker ps                                       #查看启动的容器
 - curl localhost:3344                             #在虚拟机运行测试
 - docker exec -it nginx01 /bin/bash               #进入容器

七、Docker部署tomcat

 - docker pull tomcat:9.0
 - docker run -d -p 3355:8080 --name tomcat01 tomcat
 - 虚拟机ip:3355                                    #外网测试访问(404- docker exec -it tomcat01 /bin/bash              
  #发现问题:linux命令少了,无webapp。 原因:阿里云的镜像的原因,默认是最小的镜像,所有不必要的都删除掉
  解决:cp -r webapps.dist/* webapps

八、Docker部署ES+kibana

 - docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.1   #下载并启动 
 - curl localhost:9200dos    #测试是否成功
 - docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node”  -e ES_JAVA_OPTS=-Xms64m -Xmx512m” elasticsearch:7.17.1  #内存限制
 - curl localhost:9200

九、Docker的portainer可视化

官网教程链接

十、commit镜像

 docker commit 提交容器称为镜像
 docker commit -m=”提交的描述信息” -a=”作者” 容器id 目标镜像名:[TAG]
  • 测试
    Docker学习笔记_第1张图片Docker学习笔记_第2张图片Docker学习笔记_第3张图片Docker学习笔记_第4张图片在这里插入图片描述
    如果想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,相当于VM的快照。

十一、容器数据卷

  1. docker理念-将应用和环境打包成一个镜像
    如果数据都在容器中,那么将容器删除,数据就会丢失。->数据持久化
    容器之间有一个数据共享技术,docker产生的数据同步到本地,这就是卷技术。即目录的挂载,将容器内的目录挂载到linux上。

  2. 直接使用命令手动挂载 -v

docker run -it -v 主机目录:容器内目录

*测试
Docker学习笔记_第5张图片
可通过 docker inspect 容器id 查看挂载是否成功Docker学习笔记_第6张图片

docker volume ls               #查看所有的卷
  1. 具名挂载和匿名挂载
    匿名——在-v的时候只写了容器内的命令,没有写容器外
    具名——-v 卷名:容器内路径(方便找卷)
    所有挂载的没有写容器外路径的卷都存放在/var/lib/docker/volumes/xxx

区分是具名还是匿名还是指定路径挂载:
① 匿名:-v 容器内路径 (可加:ro或者:rw改读写权限)
② 具名:-v 卷名:容器内路径
③ 指定:-v /宿主机路径:容器内路径

  1. 数据卷容器——两个容器之间数据同步
    ①在创建容器的时候加上–volumes-from 容器name。实现容器间的数据共享。
    ②数据卷容器的生命周期一直持续到没有容器使用为止。

十二、DockerFile

  1. DockerFile是用来构建docker镜像的构建文件,命令参数脚本,通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层。

  2. DockerFile:构建文件,定义了一切的步骤,源代码。
    DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品。
    Docker容器:容器就是镜像运行起来提供服务器。

  3. 可以在生成镜像的时候指定数据挂载。

  4. 基础知识
    ① 每个保留关键字(指令)都必须是大写字母
    ② 从上到下的顺序执行
    ③ #表示注释
    ④ 每一个指令都会创建提交一个新的镜像层

  5. 构建步骤
    ① 编写一个dockerfile文件
    ② docker build 构建成为一个镜像
    ③ docker run 运行镜像
    ④ docker push 发布镜像(DockerHub、阿里云仓库)

  6. DockerFile指令
    ① FROM——基础镜像,例如centos、ubuntu等,相当于一台基础电脑,一切从这里 开始构建
    ② MAINTAINER——镜像是谁写的,姓名+邮箱
    ③ RUN——镜像构建的时候需要运行的命令
    ④ ADD——构建镜像的时候需要添加其他镜像所做的步骤
    ⑤ WORKDIR——镜像的工作目录
    ⑥ VOLUME——挂载的目录,容器内目录
    ⑦ EXPOSE——暴露端口
    ⑧ CMD——指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
    ⑨ ENTRYPOINT——指定这个容器启动的时候要运行的命令,可以追加命令
    ⑩ ONBUILD——当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令
    ⑪ COPY——类似于ADD,将文件拷贝到镜像中
    ⑫ ENV——构建的时候设置环境变量

  7. 测试——创建一个自己的centos
    编写配置文件,即dockerfile
    Docker学习笔记_第7张图片
    通过该配置文件构建一个镜像
    docker build -f dockerfile文件路径 -t 镜像名[:tag]
    在这里插入图片描述遇到问题的解决方法:https://blog.csdn.net/qq_28174545/article/details/123347837
    测试运行
    在这里插入图片描述Docker history 容器id 查看构建过程
    Docker学习笔记_第8张图片

十二、Docker compose

  1. 通过启动docker-compose.yml文件然后一键启动所有服务。

  2. docker compose的重要概念
    服务(services):容器、应用
    项目(project):一组关联的容器

  3. docker compose安装步骤
    官网教程

  4. 体验compose
    官网教程
    大致步骤:
    写了一个应用,即app.py—>使用dockerfile将应用打包为镜像—>利用docker-compose文件定义整个服务所需要的环境—>启动compose项目

  5. docker-compose.yml编写规则
    官网教程

#三层
#版本
version:’’   
#服务
services:    
   服务1:web
   #服务配置 docker
   images
   bulid
   network
   ......
   服务2:
   ......
#其他配置 网络/卷、全局规则
volumes:
network:
configs:
  1. 实战开源项目
    大致步骤:下载项目(即下载docker-compose.yml文件)—>如果需要文件 Dockerflie—>文件准备齐全,一键启动项目

官网教程

mkdir my_wordpress
cd my_wordpress
vim docker-compose.yml
docker-compose up
docker ps #查看是否启动成功
localhost:8000

你可能感兴趣的:(docker)