Docker详解及常用命令介绍

admin 2023-11-05 144 阅读 0评论

一、Docker简介

二、Docker与虚拟机区别

三、Docker镜像与容器介绍

四、CentOS安装Docker

五、Docker基本操作

六、自定义镜像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会给容器做隔离,对外不可见

四、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 -v

五、Docker基本操作

5.1 镜像操作

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

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                                             -- 查看容器信息
在这里插入图片描述

5.3 数据卷操作

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

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

5.3.2 数据卷介绍

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

在这里插入图片描述

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
在这里插入图片描述
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 ......等等   重启

重点

发表评论

快捷回复: 表情:
Addoil Applause Badlaugh Bomb Coffee Fabulous Facepalm Feces Frown Heyha Insidious KeepFighting NoProb PigHead Shocked Sinistersmile Slap Social Sweat Tolaugh Watermelon Witty Wow Yeah Yellowdog
提交
评论列表 (有 0 条评论, 144人围观)