美文网首页
002-容器命令

002-容器命令

作者: 无敌小韦 | 来源:发表于2019-12-15 13:32 被阅读0次

    [TOC]

    1. docker命令

    1.1 镜像

    查看系统中存在的镜像-a 列出所有images(包含历史) lo

    docker images 
    

    获取服务器上镜像列表

    docker search tutorial 
    

    拉取镜像

    docker pull busybox 
    

    删除一个或多个image

    docker rmi <image ID> 
    

    1.2 容器

    运行 busybox系统中的hello docker程序

    docker run busybox /bin/echo Hello Docker 
    

    使用镜像创建容器

    • -i 标记保证容器STDIN是开启的
    • -t 创建一个客户端创建一个容器,让其中运行 bash 应用,退出后容器关闭
    • --name 创建一个名称centos_aways的容器,自动重启
    • --restart参数:always始终重启;on-failure退出状态非0时重启;默认为,no不重启
    docker run -i -t sauloal/ubuntu14.04 
    docker run -i -t sauloal/ubuntu14.04 /bin/bash 
    docker run -itd --name centos_aways --restart=always centos 
    

    运行docker logs命令来查看job的当前状态:

    docker logs $sample_job 或者docker logs -f 容器名
    

    名为sample_job的容器,可以使用以下命令来停止:

    docker stop $sample_job 
    

    重新启动该容器:

    docker restart $sample_job 
    

    如果要完全移除容器,需要先将该容器停止,然后才能移除

    docker stop $sample_jobdocker rm $sample_job 
    

    将容器的状态保存为镜像

    docker commit $sample_job job1 
    
    • 再次启动容器
    • 开启/停止/重启container
    • 再次运行某个container (包括历史container)
    docker start/stop/restart <container> 
    docker start [container_id] 
    

    进入正在运行的docker容器

    docker exec -it [container_id] /bin/bash 
    

    将docker容器中8080端口映射到主机上80端口 ,如果此处不加90,也就是本机端口的映射,docker也同样会随机映射一个本机端口 -d 后台运行

    docker run -i -t -p 90:8081 javaweb/centos:0.1 
    

    删除容器#:删除一个或多个container docker

    docker rm <container...> 
    

    删除所有的container

    docker rm 'docker ps -a -q'
    

    同上, 删除所有的container

    docker ps -a -q | xargs docker rm 
    

    将主机/data目录挂载到docker容器中/mnt下面

    docker run -v /data:/mnt -i -t 980e0e4c79ec /bin/bash 
    

    根据57c312bbaad1创建镜像huangyong/javaweb:0.1

    docker commit 57c312bbaad1 huangyong/javaweb:0.1 
    

    进入已经启动的容器中

    docker attach 容器名 
    

    访问docker客户端

    nc -U /var/run/docker.sock 
    

    查看docker的运行状态

    status docker 
    

    service命令管理docker进程start stop statusrestart

    service docker stop 
    

    以守护模式运行docker程序

    docker -d 
    

    查看docker信息

    docker info 
    

    使用h配置启动选项

    docker -H 
    

    查看docker开放的端口随机映射到主机上的端口

    docker port 容器 端口
    

    创建demo1和demo2的连接,并且在demo2容器中可以通过db的别名进行连接。

    docker run -d  -P --name demo2 --link demo1:db 容器名
    

    导出镜像

    docker save busybox-1 > /home/save.tar
    

    导入镜像

    docker load -i 镜像名称
    

    查看端口

    runoob@runoob:~$ docker port bf08b7f2cd89
    5000/tcp -> 0.0.0.0:5000
    

    查看容器内部运行进程

    runoob@runoob:~$ docker top wizardly_chandrasekhar
    UID     PID         PPID          ...       TIME                CMD
    root    23245       23228         ...       00:00:00            python app.py
    

    检查docker底层信息

    runoob@runoob:~$ docker inspect wizardly_chandrasekhar
    [
        {
            "Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
            "Created": "2018-09-17T01:41:26.174228707Z",
            "Path": "python",
            "Args": [
                "app.py"
            ],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 23245,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2018-09-17T01:41:26.494185806Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
    ......
    

    1.3 容器链接

    1.3.1 网络端口映射

    我们也可以使用 -p 标识来指定容器端口绑定到主机端口。
    两种方式的区别是:
    -P :是容器内部端口随机映射到主机的高端口。
    -p : 是容器内部端口绑定到指定的主机端口。

    unoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
    33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
    
    runoob@runoob:~$ docker ps
    CONTAINER ID        IMAGE               COMMAND           ...           PORTS                     NAMES
    33e4523d30aa        training/webapp     "python app.py"   ...   0.0.0.0:5000->5000/tcp    berserk_bartik
    fce072cc88ce        training/webapp     "python app.py"   ...   0.0.0.0:32768->5000/tcp   grave_hopper
    

    绑定UDP端口

    runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
    6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
    runoob@runoob:~$ docker ps
    CONTAINER ID        IMAGE               COMMAND           ...   PORTS                                NAMES
    6779686f06f6        training/webapp     "python app.py"   ...   5000/tcp, 127.0.0.1:5000->5000/udp   drunk_visvesvaraya
    95c6ceef88ca        training/webapp     "python app.py"   ...    5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker
    33e4523d30aa        training/webapp     "python app.py"   ...     0.0.0.0:5000->5000/tcp               berserk_bartik
    fce072cc88ce        training/webapp     "python app.py"   ...    0.0.0.0:32768->5000/tcp              grave_hopper
    

    快速查看端口绑定情况

    runoob@runoob:~$ docker port adoring_stonebraker 5000
    127.0.0.1:5001
    

    1.3.2 Docker 容器互联

    新建网络

    参数说明:

    • -d:参数指定 Docker 网络类型,有 bridge、overlay。
      其中 overlay 网络类型用于 Swarm mode,在本小节中你可以忽略它。
    $ docker network create -d bridge test-net
    

    连接容器

    $ docker run -itd --name test1 --network test-net ubuntu /bin/bash
    

    查看网络

    docker network ps
    

    1.3.3 配置DNS

    我们可以在宿主机的 /etc/docker/daemon.json

    文件中增加以下内容来设置全部容器的 DNS:

    设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。
    配置完,需要重启 docker 才能生效。

    查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:

    {
      "dns" : [
        "114.114.114.114",
        "8.8.8.8"
      ]
    }
    

    查看DNS

    $ docker run -it --rm ubuntu  cat etc/resolv.conf
    

    如果只想在指定的容器设置 DNS,则可以使用以下命令:

    参数说明:

    • -h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
    • --dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
    • --dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。
    $ docker run -it --rm host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu
    

    2.K8S命令

    2.1 Namespace

    查询指定命名空间

    kubectl get pods --namespace=development
    kubectl describe pod tomcat-weixin-1508772460-9s1dk --namespace=ec-prod-app
    

    查看命名空间描述

    kubectl describe ns  XXX
    

    2.2 Service

    查看service

    kubectl get service --all-namespaces
    

    2.3 Pod

    获得哦命名空间下所有pod,包含宿主机IP

    kubectl get pod --all-namespaces -o wide
    

    查看pod描述

    kubectl describe po  XXX
    

    根据yaml文件删除pod

    kubectl delete -f bjyd-dp-wls-dev.yaml
    

    根据yaml文件创建pod

    kubectl create -f bjyd-dp-wls-dev.yaml
    

    更新pod

    kubectl replace /path/ to/ my- pod. yaml
    

    2.4 扩所容

    扩/缩容

    kubectl scale rc redis-slave --replicas=3
    

    根据yaml文件扩容

    kubectl scale --replicas=3 -f bjyd-dp-wls-dev.yaml
    

    查询pod event

    kubectl get event
    

    2.5 日志

    查询容器日志

    $ kubectl create -f log- pod. yaml pod "log- pod" created
    Pod 创建 成功 后, 会 重新 创建 异常 退出 的 容器 container2:
    
    $ kubectl get pod log- pod NAME READY STATUS RESTARTS AGE log- pod 0/ 2 Error 1 19s
    然后 分别 查询 Pod 中 两个 容器 的 日志:
    
    $ kubectl logs log- pod container1
    container1: 2015- 11- 21 14: 52: 55. 622701243+ 00: 00
    
    $ kubectl logs log- pod container2
    Pod "log-pod" in namespace "default": container "container2" is in waiting state.
    

    Kubernetes 创建 Service 的 同时, 会 自动 创建 跟 Service 同名 的 Endpoints:

    $ kubectl get endpoints my- nginx -o yaml
    

    相关文章

      网友评论

          本文标题:002-容器命令

          本文链接:https://www.haomeiwen.com/subject/lpiknctx.html