老鬼的博客 来都来啦,那就随便看看吧~
docker常用命令
发布于: 2024-07-29 更新于: 2024-07-30 分类于:  阅读次数: 

一:帮助启动类命令

  • 启动docker

    1
    systemctl start dockert
  • 停止docker

    1
    systemctl stop docker
  • 重启docker

    1
    systemctl restart docker
  • 查看docker状态

    1
    systemctl status docker
  • 开启启动

    1
    systemctl enable docker
  • 查看docker概要信息

    1
    docker info
  • 查看docker总体帮助文档

    1
    docker --help
  • 查看docker命令帮助文档

    1
    docker 具体命令 --help

二:镜像命令

  • 列出本地所有的镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    docker images
    docker images -a 列出本地所有的镜像
    docker images -q 只显示镜像ID

    查询结果:
    REPOSITORY TAG IMAGE ID CREATED SIZE
    hello-world latest feb5d9fea6a5 2 years ago 13.3kB

    字段说明:
    REPOSITORY:镜像的仓库源
    TAG:镜像的标签版本号
    IMAGE ID:镜像ID
    CREATED:镜像的创建时间
    SIZE:镜像大小
  • 查询某个镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    docker search hello-world
    docker search --limit 5 redis 只逻辑出5个镜像,默认是25个

    查询结果:
    NAME DESCRIPTION STARS OFFICIAL
    redis Redis is the world?. fastest data platform f?? 12924 [OK]
    redis/redis-stack-server redis-stack-server installs a Redis server w?? 79
    redislabs/redisearch Redis With the RedisSearch module pre-loaded?? 66
    redislabs/redisinsight RedisInsight - The GUI for Redis 103
    redis/redis-stack redis-stack installs a Redis server with add?? 112

    字段说明:
    NAME:镜像名称
    DESCRIPTION:镜像描述
    STARS:点赞数
    OFFICIAL:是否是官网认证
  • 下载镜像

    1
    2
    3
    4
    5
    6
    7
    docker pull 镜像名称:TAG
    docker pull 镜像名称
    - 没有TAG就表示最新版本

    案例:
    docker pull redis
    docker pull redis:6.0.8
  • 查看镜像/容器/数据卷所占的空间

    1
    2
    3
    4
    5
    6
    7
    8
    9
    docker system df

    结果:
    TYPE TOTAL ACTIVE SIZE RECLAIMABLE
    Images 3 1 177MB 177MB (99%)
    Containers 9 0 0B 0B
    Local Volumes 0 0 0B 0B
    Build Cache 0 0 0B 0B

  • 删除某个镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    docker rmi 镜像名称/镜像ID
    docker rmi -f 镜像名称/镜像ID
    - 强制删除

    案例:
    docker rmi hello-world
    docker rmi feb5d9fea6a5
    - 删除单个
    docker rmi feb5d9fea6a5 ba6acccedd29
    - 删除多个
    docker rmi -f $(docker images -qa)
    - 删除全部

三:容器命令

3.1 说明

1
有镜像才能创建容器,根本前提是需要下载一个centos或者ubuntu镜像

3.2 新建+启动容器

  • 格式
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    docker run [OPTIONS] IMAGE [COMMOND] [ARG ...]

    OPTIONS说明:有些是一个减号有些是两个减号

    --name="容器新名字"
    解释:为容器指定一个新的名字

    -d
    解释:后台运行容器并返回容器ID,也即启动守护式容器(后台运行)

    -i
    解释:以交互模式运行容器,通常与-t同时使用
    -t
    解释:为容器重新分配一个伪输入终端,通常与-i同时使用
    也即启动交互式容器(前台有伪终端,等待交互)

    # 使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令,退出输入exit
    docker run -it ubuntu /bin/bash

    -P
    解释:随机端口映射,大写P

    -p
    解释:指定端口映射,小写p


3.3 查询所有正在运行的容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
指令:
docker ps [OPTIONS]

OPTIONS说明:有些是一个减号有些是两个减号

-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:静默模式,只显示容器编号

结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a605c7c12f81 ubuntu "/bin/bash" 8 minutes ago Up 8 minutes modest_blackwell


3.4 退出容器

1
2
3
4
方式1:
exit: run进去容器,exit退出,容器停止
方式2:
ctrl+p+q: run进去容器,ctrl+p+q退出,容器不停止

3.5 启动/停止/重启/删除容器

1
2
3
4
5
6
7
8
9
10
-- 启动已停止运行的容器
docker start 容器ID/容器名
-- 重启容器
docker restart 容器ID/容器名
-- 停止容器
docker stop 容器ID/容器名
-- 强制停止容器
docker kill 容器ID/容器名
-- 删除已停止的容器
docker rm 容器ID

3.6 启动守护式容器

1
2
3
4
5
6
7
8
9
10
11
12
13
大部分的场景下,我们希望docker的服务是后台运行的,我们可以
通过-d指定容器的后台运行模式。

docker容器后台运行就必须有一个前台进程,容器运行的命令如果不是那些
一直挂起的命令(如:top/tail),就会自动退出。

docker -d 容器ID/容器名

案例:
-- 前台交互式启动
docker run -it redis:6.0.8
-- 后台守护式启动
docker run -d redis:6.0.8
3.7 查看容器日志
1
2
-- 查看日志
docker logs 容器ID/容器名称
3.8 查看容器内部细节
1
docker inspect 容器ID

3.9 查看容器内运行的进程

1
docker top 容器ID

3.10 进入正在运行的容器并以命令行交互

1
2
3
4
5
6
7
8
9
10
11

1.docker exec -it 容器ID bashShell
2.重新进入
docker attach 容器ID
3.推荐使用docker exec命令,因为退出容器终端不会导致容器的停止。
- attach是直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止
- exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止
案例:
docker exec -it 容器ID /bin/bash
docker exex -it 容器ID redis-cli
一般用id后台启动的程序,再用exec进入对应容器实例。

3.11 从容器内拷贝文件到主机上

1
2
3
4
5
写法:
docker cp 容器ID:容器内路径 目的主机路径

案例:
docker cp 40e07e91cbb9:/usr/local/my.txt /opt/tmp/c.txt

3.12 导入导出容器

1
2
3
4
5
6
7
8
9
10
11
写法:
export 导出容器的内容流作为一个tar归档文件[对应import命令]
import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

案例:
docker export 容器ID>文件名.tar
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

docker export 40e07e91cbb9>abc.tar
cat abc.tar | docker import - renjie/ubuntu:3.7

四:生成镜像和发布

4.1 生成本地镜像

1
2
3
4
5
6
7
8
9
语法:
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名称:[标签名]

案例:
docker commit -m="install vim" -a="RenJie" 48cf209e9e00 renjie/ubuntu:1.3

说明:

在一个镜像上做了修改一个生成一个新的镜像

4.2 本地镜像发布到阿里云

  • 创建命名空间和仓库

    1
    2
    3
    4
    1.登录阿里云平台
    2.打开容器镜像服务
    3.创建命名空间
    4.创建仓库(选择本地仓库)

    1.jpg
    1.jpg
    1.jpg

  • 推送

    1
    2
    3
    docker login --username=ren_zhen_yu@163.com registry.cn-shanghai.aliyuncs.com
    docker tag fe5a02fa5b41 registry.cn-shanghai.aliyuncs.com/renjie-01/ubuntu:1.1
    docker push registry.cn-shanghai.aliyuncs.com/renjie-01/ubuntu:1.1

    1.jpg

  • 拉取

    1
    docker pull registry.cn-shanghai.aliyuncs.com/renjie-01/ubuntu:1.1
*************感谢您的阅读*************