IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    docker常用命令操作

    John Doe发表于 2023-08-23 02:17:42
    love 0

    基础命令

    启动docker

    systemctl start docker

    关闭docker

    systemctl stop docker

    重启docker

    systemctl restart docker

    docker设置随服务启动而自启动

    systemctl enable docker

    查看docker 运行状态

    systemctl status docker

    查看docker 版本号信息

    docker versiondocker info

    镜像命令

    下载镜像

    docker pull 镜像名 docker pull 镜像名:tag

    查看镜像

    docker images

    重新命名

    docker tag 旧镜像:版本 新镜像:版本

    搜索镜像

    docker search 镜像名docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像

    删除镜像

    #删除一个docker rmi -f 镜像名/镜像ID#删除多个 其镜像ID或镜像用用空格隔开即可docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID#删除全部镜像  -a 意思为显示全部, -q 意思为只显示IDdocker rmi -f $(docker images -aq)

    强制删除镜像

    docker image rm 镜像名称/镜像ID

    导出/导入镜像

    export/import

    export导出

    docker export f299f501774c > hangger_server.tar

    import导入

    docker import - new_hangger_server < hangger_server.tar

    save/load

    save导出

    docker save 0fdf2b4c26d3 > hangge_server.tar# 还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包:docker save -o images.tar postgres:9.6 mongo:3.4

    load导入

    docker load < hangge_server.tar

    区别

    特别注意:两种方法不可混用。如果使用 import 导入 save 产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似”
    docker: Error response from daemon: Container command not found or does not exist”的错误。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    1. 文件大小不同
    export 导出的镜像文件体积小于 save 保存的镜像

    2. 是否可以对镜像重命名
    docker import 可以为镜像指定新名称
    docker load 不能对载入的镜像重命名

    3. 是否可以同时将多个镜像打包到一个文件中
    docker export 不支持
    docker save 支持

    4. 是否包含镜像历史
    export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息(即仅保存容器当时的快照状态),所以无法进行回滚操作。
    而 save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。

    5. 应用场景不同
    docker export 的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
    docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。

    容器命令

    启动容器

    docker run  镜像名# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)  --name 给要运行的容器 起的名字  /bin/bash  交互路径docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash

    查看启动容器

    docker ps

    查看所有容器

    docker ps -a

    删除容器

    #删除一个容器docker rm -f 容器名/容器ID#删除多个容器 空格隔开要删除的容器名或容器IDdocker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID#删除全部容器docker rm -f $(docker ps -aq)

    进入容器

    docker exec -it 容器名/容器ID /bin/bash#进入redis001容器   docker exec -it redis001 /bin/bashdocker attach 容器名/容器ID

    停止容器

    docker stop 容器ID/容器名

    重启容器

    docker restart 容器ID/容器名

    启动容器

    docker start 容器ID/容器名

    kill 容器

    docker kill 容器ID/容器名

    容器文件拷贝

    #docker cp 容器ID/名称:文件路径  要拷贝到外部的路径 | 要拷贝到外部的路径  容器ID/名称:文件路径#从容器内 拷出docker cp 容器ID/名称: 容器内路径  容器外路径#从外部 拷贝文件到容器内docker  cp 容器外路径 容器ID/名称: 容器内路径

    查看容器日志

    docker logs -f --tail=要查看末尾多少行 默认all 容器ID

    更新容器配置

    docker  update --restart=always 容器Id 或者 容器名或docker container update --restart=always 容器Id 或者 容器名

    更换容器名

    docker rename 容器ID/容器名 新容器名

    运维命令

    查看docker网络

    docker network ls

    创建docker网络

    docker network create app

    查看docker磁盘占用总体情况

    du -hs /var/lib/docker/

    查看Docker的磁盘使用具体情况

    docker system df

    删除 无用的容器和 镜像

    #  删除异常停止的容器docker rm `docker ps -a | grep Exited | awk '{print $1}'`#  删除名称或标签为none的镜像docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`

    清除所有无容器使用的镜像

    # 注意,此命令只要是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止docker system prune -a

    docker-compose

    docker-compose脚本

    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
    27
    version: '3.5'
    services:
    redis:
    # 镜像名
    image: redis:bullseye
    # 容器名
    container_name: redis-6379
    # 重启策略
    restart: always
    # 端口映射
    ports:
    - 6379:6379
    environment:
    # 设置环境变量 时区上海 编码UTF-8
    TZ: Asia/Shanghai
    LANG: en_US.UTF-8
    volumes:
    # 配置文件
    - /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:rw
    # 数据文件
    - /home/redis/data:/data:rw
    command: redis-server --requirepass 123456
    # 网络
    networks:
    default:
    external:
    name: hkzs

    启动和后台启动

    docker-compose updocker-compose up -d 

    执行指定docker-compose文件

    docker-compose -f docker-compose-test.yml up -d

    停止和重启以及彻底干掉容器

    docker-compose stop docker-compose restartdocker-compose down


沪ICP备19023445号-2号
友情链接