{"id":889,"date":"2021-04-19T11:09:45","date_gmt":"2021-04-19T11:09:45","guid":{"rendered":"http:\/\/www.liutianfeng.com\/?p=889"},"modified":"2023-06-16T02:40:25","modified_gmt":"2023-06-16T02:40:25","slug":"k8s%e5%92%8cdocker%e5%b8%b8%e7%94%a8%e5%9f%ba%e7%a1%80%e6%93%8d%e4%bd%9c","status":"publish","type":"post","link":"https:\/\/www.liutianfeng.com\/?p=889","title":{"rendered":"K8S\u548cDocker\u5e38\u7528\u57fa\u7840\u64cd\u4f5c"},"content":{"rendered":"<p>1\u3001k8s\u7684\u5e38\u7528\u547d\u4ee4<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u67e5\u770bnode\u4fe1\u606f\uff0cno\u662f\u7f29\u5199\nkubectl get node|no\n# \u67e5\u770b\u547d\u540d\u7a7a\u95f4\u4fe1\u606f\uff0cns\u662f\u7f29\u5199\nkubectl get namespace|ns\n# \u67e5\u770bpod\u4fe1\u606f\uff0cpo\u662f\u7f29\u5199\nkubectl -n zone2 get pod|po -o wide\n# \u67e5\u770b\u6240\u6709ns\u7684pod\u4fe1\u606f\nkubectl get pod -o wide --all-namespaces\n# \u67e5\u770bservice\u4fe1\u606f\uff0csvc\u662f\u7f29\u5199\nkubectl -n zone2 get services|svc\n# \u67e5\u770bpod\u7684\u8be6\u7ec6\u4fe1\u606f\nkubectl -n zone2 describe pod pod_name\n# \u67e5\u770bpod\u65e5\u5fd7\uff0c-f\u662f\u52a8\u6001\u6a21\u5f0f\uff0c\u7c7b\u4f3ctail -f\nkubectl -n zone2 logs pod_name -f\n#\u00a0\u9a71\u9010pod\uff0c\u4fdd\u7559daemonsets\nkubectl drain node-name --ignore-daemonsets --delete-local-data --force <\/code><\/pre>\n<p>2\u3001master\u8282\u70b9\u5e38\u7528\u64cd\u4f5c<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u83b7\u53d6pod\u5217\u8868\nkubectl -n zone2 get pod -o wide |grep ^myapp |awk '{print $1}' &gt; lst\/myapp.list\n# \u8003\u672c\u6587\u4ef6\u5230\u8fdc\u7aefpod\nkubectl -n zone2 cp .\/files\/patch.jar myapp-h89H:\/usr\/local\/myapp\/files\/patch.jar\n# \u5c06\u8fdc\u7aefpod\u7684\u6587\u4ef6\u62f7\u8d1d\u5230\u672c\u5730\nkubectl -n zone2 cp myapp-h89H:\/usr\/local\/myapp\/files\/patch.jar .\/files\/patch.jar\n# \u5728\u8fdc\u7aefpod\u6267\u884c\u547d\u4ee4\nkubectl -n zone2 exec -ti myapp-h89H -- md5sum \/usr\/local\/myapp\/files\/patch.jar<\/code><\/pre>\n<p>3\u3001\u5e38\u7528\u811a\u672c<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">kubectl -n zone2 get pod -o wide |grep ^myapp |awk '{print $1}' &gt; lst\/myapp.list   # \u5148\u83b7\u53d6\u5217\u8868\nvi remote.sh   # \u904d\u5386\u5217\u8868\uff0c\u62f7\u8d1d\u811a\u672c\u5230\u8fdc\u7aef\uff0c\u5e76\u6267\u884c\u811a\u672c\n#!\/bin\/bash\nfor POD_NAME in `cat lst\/myapp.list`; do\n    echo \"==================================================${POD_NAME}==================================================\"\n    kubectl -n zone2 cp .\/files\/check_file.sh ${POD_NAME}:\/tmp\/check_file.sh\n    kubectl -n zone2 exec -ti ${POD_NAME} -- nohup sh \/tmp\/check_file.sh &amp;\ndone<\/code><\/pre>\n<p>4\u3001Docker\u5e38\u7528\u547d\u4ee4<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u67e5\u770bdocker\u5bb9\u5668\uff0c-a\u663e\u793a\u5df2\u7ecf\u505c\u6b62\u7684\u5bb9\u5668\n  docker ps [-a] \n# \u7528\u5df2\u77e5\u955c\u50cf\u5f00\u542f\u4e00\u4e2adocker\uff0c-d\u662fdaemon\u6a21\u5f0f\uff0c\u4e0d\u52a0-d\uff0c\u9000\u51fa\u540edocker\u81ea\u52a8\u505c\u6b62, --name\u53ef\u4ee5\u81ea\u5b9a\u4e49\u540d\u79f0\uff0c\u53ef\u4ee5\u4e0d\u52a0\n  docker run -dt image_id|myapp:ver1 --name=test-lius\n# \u505c\u6b62\u4e00\u4e2adocker\n  docker stop docker_id\n# \u5220\u9664\u5bb9\u5668,  -f\u4e3a\u5f3a\u5236\u6a21\u5f0f\uff0c\u5982\u679cdocker\u662frun\u7684\u72b6\u6001\uff0c\u4e0d\u52a0-f\u4f1a\u63d0\u793a\u6709\u5728\u8fd0\u884c\u7684docker\uff0c\u9700\u5148docker stop\u4e4b\u540e\u624d\u53ef\u4ee5\u5220\u9664\n  docker rm docker_id [-f]\n# docker [-u root] exec -ti docker_id \/bin\/bash # \u8fdb\u5165\u4e00\u4e2adocker\uff0c-u\u6307\u5b9a\u7528\u6237\n# \u663e\u793adocker\u7684\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\uff0c\u5982cpu\u3001\u5185\u5b58\u4f7f\u7528\u7387\uff0cexec\u8fdb\u5165\u540e\uff0c\u770b\u5230\u7684\u8d44\u6e90\u662fnode\u7684\n  docker stats docker_id\n# \u67e5\u770bdocker\u5bb9\u5668\u8be6\u60c5\n  docker inspect docker_id\n# node\u6267\u884cdocker\u547d\u4ee4\uff0c\u4e0d\u80fd\u52a0-d\uff08\u540e\u53f0\u64cd\u4f5c\u6ca1\u6709\u8fd4\u56de\uff09\uff0c-t\uff08the input device is not a TTY\uff09\n  docker ps |egrep -v '\/pause|IMAGE' |awk '{print $1}' |while read CID; do\n      echo \"========================= $CID ========================\"\n      docker exec -i $CID bash -c \"netstat -anlp |grep :3717 |wc -l\" &lt; \/dev\/zero\n  done\n# \u542f\u52a8MYSQL\u5bb9\u5668\n  docker run --privileged=true --name mysql8 -v \/data\/mysql_for_docker\/data\/:\/var\/lib\/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=youguess -d mysql:latest\n# \u76f4\u63a5\u4e0b\u8f7d\u955c\u50cf\u5e76\u7528tty\u7684\u5f62\u5f0f\u8fdb\u5165\u5bb9\u5668\n   docker run -ti dockerhub.liutianfeng.com\/lius\/test-lius:20230216130337 bash <\/code><\/pre>\n<p>Docker\u67e5\u770b\u8d44\u6e90<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">docker stats [OPTIONS] [CONTAINER...]\n  Display a live stream of container(s) resource usage statistics\n    -a, --all   Show all containers (default shows just running)\n    --format    string &amp;nbsp; Pretty-print images using a Go template\n    --no-stream Disable streaming stats and only pull the first result\n    --no-trunc  Do not truncate output<\/code><\/pre>\n<p>5\u3001\u955c\u50cf\u64cd\u4f5c<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u67e5\u770b\u7cfb\u7edf\u5185\u7684\u955c\u50cf\u5217\u8868\n  docker images\n# \u5220\u9664\u955c\u50cf[\u6807\u7b7e]\uff0c\u5982\u679cimage_id\u5bf9\u5e94\u7684\u955c\u50cf\u4e0d\u552f\u4e00\uff08\u6709\u7684\u955c\u50cf\u6709\u4e0d\u540c\u7684tag\uff09\uff0c\u53ea\u80fd\u4f7f\u7528myapp:ver1\u8fd9\u7c7b\u683c\u5f0f\u5220\u9664\u955c\u50cf[\u6807\u7b7e]\u3002\n  docker rmi img_id|myapp:ver1\n# \u7ed9myapp:ver1\u6253\u4e00\u4e2aver2\u7684\u6807\u7b7e\uff0c\u5982\u679cimage_id\u552f\u4e00\uff0cmyapp:ver1\u53ef\u4ee5\u7528docker_id\u66ff\u6362\n  docker tag myapp:ver1 myapp:ver2\n# \u5bfc\u5165\u955c\u50cf\uff0c\u4e24\u79cd\u65b9\u5f0f\u7686\u53ef\n  docker load -i imgs\/myapp_ver1.tar.gz | docker load &lt; imgs\/myapp_ver1.tar.gz\n# \u5bfc\u51fa\u955c\u50cf\uff0c\u5982\u679ciamge_id\u552f\u4e00\uff0c\u53ef\u4ee5\u7528image_id\uff0c\u4f46\u662f\u6807\u7b7e\u4fe1\u606f\u53ef\u80fd\u4f1a\u7f3a\u5931\u3002\u5bfc\u51fa\u7684\u662ftar\u683c\u5f0f\uff0c\u9700\u8981gzip\u538b\u7f29\u540e\u624d\u662ftar.gz\u6587\u4ef6\n  docker save myapp:ver1|image_id -o imgs\/myapp_ver1.tar<\/code><\/pre>\n<p>6\u3001\u955c\u50cf\u8865\u4e01<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># vim Dockerfile   # \u7f16\u8f91Dockerfile\uff0c\u9ed8\u8ba4\u8bc6\u522b\u7684\u56fa\u5b9a\u6587\u4ef6\u540d\uff0c\u5f53\u524d\u76ee\u5f55\n  FROM myapp:ver1   # \u57fa\u51c6\u955c\u50cf\uff0c\u5fc5\u987b\u4fdd\u8bc1docker images\u5217\u8868\u4e2d\u6709\u8fd9\u4e2a\u6807\u7b7e\u7684\u955c\u50cf\n  USER app    \/\/ \u6307\u5b9a\u9ed8\u8ba4\u7528\u6237\n  COPY --chown=myapp:users .\/pkgs\/my_patch.jar \/home\/myapp\/opt\/work\/app1\/app1.jar   \/\/ --chown\u53ef\u4ee5\u4fee\u6539\u8865\u4e01\u6587\u4ef6\u7684\u6743\u9650\uff0c\u4e00\u822c\u5f88\u5fc5\u8981\n# \u5236\u4f5ctag\u4e3aver2\u7684\u955c\u50cf\n  docker build -t myapp:ver2 . \/\/ .\u662f\u5f53\u524d\u76ee\u5f55\n# \u5bfc\u51fa\u65b0\u7684\u955c\u50cf\n  docker save myapp:ver2 ..\/imgs\/myapp_ver2.tar\n# \u6ce8\u610f\uff0c\u5236\u4f5c\u955c\u50cf\u7684\u76ee\u5f55\u91cc\u9762\uff0c\u4e0d\u8981\u6709\u4e0d\u76f8\u5173\u7684\u6587\u4ef6\u548c\u5386\u53f2\u5bfc\u51fa\u7684\u955c\u50cf\uff0c\u5426\u5219\u5236\u4f5c\u8fc7\u7a0b\u4e2d\u4f1a\u52a0\u8f7d\u5f53\u524d\u76ee\u5f55\u7684\u6240\u6709\u6587\u4ef6\uff0c\u5bfc\u81f4\u955c\u50cf\u524d\u671f\u8bfb\u53d6\u5185\u5bb9\u8fc7\u591a\uff0c\u65f6\u95f4\u53d8\u957f\u3002<\/code><\/pre>\n<p>Ingress<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">#\u00a0\u4fee\u6539Ingress\u914d\u7f6e\n  kubectl  edit cm -n ingress-nginx nginx-configuration<\/code><\/pre>\n<p>\u8f6c\u8f7d\u8bf7\u6ce8\u660e\uff1a<a href=\"https:\/\/www.liutianfeng.com\">liutianfeng.com<\/a> &raquo; <a href=\"https:\/\/www.liutianfeng.com\/?p=889\">K8S\u548cDocker\u5e38\u7528\u57fa\u7840\u64cd\u4f5c<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>1\u3001k8s\u7684\u5e38\u7528\u547d\u4ee4 # \u67e5\u770bnode\u4fe1\u606f\uff0cno\u662f\u7f29\u5199 kubectl get node|no # \u67e5\u770b\u547d\u540d\u7a7a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[48],"tags":[],"_links":{"self":[{"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=\/wp\/v2\/posts\/889"}],"collection":[{"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=889"}],"version-history":[{"count":11,"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=\/wp\/v2\/posts\/889\/revisions"}],"predecessor-version":[{"id":1758,"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=\/wp\/v2\/posts\/889\/revisions\/1758"}],"wp:attachment":[{"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.liutianfeng.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}