NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

    • 基本命令
      • 镜像
        • 搜索
        • 下载(拉取)
        • 本地(已下载)列表
        • 删除
        • 导出
        • 导入
        • 提交本地(打包)
        • 推送远程
        • 构建Dockerfile
      • 容器
        • 创建
        • 列表
        • 停止
        • 强制关闭
        • 启动
        • 重启
        • 删除
        • 进入
        • 追加-开启启动
        • 修改配置
        • 查看日志
        • 复制文件
      • 数据卷
        • 创建
        • 列表
        • 详情
        • 删除
        • 删除未使用
      • 网络
        • 创建
        • 删除
        • 指定容器网络
      • 其他
        • 复制容器文件到宿主机
        • 查看容器的RUN命令参数
    • Docker Compose Specification快速开始
    • Docker Swarm
    • Docker容器默认时区导致MySQL时区问题错误
    • Docker - 概述
    • Docker - 基本概念
    • Docker - 自定义镜像(Dockerfile)
    • Docker Compose
    • Docker镜像仓库
    • 常用容器

  • 云原生

  • Kubernetes

  • KubeSphere

  • K3S

  • 笔记

  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • Docker
NipGeihou
2022-01-03
目录

基本命令

以在 Docker 中安装 redis 为例

# 镜像

# 搜索

方法一:

在 https://hub.docker.com (opens new window) 搜索

方法二:

docker search redis

# 下载(拉取)

将 docker 镜像服务器中的镜像下载到本地

docker pull 镜像名[:版本号(标签)]
# docker pull redis:latest # 拉取一个最新版的redis

# 本地(已下载)列表

docker images

# 删除

# 镜像需要容器stop才可以删除
docker rmi 镜像id

# 删除所有未被使用的镜像
docker image prune -a

# 删除所有未被使用的镜像,且为24小时前创建的
docker image prune -a --filter "until=24h" -f

# 导出

docker save -o <导出文件> <导出镜像>
# docker save -o nginx.tar nginx:latest

# 导入

docker load -i <导入文件>
# docker load -i nginx.tar

# 提交本地(打包)

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes

Options:
  -a, --author string    Author (e.g., "John Hannibal Smith <[email protected]>")
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during commit (default true)

参数类似于 Git 的 commit,作用是将修改(定制)的容器打包成一个镜像

docker commit -a "<作者信息>" -m "<提交信息>" <容器标识> <镜像名[:版本号]>
# docker commit -a "NipGeihou" -m "update index.html" my-nginx my-nginx:0.1

# 推送远程

登录

docker login # 登录

docker tag <镜像名[:版本号]> <镜像名[:版本号]>
# docker tag my-nginx:0.1 nipgeihou/my-nginx:0.1

# docker images # 检查打标签情况

docker push <镜像名[:版本号]>
# docker push nipgeihou/my-nginx:0.1

docker logout # 退出登录

tag:打标签,可以理解为复制一份,因为远程库有要求,通过前缀区分。

# 构建 Dockerfile

在 Dockerfile 文件所在目录

docker build -t <镜像名[:版本号]> .

# 容器

下文出现的 容器标识 即:容器 ID 或容器名

# 创建

docker run -itd --name <自定义容器名> -p <可访问IP>:<外部端口号>:<内部端口号> <镜像名>

docker run -itd --name redis-test -p 127.0.0.1:6379:6379 redis
# docker run -itd --name redis-test -p 6379:6379 redis # 注意!会把redis暴露到外网
参数 说明 示例
--restart no :容器退出时,不重启容器;
on-failure :只有在非 0 状态退出时才从新启动容器;
always :无论退出状态是如何,都重启容器;
--restart=always:开机启动
--name 容器名字 --name my-redis
-p 端口映射,冒号左边是宿主机端口,右边是容器端口 -p 80:80
-d 后台运行容器
-v 挂载数据卷 -v <数据卷名称|宿主机路径>:<容器内路径>[:ro] ,如果数据卷不存在会自动创建
-e 环境变量

-v:默认挂载路径权限为读写,如果指定为只读可以加 :ro

# 列表

docker ps # 目前运行的镜像
docker ps -a # 所有镜像

# 停止

docker stop <容器标识> # 暂停指定容器id的容器
docker stop $(docker ps -a -q) # 暂停所有镜像
参数 说明 示例
-t 关闭容器的限时,如果超时未能关闭则用 kill 强制关闭,默认值 10s docker stop -t=60 容器标识

# 强制关闭

docker kill <容器标识>

# 启动

docker start <容器标识>

# 重启

docker restart <容器标识>

# 删除

docker rm <容器标识>
docker rm -f <容器标识> #强制删除,无需停止运行
# docker rm -f $(docker ps -a | grep "k8s_" | awk '{print $1}') # 批量删除k8s_开头的容器

# 进入

docker exec -it <容器标识> /bin/bash
# docker attach 容器标识 # 不推荐使用,退出容器终端,会导致容器的停止
  • docker exec :进入容器内部,执行一个命令
  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • bash:进入容器后执行的命令,bash 是一个 linux 终端交互命令

容器里没有vi/vim命令怎么办?

修改的目的需要是定制化容器,即容器本身不能满足需求,又没有提供很好的扩展点。否则应优先考虑使用挂载数据卷覆盖原文件的方式。

如果只是想替换字符串,可以使用 cat + sed 命令。

sed -i 's#Welcome to nginx#你好世界#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

# 追加 - 开启启动

docker update --restart=always 容器标识

# 修改配置

vim /var/lib/docker/containers/container-ID/config.v2.json

不建议修改配置文件,而是新建容器

# 查看日志

docker logs <容器标识>
docker logs -f <容器标识> # 持续查看日志(自动刷新)

# 复制文件

可从容器中复制文件 (夹) 到宿主机,反之也可以。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
# docker cp /www/runoob 96f7f14e99ab:/www/

# 数据卷

docker volume <command>

# 创建

docker volume create <名称>
# docker volume create html

# 列表

docker volume ls

# 详情

docker volume inspect <名称>

WSL 路径为 \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

# 删除

docker volume rm <名称>

# 删除未使用

docker volume prune

# 网络

网络模式 描述
bridge 桥接模式。为每个容器分配设置 IP 地址,并将容器的网络连接到 docker0 网桥上,docker 的默认模式 。
host 主机网络模式。不虚拟容器的网卡,也不配置 IP 地址信息,直接使用宿主机的网络栈 IP 和端口。
none node 模式。容器有自己独立的网络命名空间,但是不对其进行设置,一般是由第三方 CNI 接入管理,如 flannel。

# 创建

docker network create my-net

# 删除

docker network rm my-net

# 指定容器网络

docker create --name my-nginx \
  --network my-net \
  --publish 8080:80 \
  nginx:latest

参考:

  • 网络 | Docker 文档 (opens new window)
  • 【入门篇】Docker 网络模式 Linux - Bridge | Host | None_哔哩哔哩_bilibili (opens new window)

# 其他

# 复制容器文件到宿主机

docker cp mycontainer:/opt/testnew/file.txt /opt/test/

# 查看容器的 RUN 命令参数

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <名称>
#Docker
上次更新: 2025/01/10, 15:19:35
Shell笔记
Docker Compose Specification快速开始

← Shell笔记 Docker Compose Specification快速开始→

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式