{"id":833,"date":"2019-10-09T03:34:56","date_gmt":"2019-10-09T03:34:56","guid":{"rendered":"http:\/\/codeinsightacademy.com\/blog\/?page_id=833"},"modified":"2019-12-31T07:54:42","modified_gmt":"2019-12-31T07:54:42","slug":"docker","status":"publish","type":"page","link":"https:\/\/codeinsightacademy.com\/blog\/devops\/docker\/","title":{"rendered":"Docker"},"content":{"rendered":"<p>[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]<span style=\"font-size: medium;\">docker build -t mibu\/jitsi-meet&lt;new image name&gt; .<\/span><\/p>\n<p>docker commit 82669bca3013&lt;container ID&gt; avinash\/jitsi-meet&lt;image name&gt;<\/p>\n<p>docker system df<br \/>\ndocker system df -v<br \/>\ndocker network ls<\/p>\n<p>docker network rm f7a386c67223<\/p>\n<p>docker network create &#8211;gateway=192.168.40.4 &#8211;subnet=192.168.0.0\/16 jitsi_bridge<br \/>\ndocker run &#8211;net jitsi_bridge &#8211;ip 192.168.90.95 -itd shailesh\/jitsi-meet<\/p>\n<p>Rename image after pull<br \/>\ndocker tag local\/old_image local\/new_imagename<\/p>\n<p>Push image in dockerhub<br \/>\ndocker push docker_id\/image<br \/>\ne.g.<br \/>\ndocker push shailesh\/image_name<\/p>\n<p>NOTE: docker_id should match with the docker hub&#8217;s id<br \/>\nImage name should be format docker_id\/image_name<br \/>\nYou should be logged in to docker hub from terminal[\/box]<\/p>\n<p>Useful docker commands<\/p>\n<ul>\n<li>docker build -t [image name] .<\/li>\n<li>docker images -a<\/li>\n<li>docker ps -a<\/li>\n<li>docker run [image name]<\/li>\n<li>docker run -d &#8211;name [container name] [image name]<\/li>\n<li>docker run -v [\/host\/directory]:[\/container\/directory] [image name]<\/li>\n<li>docker start [container name]<\/li>\n<li>docker exec -it [container name] \/bin\/bash<\/li>\n<li>docker rmi [image name]<\/li>\n<li>docker rm [container name]<\/li>\n<li>docker inspect [container_name]<br \/>\nto get ip address<\/li>\n<li>docker search [image name]<br \/>\nto search image on docker hub and list whether it is official or not<\/li>\n<\/ul>\n<p>Sample Docker File<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">FROM\u00a0php:7.0-apache\u00a0\u00a0\r\nCOPY\u00a0[source directory] \/var\/www\/html\r\nEXPOSE 80<\/pre>\n<p>NOTE:<\/p>\n<ul>\n<li>Keep the name of file <strong>Dockerfile<\/strong> only<\/li>\n<li>Keep the source project directory in the <strong>same level<\/strong> where Dockerfile file is present<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>How to create docker image<\/strong><\/p>\n<ol>\n<li>Create Docker file: <strong>Dockerfile<\/strong><br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]FROM php:7.0-apache<br \/>\nCOPY src\/ \/var\/www\/html<br \/>\nEXPOSE 80[\/box]<\/li>\n<li>docker build -t image-filename docker-file-location [box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]<span class=\"typ\">docker build -t hello-world .<\/span>[\/box]<\/li>\n<li>sudo docker run -p localpot:imageport image-name <span class=\"typ\">[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]sudo\u00a0docker run -p 8989:80 image-name[\/box]<br \/>\n<\/span>To name container<br \/>\n<span class=\"typ\">[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]sudo docker run -p 8980:80\u00a0&#8211;name=customcontainername image [\/box]<\/span><span class=\"typ\"><br \/>\n<\/span>To mount local app with image\/container<br \/>\n<span class=\"typ\">[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]sudo docker run -p 8980:80 -v \/var\/www\/html\/localapp\/:\/var\/www\/html -i -t php-app[\/box]<br \/>\nTo copy files from host to docker container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]sudo docker cp .\/test.php container:\/var\/www\/html\/[\/box]<br \/>\nTo start existing container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]sudo docker start[container name|container id][\/box]<br \/>\nTo stop existing container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]sudo docker stop [container name|container id][\/box]<br \/>\nTo login to container bash<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]sudo docker exec -it &#8211;user root mydockercontainer \/bin\/bash[\/box]<\/span><\/li>\n<\/ol>\n<hr \/>\n<p><strong>How to export and import image<\/strong><\/p>\n<p>You will need to save the docker image as a tar file:<\/p>\n<pre><code>docker save -o &lt;path for generated tar file&gt; &lt;image name&gt;\r\n<\/code><\/pre>\n<p>Then copy your image to a new system with regular file transfer tools such as\u00a0<code>cp<\/code>\u00a0or\u00a0<code>scp<\/code>. After that you will have to load the image into docker:<\/p>\n<pre><code>docker load -i &lt;path to image tar file&gt;\r\n<\/code><\/pre>\n<p>PS: You may need to\u00a0<code>sudo<\/code>\u00a0all commands.<\/p>\n<p>Ref: Link:\u00a0https:\/\/stackoverflow.com\/questions\/23935141\/how-to-copy-docker-images-from-one-host-to-another-without-via-repository<\/p>\n<hr \/>\n<p><strong>How to remove container and images<\/strong><\/p>\n<pre class=\"lang-bash prettyprint prettyprinted\"><code><span class=\"typ\">Docker<\/span><span class=\"pln\"> ps <\/span><span class=\"pun\">-<\/span><span class=\"pln\">a               <\/span><span class=\"com\"># Lists containers (and tells you which images they are spun from)<\/span>\r\n<span class=\"typ\">Docker<\/span><span class=\"pln\"> images              <\/span><span class=\"com\"># Lists images  <\/span>\r\n<span class=\"typ\">Docker<\/span><span class=\"pln\"> rm <\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">container_id<\/span><span class=\"pun\">&gt;<\/span>   <span class=\"com\"># Removes a container<\/span>\r\n\r\n<span class=\"typ\">Docker<\/span><span class=\"pln\"> rmi <\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">image_id<\/span><span class=\"pun\">&gt;<\/span>      <span class=\"com\"># Removes an image <\/span>\r\n                           <span class=\"com\"># Will fail if there is a running instance of that image i.e. container<\/span>\r\n\r\n<span class=\"typ\">Docker<\/span><span class=\"pln\"> rmi <\/span><span class=\"pun\">-<\/span><span class=\"pln\">f <\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">image_id<\/span><span class=\"pun\">&gt;<\/span>   <span class=\"com\"># Forces removal of image even if it is referenced in multiple repositories, <\/span>\r\n                           <span class=\"com\"># i.e. same image id given multiple names\/tags <\/span>\r\n                           <span class=\"com\"># Will still fail if there is a docker container referencing image<\/span><\/code><\/pre>\n<p>Ref Link:\u00a0https:\/\/stackoverflow.com\/questions\/33907835\/docker-error-cannot-delete-docker-container-conflict-unable-to-remove-reposito<\/p>\n<hr \/>\n<p><iframe loading=\"lazy\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/Qw9zlE3t8Ko?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<hr \/>\n<p><iframe loading=\"lazy\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/HUpIoF_conA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<hr \/>\n<p><strong>docker composer commands<\/strong><\/p>\n<ol>\n<li>check docker composer version<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker-compose -v<br \/>\ndocker-composer version<br \/>\n[\/box]<\/li>\n<li>create docker composer file at any location<span class=\"typ\">vim docker-composer.yml<\/span><br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]<br \/>\nversion: &#8216;3&#8217;services:<br \/>\nweb:<br \/>\nimage: nginx<br \/>\nports:<br \/>\n&#8211;\u00a0 9090:80database:<br \/>\nimage: redis<br \/>\n[\/box]<\/li>\n<li>compile the docker-compose yml file<br \/>\n<span class=\"typ\">[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker-compose config[\/box]<br \/>\n<\/span><\/li>\n<li><span class=\"typ\">run\/up docker-compose<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker-compose up -d[\/box]<\/span><\/li>\n<li><span class=\"typ\">check running container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker ps[\/box]<\/span><\/li>\n<li><span class=\"typ\">stop\/down docker-compose<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker-compose down[\/box]<\/span><\/li>\n<li><span class=\"typ\">help manual<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker-compose &#8211;help[\/box]<\/span><\/li>\n<li><span class=\"typ\">scaling containers<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker-compose up -d &#8211;scale service-name=count<br \/>\ne.g. docker-compose up -d &#8211;scale database=4[\/box]<\/span><\/li>\n<\/ol>\n<hr \/>\n<p><strong>create docker image from container<\/strong><\/p>\n<ol>\n<li>create base container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker create &#8211;name custom_container_name -p 8080:80 image_name[\/box]<\/li>\n<li>list available images<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker images[\/box]<\/li>\n<li>list available containers<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker ps -a[\/box]<\/li>\n<li>start the container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker start custom_container_name[\/box]<\/li>\n<li>modify the running container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker cp local_files_or_directory custom_container_name:\/var\/www\/html\/[\/box]<\/li>\n<li>create image from modified container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker commit custom_container_name[\/box]list images[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker images[\/box]There must be a new image without tag name<\/li>\n<li>tag the untitled image<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker tag [image id] new_image_name[\/box]list images[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker images[\/box]You will find new image you&#8217;ve just created<\/li>\n<li>commit with tag name [optional]<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker commit custom_container_name new_image_name[\/box]<\/li>\n<li>remove the temporary created container<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker ps<br \/>\ndocker stop custom_container_name<br \/>\ndocker rm custom_container_name<br \/>\n[\/box]<\/li>\n<li>run the newly created image<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker ps -a<br \/>\ndocker run &#8211;name custom_container_name -d -p 8080:80 newly_created_image_name[\/box]<\/li>\n<li>check browser<br \/>\n[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]http:\/\/localhost:8080[\/box]<\/li>\n<\/ol>\n<p>Ref: https:\/\/www.scalyr.com\/blog\/create-docker-image\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[box title=&#8221;&#8221; bg_color=&#8221;#dbdbdb&#8221; align=&#8221;left&#8221;]docker build -t mibu\/jitsi-meet&lt;new image name&gt; . docker commit 82669bca3013&lt;container ID&gt; avinash\/jitsi-meet&lt;image name&gt; docker system df docker system df -v docker network ls docker network rm f7a386c67223 docker network create &#8211;gateway=192.168.40.4 &#8211;subnet=192.168.0.0\/16 jitsi_bridge docker run &#8211;net jitsi_bridge &#8211;ip 192.168.90.95 -itd shailesh\/jitsi-meet Rename image after pull docker tag local\/old_image local\/new_imagename Push image in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":483,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/pages\/833"}],"collection":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/comments?post=833"}],"version-history":[{"count":11,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/pages\/833\/revisions"}],"predecessor-version":[{"id":877,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/pages\/833\/revisions\/877"}],"up":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/pages\/483"}],"wp:attachment":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/media?parent=833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}