• Docker学习笔记(二)


    Docker学习笔记(二)

    1.Docker的常用命令

    1.1帮助命令

    docker version        # 显示docker的版本信息
    docker info              # 显示docker的系统信息,包括镜像和容器的数量
    docker 命令 --help         # 帮助命令
    
    • 1
    • 2
    • 3

    1.2镜像命令

    1.2.1docker images

    docker images查看所有本地的主机上的镜像
    在这里插入图片描述

    #解释
    REPOSITORY 镜像的仓库源
    TAG 镜像的标签
    IMAGE ID 镜像的id
    CREATED 镜像的创建时间
    SIZE 镜像的大小
    #命令参数可选项
    -a, --all # 显示所有镜像 (docker images -a)
    -q, --quiet # 仅显示镜像id (docker images -q)

    在这里插入图片描述

    1.2.2docker search

    docker search搜索镜像
    在这里插入图片描述

    1.2.3docker pull

    docker pull下载镜像

    # 下载镜像:docker pull 镜像名[:tag]
    [root@jiang ~]# docker pull mysql
    Using default tag: latest            # 如果不写tag,默认就是latest,最新的版本
    
    
    72a69066d2fe: Pull complete            # 分层下载,docker image的核心,联合文件下载
    93619dbc5b36: Pull complete
    99da31dd6142: Pull complete
    .....
    
    
    # 两个命令是等价的
    docker pull mysql
    docker pull docker.io/library/mysql:latest
    
    # 指定版本下载
    [root@jiang ~]# docker pull mysql:5.7
    
    
    5.7: Pulling from library/mysql
    72a69066d2fe: Already exists        # 联合文件下载,已经存在的资源可以共用
    93619dbc5b36: Already exists
    
    0ceb82207cd7: Pull complete
    37f2405cae96: Pull complete
    e2482e017e53: Pull complete
    70deed891d42: Pull complete
    Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
    Status: Downloaded newer image for mysql:5.7
    docker.io/library/mysql:5.7
    
    • 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
    • 28
    • 29
    • 30
    1.2.4docker rmi

    docker rmi删除镜像

    [root@jiang ~]# docker  rmi -f 镜像id                    # 删除指定的镜像
    [root@jiang ~]# docker rmi -f 镜像id 镜像id 镜像id    # 删除多个镜像(空格分隔)
    [root@jiang ~]# docker rmi -f $(docker images -aq)    # 删除全部的镜像
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1.3容器命令

    1.3.1新建容器并启动

    说明:我们有了镜像才可以创建容器,linux,下载一个centos 镜像来测试学习。
    docker pull centos

    docker run [可选参数] image
    # 参数说明
    --name="name"        容器名字:用来区分容器
    -d                    后台方式运行:相当于nohup
    -it                    使用交互式运行:进入容器查看内容
    -p                    指定容器的端口(四种方式)小写字母p
        -p ip:主机端口:容器端口
        -p 主机端口:容器端口
        -p 容器端口
        容器端口
    -P                     随机指定端口(大写字母P)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    测试:启动并进入容器

    [root@jiang ~]# docker run -it centos
    
    [root@59b0cea58f66 /]# ls # 查看容器内的centos(基础版本,很多命令都是不完善的)
    bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
    dev  home  lib64  media       opt  root  sbin  sys  usr
    
    # 从容器中退回到主机
    [root@59b0cea58f66 /]# exit
    exit
    [root@jiang ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1.3.2列出所有运行的容器
    docker ps    # 列出当前正在运行的容器
    # 命令参数可选项
    -a        # 列出当前正在运行的容器+历史运行过的容器
    -n=?    # 显示最近创建的容器(可以指定显示几条,比如-n=1)
    -q        # 只显示容器的编号
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    1.3.3退出容器
    exit        # 容器直接停止,并退出
    ctrl+P+Q    # 容器不停止,退出
    
    • 1
    • 2

    在这里插入图片描述

    1.3.4删除容器
    docker rm 容器id                    # 删除容器(不能删除正在运行的容器)如果要强制删除:docker rm -f 容器id
    docker rm -f $(docker ps -aq)        # 删除全部容器
    docker ps -a -q|xargs docker rm        # 删除所有容器
    
    • 1
    • 2
    • 3
    1.3.5启动和停止容器的操作
    docker start 容器id        # 启动容器
    docker restart 容器id    # 重启容器
    docker stop 容器id        # 停止当前正在运行的容器
    docker kill 容器id        # 强制停止当前容器
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    1.4常用其他命令

    1.4.1后台启动容器
    # 命令docker run -d 镜像名
    [root@jiang ~]# docker run -d centos
    # 问题:docker ps发现centos停止了
    # 常见的坑:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止。
    # 比如:nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解释:首先,docker run -it centos 的意思是,为centos这个镜像创建一个容器, -i和-t这两个参数的作用是,为该docker创建一个伪终端,这样就可以进入到容器的交互模式?(也就是直接进入到容器里面)后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这样当你使用docker ps 查看启动的容器时,就会发现你刚刚创建的那个容器并不在已启动的容器队列中。这个/bin/bash就表示启动容器后启动bash。

    1.4.2查看日志

    docker logs -tf --tail 容器id

    1.4.3查看容器中进程的信息

    docker top 容器id

    1.4.4查看镜像的元数据

    docker inspect 容器id

    1.4.5进入当前正在运行的容器
    # 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
    # 命令
    docker exec -it 容器id /bin/bash
    
    
    # docker exec        # 进入容器后开启一个新的终端,可以再里面操作(常用)
    # docker attach        # 进入容器正在执行的终端,不会启动新的进程。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1.4.6从容器内拷贝文件到主机上
    docker cp 容器id:容器内路径 目的主机的路径
    [root@cf9843583a2a /]# cd /home
    [root@cf9843583a2a home]# pwd
    /home
    [root@cf9843583a2a home]# touch test.java
    [root@cf9843583a2a home]# exit
    exit
    [root@jiang ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    [root@jiang ~]# docker run -it centos /bin/bash
    [root@1ff2d34d77eb /]# [root@jiang ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
    1ff2d34d77eb   centos    "/bin/bash"   25 seconds ago   Up 24 seconds             romantic_wiles
    [root@jiang ~]# docker cp 1ff2d34d77eb:/home/test.java /home
    Error: No such container:path: 1ff2d34d77eb:/home/test.java
    [root@jiang ~]# docker attach 1ff2d34d77eb
    [root@1ff2d34d77eb /]# pwd
    /
    [root@1ff2d34d77eb /]# cd /home
    [root@1ff2d34d77eb home]# ls
    [root@1ff2d34d77eb home]# ls
    [root@1ff2d34d77eb home]# touch test.java
    [root@1ff2d34d77eb home]# ls
    test.java
    [root@1ff2d34d77eb home]# read escape sequence
    [root@jiang ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
    1ff2d34d77eb   centos    "/bin/bash"   2 minutes ago   Up 2 minutes             romantic_wiles
    [root@jiang ~]# docker cp 1ff2d34d77eb:/home/test.java /home
    [root@jiang ~]# cd /home
    [root@jiang home]# ls
    abc.txt    hello.txt   myhome.zip    pig        test.sh    user_4  zwj
    apple.txt  jack        my.sh         sa         tom        user_5
    ba         jerry       MyTest.class  tag        tomcat.sh  v.sh
    equal.sh   jiaoben.sh  MyTest.java   tang       user_1     wu
    fox        mac         oper.sh       temp       user_2     xh
    hello.sh   mycal       orange.txt    test.java  user_3     xq
    [root@jiang home]# 
    
    
    • 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
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    在这里插入图片描述

    1.5小结

    在这里插入图片描述

  • 相关阅读:
    STM32Cube工程转为Keil工程的方法介绍
    Markdown 字体变红色,2种办法
    23种设计模式(八)代理模式(阁瑞钛伦特软件-九耶实训)
    2023年系统设计面试如何破解?进入 FAANG 面试的实战指南
    maven本地仓库存在jar导包时依然试图远程仓库下载问题解决
    基于unity的愤怒的小鸟设计
    《人类简史》笔记三—— 历史从无正义
    KingbaseES PL/SQL 过程语言参考手册(3. PL/SQL语言基础)
    stm32超声波测距不准的解决方法(STM32 delay_us()产生1us)及stm32智能小车超声波测距代码(C语言版本)
    划分为k个相等的子集 -- 回溯算法应用
  • 原文地址:https://blog.csdn.net/qq_52166656/article/details/127699855