{"id":1296,"date":"2020-06-03T01:48:02","date_gmt":"2020-06-02T17:48:02","guid":{"rendered":"https:\/\/jrblog.pentaidea.com\/john\/2020\/06\/03\/container-faq-updating\/"},"modified":"2020-06-03T01:48:02","modified_gmt":"2020-06-02T17:48:02","slug":"container-faq-updating","status":"publish","type":"post","link":"https:\/\/john.pentaidea.com\/?p=1296","title":{"rendered":"Container FAQ (updating)"},"content":{"rendered":"<p><span style=\"font-size: 18pt;font-weight: bold\">K8s<\/span><\/p>\n<ul>\n<li>\n<p>Https (k8s ingress TLS) &quot;default backend 404&quot; error<\/p>\n<\/li>\n<ul>\n<li>\n<p>Ans: tls secret not correct, TLS not&nbsp;<\/p>\n<\/li>\n<\/ul>\n<li>\n<p>Create TLS secret by file: .crt .key (Letsencrypt)<\/p>\n<\/li>\n<\/ul>\n<pre><code>kubectl -n XX create secret tls tls-XXX \\\n&nbsp;&nbsp;--cert=signed.crt \\\n&nbsp;&nbsp;--key=domain.key\n<\/code><\/pre>\n<ul>\n<li>\n<p>Create an base64 string for k8s Secret Opaque<\/p>\n<\/li>\n<\/ul>\n<pre><code>echo -n &apos;password&apos; | base64\n# Or Notepad++ =&gt; MINE tool &gt; Base64 Encode with Unix EOL\n\n&lt;--- sample file\napiVersion: v1\nkind: Secret\nmetadata:\n&nbsp;&nbsp;name: your-secrets\ntype: Opaque\ndata:\n&nbsp;&nbsp;root-password: XXXXXXX\n<\/code><\/pre>\n<ul>\n<li>\n<p>Clean key by patch<\/p>\n<\/li>\n<\/ul>\n<pre><code>$ kubectl patch configmap myconfigmap --type=json -p=&apos;[{&quot;op&quot;: &quot;remove&quot;, &quot;path&quot;: &quot;\/data\/mykey&quot;}]&apos;\n<\/code><\/pre>\n<ul>\n<li>\n<p>Rollback version<\/p>\n<\/li>\n<\/ul>\n<pre><code># List old\nkubectl rollout history deployment\/app\n# Rollback to&nbsp;\nkubectl rollout undo deployment\/app --to-revision=2\n<\/code><\/pre>\n<ul>\n<li>\n<p>Release pv to be avaliable again&nbsp;<\/p>\n<\/li>\n<\/ul>\n<pre><code>kubectl edit pv PV_NAME\n# Remove&nbsp;spec.claimRef\nkubectl patch pv {{PV_NAME}} --type=json -p=&apos;[{&quot;op&quot;: &quot;remove&quot;, &quot;path&quot;: &quot;\/spec\/claimRef&quot;}]&apos;\n<\/code><\/pre>\n<ul>\n<li>\n<p>Search and get pod name&nbsp;<\/p>\n<\/li>\n<\/ul>\n<pre><code>kubectl get pods -l app=my-app -o custom-columns=:metadata.name\n<\/code><\/pre>\n<ul>\n<li>\n<p>kubectl Copy file into pod: error directory not exists or not found.&nbsp;<\/p>\n<\/li>\n<\/ul>\n<pre><code>kubectl --kubeconfig=xxx cp {{filename}} {{namespace}}\/{{pod}}:\/{{filename}}\n# {{filename}} is needed!!\n<\/code><\/pre>\n<ul>\n<li>\n<p>CronJob sample<\/p>\n<\/li>\n<\/ul>\n<pre><code>apiVersion: batch\/v1beta1\nkind: CronJob\nmetadata:\n&nbsp;&nbsp;name: jj-triggerjob\n&nbsp;&nbsp;namespace: pls-po\nspec:\n&nbsp;&nbsp;schedule: &quot;* 6 * * *&quot;\n&nbsp;&nbsp;jobTemplate:\n&nbsp;&nbsp;&nbsp;&nbsp;spec:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backoffLimit: 4\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spec:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;containers:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: jj-triggerjob\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image: dockerhub\/repo:latest\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resources:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu: 400m\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory: 512Mi\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requests:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu: 400m\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory: 512Mi\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- \/bin\/sh\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- -c\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- &quot; echo \\&quot;Running trigger job\\&quot;;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit_status=$(curl -X PUT jjgoodapi\/api\/v1\/person -H \\&quot;accept: application\/octet-stream\\&quot; -H \\&quot;my-trace-id: $(uuidgen)\\&quot; -H \\&quot;my-application-name: biapi-triggerjob\\&quot; -H \\&quot;my-api-key: XXXXX\\&quot; -i -d \\&quot; \\&quot; -w \\&quot;%{http_code}\\&quot;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ! echo $exit_status | grep -e \\&quot;202\\&quot; -e \\&quot;406\\&quot; ; then\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $exit_status;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo \\&quot;Failed without status code: 202 or 406\\&quot;;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo \\&quot;Done trigger job\\&quot;;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo \\&quot;Passed with status code: 202 or 406\\&quot;;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo \\&quot;Done trigger job\\&quot;;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# imagepullsecrets:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# - name: XXAccount\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restartPolicy: OnFailure\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodeSelector:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beta.kubernetes.io\/os: linux\n<\/code><\/pre>\n<ul>\n<li>\n<p>Unknown object type &quot;nil&quot;<\/p>\n<\/li>\n<ul>\n<li>\n<p>error msg<\/p>\n<\/li>\n<\/ul>\n<\/ul>\n<pre><code>error: error validating &quot;\/home\/jj\/deployment.yaml&quot;: error validating data: [ValidationError(Ingress.spec.tls[0].hosts): unknown object type &quot;nil&quot; in Ingress.spec.tls[0].hosts[0],\n<\/code><\/pre>\n<ul>\n<ul>\n<li>\n<p>Solve: Fix wrong yaml format.<\/p>\n<\/li>\n<\/ul>\n<li>\n<p>Apply private registry credential<\/p>\n<\/li>\n<\/ul>\n<pre><code>kubectl create secret generic regcred \\\n&nbsp;&nbsp;&nbsp;&nbsp;--from-file=.dockerconfigjson={path\/to\/.docker\/config.json} \\\n&nbsp;&nbsp;&nbsp;&nbsp;--type=kubernetes.io\/dockerconfigjson\n\n# Add to deployment (pod)\nspec:\n&nbsp;&nbsp;containers:\n&nbsp;&nbsp;- name: xxx\n&nbsp;&nbsp;&nbsp;&nbsp;image: xxx\n&nbsp;&nbsp;imagePullSecrets:\n&nbsp;&nbsp;- name: regcred\n<\/code><\/pre>\n<ul>\n<li>\n<p>Deployment not updating after image updated, Force deployment rolling-update<\/p>\n<\/li>\n<\/ul>\n<pre><code>spec:\n&nbsp;&nbsp;template:\n&nbsp; &nbsp;&nbsp;spec:\n&nbsp; &nbsp; &nbsp;&nbsp;containers:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- image: xxx\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagePullPolicy: Always\n<\/code><\/pre>\n<ul>\n<li>\n<p>Deployment not updating after configmap updated<\/p>\n<\/li>\n<ul>\n<li>\n<p>Update label to trigger deployment rolling update<\/p>\n<\/li>\n<\/ul>\n<\/ul>\n<pre><code>metadata:\n&nbsp;&nbsp;labels:\n&nbsp;&nbsp;&nbsp;&nbsp;configmap-version: 1\n<\/code><\/pre>\n<ul>\n<li>\n<p>ConfigMap has a size limit of 1Mb, exceed error:&nbsp;<\/p>\n<\/li>\n<ul>\n<li>\n<p>Msg:&nbsp;The ConfigMap &quot;XXXXXXX&quot; is invalid: metadata.annotations: Too long: must have at most 262144 characters<\/p>\n<\/li>\n<li>\n<p>Use kubectl replace&nbsp;<\/p>\n<\/li>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Ref:&nbsp;<\/span><a href=\"https:\/\/github.com\/coreos\/prometheus-operator\/issues\/535#issuecomment-319936366\">https:\/\/github.com\/coreos\/prometheus-operator\/issues\/535#issuecomment-319936366<\/a><\/p>\n<\/li>\n<\/ul>\n<\/ul>\n<p><span style=\"font-size: 18pt;font-weight: bold\">K8s dashboard<\/span><\/p>\n<ul>\n<li>\n<p>Paste string to EXEC UI<\/p>\n<\/li>\n<ul>\n<li>\n<p><span style=\"font-size: 14px;letter-spacing: normal;text-indent: 0px;font-family: arial, sans-serif\">ctrl-shift-v<\/span><\/p>\n<\/li>\n<\/ul>\n<li>\n<p>Login issue: namespace change to default<\/p>\n<\/li>\n<ul>\n<li>\n<p><span style=\"font-weight: bold\">Solution<\/span>: type it back at uri<\/p>\n<\/li>\n<\/ul>\n<li>\n<p>Login issue: exec into pod via Firefox will redirect back to k8s portal.<\/p>\n<\/li>\n<ul>\n<li>\n<p>Sol: Use other browsers.<\/p>\n<\/li>\n<\/ul>\n<\/ul>\n<p><span style=\"font-size: 18pt;font-weight: bold\">DockerHub<\/span><\/p>\n<ul>\n<li>\n<p>Always get handshake fail when `docker pull`&nbsp;&nbsp;<\/p>\n<\/li>\n<ul>\n<li>\n<p><span style=\"font-weight: bold\">Solution<\/span>:<\/p>\n<p>Login DockerHub with the account which has no email address.<\/p>\n<\/li>\n<\/ul>\n<li>\n<p>Download image fail: Authentication fail 401<\/p>\n<\/li>\n<ul>\n<li>\n<p><span style=\"font-weight: bold\">Message:<\/span><\/p>\n<p><span style=\"font-size: 10pt\">(HTTP code 401) unexpected &#8211; {&quot;message&quot;:&quot;Get<\/span> <a href=\"https:\/\/registry-1.docker.io\/v2\/library\/jenkins\/manifests\/2.46.3\">https:\/\/registry-1.docker.io\/v2\/library\/jenkins\/manifests\/2.46.3<\/a><span style=\"font-size: 10pt\">: unauthorized: incorrect username or password&quot;}&nbsp;<\/span><\/p>\n<p><span style=\"font-size: 14px;font-family: gotham, helvetica, arial, sans-serif;font-weight: bold\">Solution:<\/span><\/p>\n<p><span style=\"font-size: 14px;letter-spacing: normal;text-indent: 0px\">logging into Kitematic with your username instead of email.<\/span><\/p>\n<\/li>\n<\/ul>\n<li>\n<p><span>Check the files permission in docker image<\/span><\/p>\n<p><span>docker run &#8211;rm -ti &#8211;entrypoint sh jj\/docker-stacks -c &quot;ls -alF \/usr\/local\/bin\/&quot;&nbsp;<\/span><\/p>\n<\/li>\n<\/ul>\n<p><span style=\"font-size: 18pt;font-weight: bold\">Docker<\/span><\/p>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Docker with GrayLog<\/span><\/p>\n<\/li>\n<pre><code>---------------------------------- docker\ndocker run --log-driver=gelf --log-opt gelf-address=udp:\/\/graylog.example.com:12201 busybox echo This is my&nbsp;&nbsp;message.\n\n------------------------- docker-compose\nversion: &quot;2&quot;\n\nservices:\n&nbsp;&nbsp;example:\n&nbsp;&nbsp;&nbsp;&nbsp;container_name: example\n&nbsp;&nbsp;&nbsp;&nbsp;image: debian:wheezy\n&nbsp;&nbsp;&nbsp;&nbsp;command: \/bin\/sh -c &quot;while true; do date &amp;&amp; echo &quot;hello&quot;; sleep 1; done&quot;\n&nbsp;&nbsp;&nbsp;&nbsp;ports:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- &quot;1234:1234&quot;\n&nbsp;&nbsp;&nbsp;&nbsp;logging:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver: &quot;gelf&quot;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gelf-address: &quot;udp:\/\/graylog.example.com:12201&quot;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag: &quot;first-logs&quot;\n<\/code><\/pre>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Unable to start container by docker-compose<\/span><\/p>\n<\/li>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Msg: &quot;UnixHTTPConnectionPool(host=&apos;localhost&apos;, port=None): Read timed out. (read timeout=60)&quot;<\/span><\/p>\n<\/li>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Ans: ` sudo service docker restart`<\/span><\/p>\n<\/li>\n<\/ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">[Character in Dockerfile]: &quot; will be split by space&nbsp;<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code>in echo &quot; xxx string &quot; &gt; file.txt\n\n# result: file.txt\n# xxx\n# string\n<\/code><\/pre>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">[Character in Dockerfile]: &quot; will be remove inside &apos; &quot;xxx&quot; &apos;<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code>echo &apos; &quot;xxx string&quot; &apos; &gt; file.txt\n\n# result: file.txt\n#&nbsp; xxx string&nbsp;\n<\/code><\/pre>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">[Cronjob] &#8211; Clean container&amp;image daily at mid-night<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code># Clean container\n0 0 * * * docker rm -f $(docker ps -aq)\n# Clean image without baseImage\n0 5 * * * docker image prune -f; docker rmi -f $(docker images | awk &apos;\/^[^m][^c][^r]*\/{ print $3 }&apos;)\n0 5 * * * docker rmi -f $(docker images | awk &apos;$1 !~\/ik8s\/{ print $3 }&apos;)\n0 5 * * * docker image prune -f --filter=&quot;dangling=true&quot;; docker image prune -f --all --filter until=168h\n\n# Clean all unused build cache\ndocker builder prune -a\n# Clean all\ndocker system prune -a\n# Clean image older than 48h\ndocker image prune -f --all --filter until=48h\n# Clean dangling images\ndocker rmi $(sudo docker images -f &quot;dangling=true&quot; -q)\n<\/code><\/pre>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Not enough memory to start Docker on Windows<\/span><\/p>\n<\/li>\n<ul>\n<li>\n<p>Modify `C:\\Program Files\\Docker\\Docker\\resources\\MobyLinux.ps1` and change `$Memory = 512`&nbsp; MB as you want<\/p>\n<\/li>\n<\/ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px;font-family: Tahoma\">Install with `sudo` but `docker run` without it,&nbsp; got error: &quot;<\/span><span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">docker<\/span><span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">:<\/span> <span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">Got<\/span> <span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">permission denied<\/span> <span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">while<\/span> <span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">trying to connect to the<\/span> <span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">Docker<\/span> <span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">daemon socket at unix<\/span><span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">:<\/span><span style=\"font-size: 13px;letter-spacing: normal;text-indent: 0px;border: 0px;width: auto;max-height: 600px;overflow: auto;, monospace, sans-serif\">\/\/\/var\/run\/docker.sock: Post http:\/\/%2Fvar%2Frun%2Fdocker.sock\/v1.35\/containers\/create: dial unix \/var\/run\/docker.sock: connect: permission denied.See &apos;docker run &#8211;help&apos;.<\/span><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px;font-family: Tahoma\">&quot;.<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code>sudo groupadd docker\nsudo usermod -aG docker $USER&nbsp; &nbsp;# Add user into group\n\nRef:&nbsp;https:\/\/docs.docker.com\/install\/linux\/linux-postinstall\/#manage-docker-as-a-non-root-user\n<\/code><\/pre>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">ERROR: Get<\/span> <a href=\"https:\/\/registry-1.docker.io\/v2\/\">https:\/\/registry-1.docker.io\/v2\/<\/a><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">: remote error: tls: handshake failure<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code>docker login&nbsp; # Yes, login first\n<\/code><\/pre>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Windows 10: Change docker images and any stuff to another folder, notice that the slash and case of character.<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code>-- C:\\ProgramData\\docker\\config\\daemon.json --\n{\n&nbsp;&nbsp;&quot;registry-mirrors&quot;: [],\n&nbsp;&nbsp;&quot;insecure-registries&quot;: [],\n&nbsp;&nbsp;&quot;debug&quot;: true,\n&nbsp;&nbsp;&quot;experimental&quot;: false,\n&nbsp;&nbsp;&quot;graph&quot;:&quot;D:\\\\ProgramData\\\\docker&quot;\n}\n<\/code><\/pre>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px;font-weight: bold\">docker: Error response from daemon: driver failed programming external connectivity on endpoint<\/span><\/p>\n<\/li>\n<ul>\n<li>\n<p>Restart docker<\/p>\n<\/li>\n<\/ul>\n<li>\n<p><span style=\"font-weight: bold\">The SPA default page middleware could not return the default page &apos;\/index.html&apos; because it was not found, and no other middleware handled the request.<\/span><\/p>\n<\/li>\n<li>\n<p><span style=\"font-weight: bold\">mkdir \/host_mnt\/c: file exists.<\/span><\/p>\n<\/li>\n<ul>\n<li>\n<p>Re-apply Shared Drive in docker-Desktop.<\/p>\n<\/li>\n<\/ul>\n<li><\/li>\n<\/ul>\n<p><span style=\"font-size: 18pt;font-weight: bold\">Docker compose<\/span><\/p>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">Docker IP not match<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code># Check docker container IP\ndocker network inspect XXX\n\n# Rebuild network (restart not working)\ndocker-compose down\ndocker-compose up\n\nPS. docker-compose restart &lt;- won&apos;t rebuild\n<\/code><\/pre>\n<ul>\n<li>\n<p><span style=\"font-size: medium;letter-spacing: normal;text-indent: 0px\">ERROR: client version 1.22 is too old. Minimum supported API version is 1.24, please upgrade your client to a newer version<\/span><\/p>\n<\/li>\n<\/ul>\n<pre><code>--- docker-compose.yml ---\nversion: &apos;2.1&apos;\n...\n<\/code><\/pre><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Https (k8s ingress TLS) &quot;default backend 404&quot; error<\/p>\n<\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[12,14],"class_list":["post-1296","post","type-post","status-publish","format-standard","hentry","category-tech","tag-docker","tag-faq"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Container FAQ (updating) - John&#039;s Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/john.pentaidea.com\/?p=1296\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Container FAQ (updating) - John&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"Https (k8s ingress TLS) &quot;default backend 404&quot; error\" \/>\n<meta property=\"og:url\" content=\"https:\/\/john.pentaidea.com\/?p=1296\" \/>\n<meta property=\"og:site_name\" content=\"John&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-02T17:48:02+00:00\" \/>\n<meta name=\"author\" content=\"jj\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jj\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/john.pentaidea.com\/?p=1296\",\"url\":\"https:\/\/john.pentaidea.com\/?p=1296\",\"name\":\"Container FAQ (updating) - John&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\/\/john.pentaidea.com\/#website\"},\"datePublished\":\"2020-06-02T17:48:02+00:00\",\"dateModified\":\"2020-06-02T17:48:02+00:00\",\"author\":{\"@id\":\"https:\/\/john.pentaidea.com\/#\/schema\/person\/3d2e5980a7d3023e93b91d668d2a4a4f\"},\"breadcrumb\":{\"@id\":\"https:\/\/john.pentaidea.com\/?p=1296#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/john.pentaidea.com\/?p=1296\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/john.pentaidea.com\/?p=1296#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/john.pentaidea.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Container FAQ (updating)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/john.pentaidea.com\/#website\",\"url\":\"https:\/\/john.pentaidea.com\/\",\"name\":\"John's Blog\",\"description\":\"\u4e16\u754c\u56e0\u601d\u7dd2\u800c\u8907\u96dc, \u4eba\u56e0\u5922\u60f3\u800c\u5049\u5927\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/john.pentaidea.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/john.pentaidea.com\/#\/schema\/person\/3d2e5980a7d3023e93b91d668d2a4a4f\",\"name\":\"jj\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/john.pentaidea.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a685414cd92056415bc823b5cfbbf95a44a98df88d8c040b18613724c1c0724b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a685414cd92056415bc823b5cfbbf95a44a98df88d8c040b18613724c1c0724b?s=96&d=mm&r=g\",\"caption\":\"jj\"},\"sameAs\":[\"https:\/\/john.pentaidea.com\"],\"url\":\"https:\/\/john.pentaidea.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Container FAQ (updating) - John&#039;s Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/john.pentaidea.com\/?p=1296","og_locale":"en_US","og_type":"article","og_title":"Container FAQ (updating) - John&#039;s Blog","og_description":"Https (k8s ingress TLS) &quot;default backend 404&quot; error","og_url":"https:\/\/john.pentaidea.com\/?p=1296","og_site_name":"John&#039;s Blog","article_published_time":"2020-06-02T17:48:02+00:00","author":"jj","twitter_card":"summary_large_image","twitter_misc":{"Written by":"jj","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/john.pentaidea.com\/?p=1296","url":"https:\/\/john.pentaidea.com\/?p=1296","name":"Container FAQ (updating) - John&#039;s Blog","isPartOf":{"@id":"https:\/\/john.pentaidea.com\/#website"},"datePublished":"2020-06-02T17:48:02+00:00","dateModified":"2020-06-02T17:48:02+00:00","author":{"@id":"https:\/\/john.pentaidea.com\/#\/schema\/person\/3d2e5980a7d3023e93b91d668d2a4a4f"},"breadcrumb":{"@id":"https:\/\/john.pentaidea.com\/?p=1296#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/john.pentaidea.com\/?p=1296"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/john.pentaidea.com\/?p=1296#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/john.pentaidea.com\/"},{"@type":"ListItem","position":2,"name":"Container FAQ (updating)"}]},{"@type":"WebSite","@id":"https:\/\/john.pentaidea.com\/#website","url":"https:\/\/john.pentaidea.com\/","name":"John's Blog","description":"\u4e16\u754c\u56e0\u601d\u7dd2\u800c\u8907\u96dc, \u4eba\u56e0\u5922\u60f3\u800c\u5049\u5927","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/john.pentaidea.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/john.pentaidea.com\/#\/schema\/person\/3d2e5980a7d3023e93b91d668d2a4a4f","name":"jj","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/john.pentaidea.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a685414cd92056415bc823b5cfbbf95a44a98df88d8c040b18613724c1c0724b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a685414cd92056415bc823b5cfbbf95a44a98df88d8c040b18613724c1c0724b?s=96&d=mm&r=g","caption":"jj"},"sameAs":["https:\/\/john.pentaidea.com"],"url":"https:\/\/john.pentaidea.com\/?author=1"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=\/wp\/v2\/posts\/1296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1296"}],"version-history":[{"count":0,"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=\/wp\/v2\/posts\/1296\/revisions"}],"wp:attachment":[{"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/john.pentaidea.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}