zoukankan      html  css  js  c++  java
  • Docker 镜像管理及基础命令(二)

    Docker 常用命令:

    ## Docker  登录下载镜像:
    docker login                                 # 登录官方hub.docker.com
    docker pull nginx:alpine                     # 下载nginx的alpine版本
    docker push                                  # 推送镜像
    
    ## Docker 查找镜像: 
    docker search nginx                          # 查找nginx 的镜像
    docker images nginx:latest                   # 查找镜像: latest 为标签
    docker rmi 镜像ID/Nginx:latest               # 删除镜像
    
    ## Dcoker 启动容器(后面详细讲这部分): 
    docker run -d -ti nginx                      # 启动一个没有端口映射的容器
    docker ps -a                                 # 查看正在运行的容器
    docker rm 容器ID                             # 删除一个容器
    docker rm -fv 容器ID / nginx                 # 强制删除一个正在运行的容器
    
    ## Docker images 导出: 
    docker save centos > centos.tar.gz           # 第一种导出镜像 
    docker save centos -o /opt/centos.tar.gz     # 第二种导出镜像
    
    ## Docker images 导入:
    docker load -i /opt/centos.tar.gz            # 导入镜像
    

    Docker 容器常用命令:

    
    CTRL + p + q                        ## 退出不注销容器
    docker ps                           ## 显示正在运行的容器
    docker ps -a                        ## 显示正在运行的容器
    docker rm -f $(docker ps -a -q)     ## 批量删除所有容器   慎重!!!
    docker rm -f `docker ps -aq -f status=exited`   ## 批量删除已退出容器
    docker ps -q -f status=exited        ## 
    
    docker run -d - ti centos           ## 运行一个容器
    
    ## 指定端口映射:
    1 )  本地端口81 映射到容器80 端口:
    docker run -d -p 81:80 --name nginx-test-port1 nginx:latest
    
    [root@node-2 ~]# docker run -d -p 81:80 --name nginx-test-port1 nginx:latest
    674d119d56a4bdacf7a5c8f200fd3b11f6b0b35112e91b2c035a651c01e6423c
    [root@node-2 ~]# docker ps -a 
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
    674d119d56a4        nginx:latest        "/docker-entrypoint.…"   3 seconds ago       Up 2 seconds        0.0.0.0:81->80/tcp   nginx-test-port1
    
    2 ) 指定IP地址 和端口映射:
    docker run -d -ti -p 10.10.5.136:8001:80 nginx
    
    3 ) 指定端口映射和命名容器:
    docker run -d -ti --name=linux36-c1 -p 8002:80 nginx
    
    ## Docker 日志查看:
    docker logs nginx-test-port3       # 一次查看日志 
    docker logs -f  nginx-test-port3   # 持续查看日志
    
    ## Docker 查看已经映射的端口:
     docker port 容器ID                # 查看docker 映射的端口        
    
    ## Docker 自定义容器名称:
    docker run -d -ti --name linux36-c1 -p 80:80 -p 443:443 nginx  
    
    ## Docker 停止容器:
    docker stop 容器ID
    
    ## Docker 启动容器:
    docker start 容器ID
    
    ## Docker 停止所有容器:
    docker stop `docker ps -q`
    
    ## Docker 启动所有容器:
    docker start `docker ps -a -q`
    
    

    Docker 进入正在运行的容器:

    ## 使用attach   进入正在运行的容器(exit退出后 容器关闭 不推荐使用):
    docker attch 容器ID
    
    ## 使用exec     进入正在运行的容器(推荐使用)
    docker exec -it 容器ID /bin/bash
    #docker exec -ti f1ce /bin/bash
    #exit 退出后 docker ps -a 容器并没有退出.
    
    ## 使用nsenter 命令:
    推荐使用此方式,nsenter 命令需要通过PID 进入到容器内部,不过可以使用docker inspect 获取到容器的ID
    [root@node-2 ~]# yum install util-linux -y                           # 安装nsenter 工具
    docker inspect b3c4e1812182
    docker inspect -f "{{.NetworkSettings.Networks.bridge.IPAddress}}" b3c4e1812182   # 获取容器的IP地址
    
    ## 取得容器的pid进程:
    [root@node-2 ~]# docker inspect -f "{{.State.Pid}}"  b3c4e1812182     # 获取容器的Pid.
    41362    
    [root@node-2 ~]# nsenter -t 41362 -m -u -i -n -p                      # 通过nsenter 连接到容器. 41362为上一步得到的B3C4E1812182的Pid
    root@b3c4e1812182:/#                    
    
    

    Docker 脚本方式进入容器:

    ## 创建docker_in.sh 脚本,内容如下:
    
    #!/bin/bash
    
    docker_in(){
       NAME_ID=$1
       PID=$(docker inspect -f "{{.State.Pid}}" $NAME_ID)
       nsenter -t $PID -m -n -i -u -p
    }
    
    docker_in $1
    
    ## 测试脚本是否可以进入指定容器内部
    [root@node-2 ~]# chmod 755 docker_in.sh 
    [root@node-2 ~]# ./docker_in.sh b3c4e1812182
    root@b3c4e1812182:/# 
    
    *** 可以在所有的K8S 或者 docker 机器上放一个这个脚本,方便进入容器查看内容.
    
  • 相关阅读:
    linux 图形界面形式和命令行形式
    linux 配置 jdk7
    StackOverflowError
    一次失败的svchost hacking
    VB调用API的学习
    植物打僵尸休闲花园外挂代码
    中文日文翻译工具
    vb跨域访问,获得特定的frame进行处理
    HTML对象库简介(Microsoft HTML Object Library > mshtml.tlb)
    用正则分析一段vb代码含有哪些过程或者函数
  • 原文地址:https://www.cnblogs.com/zhenxing06/p/13267190.html
Copyright © 2011-2022 走看看