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

    Docker常用命令

    帮助命令

    docker version
    docker info  #显示docker的系统信息
    docker 命令 --help  #命令的帮助信息
    

    官网帮助文档 https://docs.docker.com/reference/

    镜像命令

    docker images 查看所有本地的主机上的镜像

    [root@shop /]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              300e315adb2f        12 hours ago        209MB
    mariadb             latest              3a348a04a815        12 days ago         407MB
    elasticsearch       7.6.2               f29a1ee41030        8 months ago        791MB
    # 解释
    REPOSITORY   镜像的仓库源
    TAG          镜像的标签/版本
    IMAGE ID     镜像id
    CREATED      镜像的创建时间 
    SIZE         镜像的大小
    
    # 可选项
      -a, --all             显示所有镜像(默认隐藏中间镜像)
      -f, --filter filter   根据所提供的条件过滤输出
      -q, --quiet           只显示镜像的ID
    
    

    docker search 搜索镜像

    [root@shop /]# docker search mysql
    NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    mysql                             MySQL is a widely used, open-source relation…   10243               [OK]                
    mariadb                           MariaDB is a community-developed fork of MyS…   3784                [OK]                
    mysql/mysql-server                Optimized MySQL Server Docker images. Create…   749                                     [OK]
    percona                           Percona Server is a fork of the MySQL relati…   514                 [OK]                
    
    # 可选参数
     -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print search using a Go template
          --limit int       Max number of search results (default 25)
          --no-trunc        Don't truncate output
    # 搜索start数量大于300的
    
    

    docker pull 下载镜像

    # 下载镜像  docker pull 镜像名[:tag]
    [root@shop /]# docker pull mysql  # 如果不写tag,默认就是latest
    Using default tag: latest
    latest: Pulling from library/mysql
    852e50cd189d: Pull complete    # 分层下载,docker images的核心,联合文件系统
    29969ddb0ffb: Pull complete 
    a43f41a44c48: Pull complete 
    5cdd802543a3: Pull complete 
    b79b040de953: Pull complete 
    938c64119969: Pull complete 
    7689ec51a0d9: Pull complete 
    a880ba7c411f: Pull complete 
    984f656ec6ca: Pull complete 
    9f497bce458a: Pull complete 
    b9940f97694b: Pull complete 
    2f069358dc96: Pull complete 
    Digest: sha256:4bb2e81a40e9d0d59bd8e3dc2ba5e1f2197696f6de39a91e90798dd27299b093  # 签名
    Status: Downloaded newer image for mysql:latest
    docker.io/library/mysql:latest    # 真实地址
    
    #下载指定版本的镜像
    [root@shop /]# docker pull mysql:5.7
    5.7: Pulling from library/mysql
    852e50cd189d: Already exists 
    29969ddb0ffb: Already exists 
    a43f41a44c48: Already exists 
    5cdd802543a3: Already exists 
    b79b040de953: Already exists 
    938c64119969: Already exists 
    7689ec51a0d9: Already exists 
    36bd6224d58f: Pull complete 
    cab9d3fa4c8c: Pull complete 
    1b741e1c47de: Pull complete 
    aac9d11987ac: Pull complete 
    Digest: sha256:8e2004f9fe43df06c3030090f593021a5f283d028b5ed5765cc24236c2c4d88e
    Status: Downloaded newer image for mysql:5.7
    docker.io/library/mysql:5.7
    
    

    docker rmi 删除镜像

    [root@shop /]# docker rmi -f ae0658fdbad5         #删除指定的镜像
    [root@shop /]# docker rmi -f 容器id 容器id  容器id  # 删除多个镜像
    [root@shop /]# docker rmi -f $(docker images -aq)  # 删除所有的镜像
    

    容器命令

    说明:有了镜像才能启动容器

    新建容器并启动

    [root@shop /]# docker run -it centos /bin/bash
    [root@390c4d02180e /]# 
    
    # 参数说明
      --name
      -a                   附加到标准输入、标准输出或标准输出
      -c  CPU共享(相对权重)
      -d  在后台运行容器并且打印id                       Run container in background and print container ID
      -e  设置环境变量
      -h  容器主机名
      -i  保持STDIN打开,即使没有附加
      -l  在容器上设置元数据
      -m  内存容量上限
      -p  指定端口                    
      		主机端口:容器端口
      		ip:主机端口:容器端口
      		容器端口
      -P 将所有公开的端口发布到随机端口
      -t 分配一个 pseudo-TTY
      -u 用户名或UID(格式:< name| UID >[:<group|gid>])
      -v 绑定挂载卷
      -w 容器内的工作目录
      
    # 从容器中退出到主机
    [root@390c4d02180e /]# exit
    exit
    [root@shop /]#
    

    列出所有运行的容器

    [root@shop /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@shop /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    390c4d02180e        centos              "/bin/bash"         10 minutes ago      Exited (0) 9 minutes ago                        infallible_aryabhata
    edc034ef454d        centos              "/bin/bash"         42 minutes ago      Exited (0) 42 minutes ago                       sharp_jang
    [root@shop /]# docker ps -aq
    390c4d02180e
    edc034ef454d
    

    退出容器

    exit          # 退出并停止容器
    ctrl + P + Q  # 退出不停止
    

    删除容器

    docker rm 容器id
    docker rm -f $(docker ps -aq)
    docker ps -aq | xargs docker rm
    

    启动和停止容器的操作

     docker start <容器 ID>
     docker restart <容器 ID>
     docker stop <容器 ID>
     docker kill <容器 ID>
    

    常用的其他命令

    后台启动容器

    # 命令docker run-d镜像名!
    [root@shop /]#docker run -d centos
    #问题dockerps,发现centos停止了
    #常见的坑:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
    #nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了|
    

    查看日志命令

    docker logs -tf --tail 条数  容器id  # 显示条数
    docker logs -tf  容器id   #显示所有的日志
    

    查看容器内部的进程信息

    docker top <容器 ID>
    

    查看元数据

    docker inspect <容器 ID>
    

    进入当前正在运行的容器

    # 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
    # 命令
    docker exec -it <容器 ID> /bin/bash
    
    # 方式二
    docker attach  <容器 ID>  
    

    这两个的区别

    • exec 进入容器后开启一个新的终端,可以在里面操作(常用)
    • attach

    从容器内拷贝文件到主机

    docker cp  <容器 ID>:容器目录   主机目录
    

    拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现,自动同步

    小结

    命令总结

    image-20201212172538292

    
    

    练习 - Docker安装Nginx

    #  1、搜索镜像 search建议大家去docker搜索,可以看到帮助文档
    #  2、下载镜像pu11
    #  3、运行测试
    
    ####### 下载镜像  ###########
    [root@shop /]# docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    852e50cd189d: Already exists 
    571d7e852307: Pull complete 
    addb10abd9cb: Pull complete 
    d20aa7ccdb77: Pull complete 
    8b03f1e11359: Pull complete 
    Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    ####### 查看下载的镜像  ###########
    [root@shop /]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              bc9a0695f571        13 days ago         133MB
    
    ####### 以后台运行的方式启动,并命名为nginx01,将容器的80端口映射到主机的3344上  ###########
    [root@shop /]# docker run -d --name nginx01 -p 3344:80 nginx
    20224440d8b08b504d750a00a72db5e1feb03650eedad2543ac505eed17728da
    [root@shop /]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    20224440d8b0        nginx               "/docker-entrypoint.…"   5 seconds ago       Up 4 seconds        0.0.0.0:3344->80/tcp   nginx01
    ####### 进入nginx01中  ###########
    [root@shop /]# docker exec -it nginx01 /bin/bash
    root@20224440d8b0:/# whereis nginx
    nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
    root@20224440d8b0:/# 
    
    

    image-20201208215200808

    练习2 - Docker安装Tomcat

    #  官方的使用
    docker run -it--rm tomcat:9.0
    #  我们之前的启动都是后台,停止了容器之后,容器还是可以查到docker run-it--rm,一般用来测试,用完就删除
    
    # 下载tomcat镜像
    docker pull tomcat
    
    # 运行tomcat镜像,访问会出现404情况,因为tomcat是最小安装,webapp下面没有任何东西。但是有一个webapps.dist文件夹下又这些目录
    docker run -d -p 3355:8080 --name tomcat01 tomcat 
    

    思考: 我们以后要部署项目,如果每次都要进入容器是不是十分麻烦?我要是可以在容器外部提供一个映射路径,达到在容器修改文件名。

    作业三 ES + Kibana

    > 一些问题
    # es 暴漏的端口很多
    # es 十分耗内存
    # es的数据一般要放到安全目录!挂载
    # --net somenetwork ? 网络配置
    
    # 下载启动Elasticsearch,但是启动后会很卡(因为Elasticsearch十分耗内存)
    docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elsaticsearch:7.6.2
    # 查看状态(cpu、内存)
    docker status
    
    # 增加内存的限制
    docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elsaticsearch:7.6.2
    

    image-20201212110151532

    可视化管理工具

    Portainer

    docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
    

    访问测试:http://localhost:9000

    1. 设置admin用户密码,需要输入两次相同的密码
  • 相关阅读:
    excel的支持——xlrd模块、xlwt模块的安装
    安装wxpython——python程序GUI图形界面使用
    if __name__ == '__main__':
    U盘装win7
    cgitb.enable()浏览器报告错误,容易定位问题
    python_study_9-生成式
    python_study_10-单例模式
    python_自动化_1-读取excel
    python_study_8-字符串/列表/字典使用方法
    python_study_7-异常处理
  • 原文地址:https://www.cnblogs.com/cuianbing/p/14468848.html
Copyright © 2011-2022 走看看