【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
相关推荐
钱叁壹34 分钟前
修改docker为国内源
docker·容器·eureka
Violet_Stray36 分钟前
【Ollama】docker离线部署Ollama+deepseek
docker·部署·ollama·deepseek
大唐锦绣40 分钟前
Docker下Gogs设置Webhook推送Spug,踩坑记录与解决方案
运维·docker·容器·gogs
free慢1 小时前
Docker组件详解:核心技术与架构分析
docker·eureka·架构
zhojiew2 小时前
Istio in action之Envoy Proxy详解
云原生·istio
斯普信专业组3 小时前
基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(上)
云原生·kubernetes·apache
noravinsc4 小时前
‌云原生CAE软件
云原生·cae软件
家庭云计算专家6 小时前
onlyoffice 源码调试指南-ARM和x86双模式安装支持
arm开发·docker·容器·云计算
gs801406 小时前
检查当前 Docker 使用的 默认运行时(default runtime)方法
java·开发语言·eureka