Docker详解及常用命令介绍

🍓 简介:java系列技术分享(👉持续更新中...🔥)

🍓 初衷:一起学习、一起进步、坚持不懈

🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏

🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

一、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,可以使用下面命令卸载

shell 复制代码
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工具

shell 复制代码
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

4.3 更新本地镜像源

shell 复制代码
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如下:

shell 复制代码
yum install -y docker-ce

注意Centos8如下:

shell 复制代码
yum install docker-ce docker-ce-cli containerd.io -y

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

shell 复制代码
systemctl start docker  # 启动docker服务

systemctl enable docker     # 设置开机自启docker

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

查看是否启动

shell 复制代码
 systemctl status docker  # 查看服务状态

查看版本

shell 复制代码
docker -v

五、Docker基本操作

5.1 镜像操作

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

5.2 容器操作

shell 复制代码
 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来确定下一步的操作:**

shell 复制代码
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
shell 复制代码
FROM java:8-alpine    
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar

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

shell 复制代码
docker build-t javaDemo:1.0 .     

七 、docker-Compose介绍

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

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

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

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

案例:

yml 复制代码
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"

部署启动

shell 复制代码
docker-compose up -d

Compose 常用命令与配置

shell 复制代码
docker-compose logs -f userservice  查看日志
docker-compose  restart gateway userservice ......等等   重启

重点

相关推荐
Johny_Zhao1 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
zwjapple1 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
tan180°3 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
代码老y3 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
DuelCode4 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社24 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
why技术4 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理5 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
ai小鬼头6 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
简佐义的博客6 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang