Docker详解及常用命令介绍

简介:java系列技术分享(持续更新中…)
初衷:一起学习、一起进步、坚持不懈
如果文章内容有误与您的想法不一致,欢迎大家在评论区指正
希望这篇文章对你有所帮助,欢迎点赞 收藏 ⭐留言

更多文章请点击
在这里插入图片描述在这里插入图片描述

文章目录

  • 一、Docker简介
  • 二、Docker与虚拟机区别
  • 三、Docker镜像与容器介绍
  • 四、CentOS安装Docker
    • 4.1 如果之前安装过旧版本的Docker,可以使用下面命令卸载
    • 4.2 安装yum工具
    • 4.3 更新本地镜像源
    • 4.4 安装docker
    • 4.5 启动、停止、重启、查看版本、设置开机自启
  • 五、Docker基本操作
    • 5.1 镜像操作
    • 5.2 容器操作
    • 5.3 数据卷操作
      • 5.3.1 容器与数据耦合带来的问题
      • 5.3.2 数据卷介绍
      • 5.3.3 数据卷操作命令
  • 六、自定义镜像Dockerfile
  • 七 、docker-Compose介绍

一、Docker简介

Docker是一个开源的平台,可以帮助开发者快速构建、部署和管理软件应用程序它通过将应用程序打包为Docker镜像,使得应用程序可以在任何环境中运行,而无需考虑底层基础设施的差异。Docker提供了一系列工具,包括Dockerfile、docker-compose、docker images等,帮助开发者从零构建一个应用程序到发布上线的整个过程。

Docker是一个快速交付应用,运行应用的技术:

  1. 可以将程序及其依赖,运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
  2. Docker允许开发中将应用、依赖、函数库、一起打包,形成可移植镜像
  3. 运行时利用沙箱机制形成隔离容,各个应用互不干扰
  4. 启动,移出都可以通过一行命令完成,方便快捷

二、Docker与虚拟机区别

  1. docker 硬盘占用一般为MB,虚拟机一般为GB2
  2. docker 是一个系统进程;虚拟机是在操作系统中的操作系统
  3. docker 体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

三、Docker镜像与容器介绍

镜像(image): Docker将应用程序及其所需的依赖,函数库,环境,配置,等文件打包在一起,称为镜像

容器(Container) : 镜像中应用程序运行形成的进程就是容器,只是Docker会给容器做隔离,对外不可见
Docker详解及常用命令介绍_第1张图片

四、CentOS安装Docker

4.1 如果之前安装过旧版本的Docker,可以使用下面命令卸载

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

4.2 安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

4.3 更新本地镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

4.4 安装docker

Centos7如下:

yum install -y docker-ce

注意Centos8如下:

yum install docker-ce docker-ce-cli containerd.io -y

4.5 启动、停止、重启、查看版本、设置开机自启

systemctl start docker  # 启动docker服务

systemctl enable docker     # 设置开机自启docker

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

查看是否启动

 systemctl status docker  # 查看服务状态

Docker详解及常用命令介绍_第2张图片

查看版本

docker -v

五、Docker基本操作

5.1 镜像操作

  • 镜像名称一般分为两部分组成:[repository]:[tag]
  • 在没有指定tag是,默认是latest,代表最新版本的镜像
 docker images        查看所有镜像
 docker pull     拉取自己需要的镜像,不指定则默认最新
 docker rmi      删除镜像
 docker save -o    保存镜像为tar
 docker load -i   重新加载
 docker push   --- 把本地镜像推送到远程仓库上

Docker详解及常用命令介绍_第3张图片

5.2 容器操作

 docker run  --naem containerName -80:80 -d nginx     -- 创建并运行一个容器,处于运行状态
 docker stop                                             停止一个运行的容器
 docker start                                            让一个停止的容器再次运行
 docker restart                                          重新启动一个或者多个容器
 docker exec -it containerName bash                    -- 进入到docker容器中
 docker logs    -f containerName                         -- 查看容器的运行日志
 docker rm                                              -- 容器的删除
 docker ps                                             -- 查看容器信息

Docker详解及常用命令介绍_第4张图片

5.3 数据卷操作

5.3.1 容器与数据耦合带来的问题

  1. 不便于修改
  2. 数据不可复用:在容器内的修改对新创建的容器是不可复用的
  3. 升级维护困难:数据在容器内,升级或更换容器必然会导致数据丢失

5.3.2 数据卷介绍

数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录.

Docker详解及常用命令介绍_第5张图片

5.3.3 数据卷操作命令

**命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:**

docker volume                          
               create  创建一个volume
               inspect  显示一个或多个volume的信息
               ls  列出所有的volume
               prune  删除未使用的volume
               rm  删除一个或多个指定的volume

六、自定义镜像Dockerfile

镜像结构:

  1. 基础镜像(Baselmage): 包含基本的系统函数库,环境变量.文件系统
  2. 层(Layer) :在基础镜像基础上添加安装包,依赖,配置等,每次操作都形成新的一层
  3. 入口(Entrypoint): 镜像运行入口,一般是程序启动的脚本和参数

Dockerfile

  • Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
  • Dockerfile的第一行必须是FROM,从一个基础镜像来构建
  • 基础镜像可以是基本操作系统,也可以是其他人制作好的镜像例如:java8-8-alpine

Docker详解及常用命令介绍_第6张图片

FROM java:8-alpine    
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar

构建命令
空格后面跟.,表示Dockerfile所在目录

docker build-t javaDemo:1.0 .     

七 、docker-Compose介绍

  1. Docker-compose 可以基于Compose文件快速部署分布式应用,而无需手动一个个创建和运行容器

  2. Docker-compose文件可以看做是将多个docker run 命令写到一个文件中,只是语法稍有差异

  3. Docker-compose是一个文本文件,通过指令定义集群中的每个容器如何运行

  4. Docker-compose中的服务之间可以通过服务名访问

案例:

version: "3.2"    

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10000:10000"

部署启动

docker-compose up -d

Compose 常用命令与配置

docker-compose logs -f userservice  查看日志
docker-compose  restart gateway userservice ......等等   重启

Docker详解及常用命令介绍_第7张图片
重点
Docker详解及常用命令介绍_第8张图片Docker详解及常用命令介绍_第9张图片

在这里插入图片描述在这里插入图片描述

你可能感兴趣的:(docker,docker,容器,spring,cloud,spring,boot)