zoukankan      html  css  js  c++  java
  • Docker常用命令

    帮助命令

    docker version  #查看docker版本
    docker info		#查看docker信息
    docker 命令 --help #万能命令
    

    Docker中文帮助文档 https://www.runoob.com/docker/docker-command-manual.html

    镜像命令

    docker images 查看本机镜像

    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              bf756fb1ae65        4 months ago        13.3kB
    
    #解释
    REPOSITORY	镜像的仓库源
    TAG			镜像的标签
    IMAGE ID 	镜像的id
    CREATED		镜像的创建时间
    SIZE		镜像的大小
    
    #可选项
      -a, --all            # 列出所有的镜像
      -q, --quiet          # 只显示镜像id
    
    

    docker search 搜索镜像

    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker search mysql 
    NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    mysql                             MySQL is a widely used, open-source relation…   9525                [OK]                
    mariadb                           MariaDB is a community-developed fork of MyS…   3457                [OK]                
    
    #可选项 通过收藏来过滤
    --filter=STARS=3000  # 搜索出来的镜像就是STARS大于3000的
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker search mysql --filter=STARS=3000
    NAME                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    mysql               MySQL is a widely used, open-source relation…   9525                [OK]                
    mariadb             MariaDB is a community-developed fork of MyS…   3457                [OK]                
    
    

    docker pull 下载镜像

    # 下载镜像 docker pull 镜像名[:tag]
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker pull mysql
    Using default tag: latest  	#如果不写 tag,默认就是 latest
    latest: Pulling from library/mysql
    afb6ec6fdc1c: Pull complete 	# 分层下载,docker iamge的核心 联合文件系统
    0bdc5971ba40: Pull complete 
    97ae94a2c729: Pull complete 
    f777521d340e: Pull complete 
    1393ff7fc871: Pull complete 
    a499b89994d9: Pull complete 
    7ebe8eefbafe: Pull complete 
    597069368ef1: Pull complete 
    ce39a5501878: Pull complete 
    7d545bca14bf: Pull complete 
    211e5bb2ae7b: Pull complete 
    5914e537c077: Pull complete 
    Digest: sha256:a31a277d8d39450220c722c1302a345c84206e7fd4cdb619e7face046e89031d #签名
    Status: Downloaded newer image for mysql:latest
    docker.io/library/mysql:latest # 真实地址
    
    # 等价于它
    docker pull mysql
    docker pull docker.io/library/mysql:latest
    
    # 指定版本下载
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker pull mysql:5.7
    5.7: Pulling from library/mysql
    afb6ec6fdc1c: Already exists 
    0bdc5971ba40: Already exists 
    97ae94a2c729: Already exists 
    f777521d340e: Already exists 
    1393ff7fc871: Already exists 
    a499b89994d9: Already exists 
    7ebe8eefbafe: Already exists 
    4eec965ae405: Pull complete 
    a531a782d709: Pull complete 
    270aeddb45e3: Pull complete 
    b25569b61008: Pull complete 
    Digest: sha256:d16d9ef7a4ecb29efcd1ba46d5a82bda3c28bd18c0f1e3b86ba54816211e1ac4
    Status: Downloaded newer image for mysql:5.7
    docker.io/library/mysql:5.7
    

    docker rmi 删除镜像!

    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker rmi -f 镜像id #删除指定的镜像
    
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
    
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker rmi -f $(docker images -aq) #删除全部的镜像
    

    容器命令

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

    docker pull centos #下载镜像
    

    新建容器并启动

    docker run [可选参数] image
    
    #参数说明
    --name="Name"   	容器名字
    -d					后台方式运行
    -it					使用交互方式运行,进入容器查看内容
    -P					随机指定端口 大写P
    	-P ip:主机端口:容器端口
    	-P 主机端口:容器端口 (常用)
    	-P 容器端口
    -p					指定容器端口 小写p
    
    # 测试,启动并进入容器
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -it centos /bin/bash
    [root@97ef278de6f0 /]# ls   # 查看容器内的centos,基础版本,很多命令都是不完整的!
    bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
    dev  home  lib64  media       opt  root  sbin  sys  usr
    
    # 退出容器 回到主机
    [root@97ef278de6f0 /]# exit		
    exit
    [root@iz2zeaet7s13lfkc8r3e2kz /]# 
    
    

    列出所有运行中的容器

    #docker ps 命令
    	#列出当前正在运行的容器
    -a  # 列出当前正在运行的容器+历史运行的容器
    -n=?  # 显示最近创建的容器,参数=几个
    -q # 只显示容器的编号
    
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps  
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -a 	
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    97ef278de6f0        centos              "/bin/bash"         5 minutes ago       Exited (0) 2 minutes ago                       goofy_khayyam
    3a0067b9c3d2        bf756fb1ae65        "/hello"            22 hours ago        Exited (0) 22 hours ago                        gallant_yalow
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -a -n=1
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    97ef278de6f0        centos              "/bin/bash"         8 minutes ago       Exited (0) 5 minutes ago                       goofy_khayyam
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -aq
    97ef278de6f0
    3a0067b9c3d2
    
    
    

    退出容器

    exit #直接容器停止并退出
    Ctrl + p + Q  #快捷键 容器不停止退出
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -it centos /bin/bash
    [root@5dae10d25a15 /]# [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    5dae10d25a15        centos              "/bin/bash"         21 seconds ago      Up 20 seconds                           charming_khorana
    
    

    删除容器

    docker rm 容器id 			# 删除指定的容器,不能删除正在运行的容器,如果强制删除 rm -f
    docker rm -f $(docker ps -aq)	# 删除所有的容器
    docker ps -a -q|xargs docker rm # 删除所有的容器
    
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker rm 97ef278de6f0
    97ef278de6f0
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker rm 5dae10d25a15
    Error response from daemon: You cannot remove a running container 5dae10d25a153478058374a7347e0d5590faf73600bae7904bebe95ac2f958ff. Stop the container before attempting removal or force remove
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -aq
    5dae10d25a15
    3a0067b9c3d2
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker rm -f $(docker ps -aq)
    5dae10d25a15
    3a0067b9c3d2
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -aq
    [root@iz2zeaet7s13lfkc8r3e2kz /]# 
    
    

    启动和停止容器的操作

    docker start 容器id		# 启动容器
    docker restart 容器id		# 重启容器
    docker stop 容器id		# 停止当前正在运行的容器
    docker kill 容器id		# 强制停止当前容器
    
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker start a52c8069d8b3
    a52c8069d8b3
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    a52c8069d8b3        centos              "/bin/bash"         About a minute ago   Up 6 seconds                            zen_bartik
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker stop a52c8069d8b3
    a52c8069d8b3
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iz2zeaet7s13lfkc8r3e2kz /]# 
    

    常用的其他命令

    后台启动

    # 命令 docker run -d 镜像名
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -d centos
    a8cdc1d2837f7e5a684e3b30cd5b4a1d27f91c1abf3755d902bdd10675d69922
    
    #问题 docker ps发现centos停止了
    
    #常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
    

    查看日志

    docker logs -f -t --tail 容器,没有日志
    
    # 自己编写一段shell脚本
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
    2cade8e67ea8cb76326126a84ec90ad492b7cf2fd03aa9cd7bc4f9a4692d4a11
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           
    2cade8e67ea8        centos              "/bin/sh -c 'while t…"   2 seconds ago       Up 1 
    
    #显示日志
    -tf #显示日志
    --tail number #要显示日志的条数
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker logs -tf --tail 10 2cade8e67ea8
    
    

    查看容器中进程信息

    # 命令 docker top 容器id
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker top 2cade8e67ea8
    UID                 PID                 PPID                C                   STIME              
    root                13417               13393               0                   16:46           
    root                13904               13417               0                   16:53       
    

    查看镜像的元数据

    #命令 
    docker inspect 容器id
    # 测试
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker inspect 2cade8e67ea8
    [
        {
            "Id": "2cade8e67ea8cb76326126a84ec90ad492b7cf2fd03aa9cd7bc4f9a4692d4a11",
            "Created": "2020-05-22T08:46:29.264103976Z",
            "Path": "/bin/sh",
            "Args": [
                "-c",
                "while true;do echo kuangshen;sleep 1;done"
            ],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 13417,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2020-05-22T08:46:29.792169723Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            }
            ···
         }
    ]
    

    进入当前正在运行的容器

    # 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
    
    # 命令
    docker exec -it 容器id bashShell
    
    #测试
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker exec -it 2cade8e67ea8 /bin/bash
    [root@2cade8e67ea8 /]# 
    
    # 方式二
    docker attach 容器id
    
    #测试
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker attach 2cade8e67ea8
    正在执行当前的代码...
    
    # docker exec		# 进入容器后开启一个新的终端,可以在里面操作(常用)
    # docker attach		# 进入容器正在执行的终端,不会启动新的进程!
    

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

    # 命令
    docker cp 容器id:容器内路径  目的的主机路径
    
    #测试
    [root@iz2zeaet7s13lfkc8r3e2kz home]# docker attach 138a6014e476		进入容器
    [root@138a6014e476 /]# cd /home
    [root@138a6014e476 home]# ls
    [root@138a6014e476 home]# touch test.java		创建文件
    [root@138a6014e476 home]# ls
    test.java
    [root@138a6014e476 home]# exit					退出
    exit
    [root@iz2zeaet7s13lfkc8r3e2kz home]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iz2zeaet7s13lfkc8r3e2kz home]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    138a6014e476        centos              "/bin/bash"         2 minutes ago       Exited (0) 11 seconds ago                       happy_wright
    [root@iz2zeaet7s13lfkc8r3e2kz home]# docker cp 138a6014e476:/home/test.java /home  拷贝到主机
    [root@iz2zeaet7s13lfkc8r3e2kz home]# ls
    test.java  www  ysl  ysl.java
    
    
  • 相关阅读:
    Topo软件
    如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
    Web学习
    测试Web服务接口
    WebService
    记录几个博客
    Oracle日志性能查看
    设计模式
    hdu 1999 不可摸数
    parfor —— matlab 下的并行循环
  • 原文地址:https://www.cnblogs.com/yslss/p/12982088.html
Copyright © 2011-2022 走看看