【5分钟学Docker】Docker快速使用

目录

[1. 概述](#1. 概述)

[2. 基本操作](#2. 基本操作)

[2.1. 镜像操作](#2.1. 镜像操作)

[2.2. 容器操作](#2.2. 容器操作)

[2.3. 运行操作](#2.3. 运行操作)

[2.4. 镜像保存](#2.4. 镜像保存)

[2.5. 镜像分享](#2.5. 镜像分享)

[3. 高级操作](#3. 高级操作)

[4. 挂载](#4. 挂载)

[4.1. 目录挂载](#4.1. 目录挂载)

[4.2. 卷映射](#4.2. 卷映射)


1. 概述

Docker 镜像有镜像名称和TAG

2. 基本操作

2.1. 镜像操作

  1. 查看镜像

    docker images
    docker image ls

  2. 删除镜像

    docker rmi imagesID
    docker rmi 名称:TAG

  3. 下载镜像

    docker pull nginx:1.26.0

  4. 搜索镜像

    docker search nginx

2.2. 容器操作

容器是运行起来的镜像

  1. 运行容器

    docker run

  2. 查看运行的容器

    docker ps

  3. 停止/启动/重启

    docker stop/start/restart CONTAINER_ID
    docker stop/start/restart NAMES

  4. 进入镜像

    docker exec -it xxxxxNAMES /bin/bash

  5. 查看日志

    动态获取

    docker logs -f

    静态查看

    docker logs

  6. 删除

    docker rm ID

    强制删除

    docker rm -f ID

2.3. 运行操作

  1. 容器的端口可以重复,但是外部机器的端口不能重复

    docker run -p <主机端口>:<容器端口> <镜像名>
    docker run -d --name mynginx -p 88:80 ngxin:TAG
    -d: 后台运行
    --name:容器名称
    -p 端口映射: 80:88 内部80 外部访问88

  2. 进入容器进行操作

    docker exec -it <容器名称> 交换脚本
    docker exec -it mynginx /bin/bash

2.4. 镜像保存

  1. 通过docker run 运行后,进行自定义安装或者修改一些配置

  2. 然后提交修改内容:这里的mynginx是一个运行的容器

    docker commit -m 'update index.thml' mynginx mynginx:V1.0

    [root@sda ~]# docker commit -m 'update index.html' mynginx mynginx:V1.0
    sha256:6d11a54e6725515d5559bf96fa6aeeda4b1daf79887eb78e6c3befeaadad27a0

  3. 提交后,通过docker images 可以看到有镜像 myginx V1.0

  1. 然后在对镜像进行保存成tar便于转移到其他机器上

    docker save -o mynginx.tar mynginx:V1.0

  2. 加载镜像

    docker load -i mynginx.tar -q
    -i 加载tar的文件
    -q 表示加载过程中不展示加载信息

  3. 运行

    docker run --name mynginx --rm -d -p 89:80 mynginx:V1.0

  4. 查看容器的占用

    docker stats

    CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
    9b54842016a0 mynginx 0.00% 10.33MiB / 31.26GiB 0.03% 2.73kB / 2.05kB 0B / 0B 17
    e2b4c27dbe59 work_nginx-server_1 0.00% 78.02MiB / 31.26GiB 0.24% 32.7GB / 32.5GB 7MB / 0B 17

2.5. 镜像分享

复制代码
# 改名
docker tag 旧名字 新名字 # 这个会复制一个新的,而不是直接改,可以把之前的删除就行了
docker tag mynginx:V1.0 mynginx:V2.0

[root@sda ~]# docker images
REPOSITORY   TAG    IMAGE ID            CREATED             SIZE
mynginx      V1.0   6d11a54e6725        15 hours ago        192MB
mynginx      V2.0   6d11a54e6725        15 hours ago        192MB

3. 高级操作

  1. 查询所有的容器的ID

    docker ps -aq
    -a : 所有的镜像
    -q : 只打印容器ID

    [root@sda ~]# docker ps -aq
    9b54842016a0
    e2b4c27dbe59
    694eeba1ae38
    975bb0ad0124
    0c0f3ddc3b79

  2. 删除所有的容器

    docker rm -f $(docker ps -aq)
    -f:强制删除

  3. 开机启动

    docker --restart always

4. 挂载

4.1. 目录挂载

容器一旦重启或者重新创建,那么文件数据都是丢失,所以这个时候需要通过挂载目录,实现数据持久化

使用参数

复制代码
-v /aa/aaa:/aaaa/bbb
-v 主机目录:容器内目录
如果一开始没有/aa/aaa 那么他会自动创建。docker会以外部的数据为准,所以外部没有数据
那么内部也是没有数据的

4.2. 卷映射

当我们通过目录挂载时,会发现因为-v是以外部为主,所以当我们使用目录挂载,比如挂载容器的内部的默认配置文件时,会出现如果外部没有这些配置文件,那么就会导致出现内部也没有,那么容器就可能会启动失败,所以这个时候就需要用到卷映射

卷映射

复制代码
-v 卷名:/etc/nginx
卷名不以./ 为名称就是卷名,否是就是目录挂载
docker run -d -p 89:80 --name mynginx -v /tmp/nginx/html:/usr/share/nginx/html -v ngconfig:/etc/nginx mynginx:V2.0

卷的数据都在哪里呢:默认都在/var/lib/docker/volumes/卷名/_data下

复制代码
[root@sda html]# cd /var/lib/docker/volumes/ngconfig/
[root@sda ngconfig]# ls
_data
[root@sda ngconfig]# cd _data/
[root@sda ngconfig]# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
[root@sda _data]# pwd
/var/lib/docker/volumes/ngconfig/_data
  1. 卷操作

    1. 查看卷
      docker volume ls
    2. 创建卷
      docker volume create test
    3. 查看某个卷的详情
      docker volume inpspect test
相关推荐
TGITCIC40 分钟前
SpringCloud API Gateway2.0如何解决docker中应用间IP漂移的正确手法
spring cloud·docker·云原生·本地镜像·api gateway
蜀山雪松10 小时前
全网首先 Docker Compose 启动Postgresql18
运维·docker·容器
腾讯数据架构师10 小时前
大模型openai服务网关,认证,限流,接口输入输出的修正,监控等功能
云原生·kubernetes·ai平台
你的人类朋友10 小时前
【Docker】说说卷挂载与绑定挂载
后端·docker·容器
邂逅星河浪漫12 小时前
【RabbitMQ】docker-compose编排部署RabbitMQ容器——CentOS
分布式·docker·centos·rabbitmq·docker-compose
zrande12 小时前
Docker经典安装命令失效排查:Ubuntu/CentOS多系统测试与解决方案
ubuntu·docker·centos
罗亚方舟13 小时前
微服务故障排查
微服务·云原生·架构
计算机小手14 小时前
内网穿透系列十四:基于Websocket传输协议实现的异地组网工具 candy,简单安全稳定
经验分享·网络协议·docker·开源软件
SirLancelot115 小时前
MinIO-基本介绍(一)基本概念、特点、适用场景
后端·云原生·中间件·容器·aws·对象存储·minio
Molesidy18 小时前
【Docker】基于Ubuntu的Docker的日常使用方法
nginx·ubuntu·docker