{"id":78468,"date":"2024-09-29T23:55:55","date_gmt":"2024-09-29T20:25:55","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/basic-of-docker-315c\/"},"modified":"2024-09-29T23:55:55","modified_gmt":"2024-09-29T20:25:55","slug":"basic-of-docker-315c","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/basic-of-docker-315c\/","title":{"rendered":"Basic of Docker &#8211; \u0627\u0646\u062c\u0645\u0646 DEV"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            Docker \u06cc\u06a9 \u067e\u0644\u062a \u0641\u0631\u0645 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0648 \u0642\u0627\u0628\u0644 \u062d\u0645\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u060c \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062a\u0627 \u062a\u0648\u0644\u06cc\u062f\u060c \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc:<\/p>\n<p>Containerization: Docker \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u0646\u062f\u060c \u06a9\u0647 \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062c\u062f\u0627\u0633\u0627\u0632\u06cc: \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0627\u06cc\u0632\u0648\u0644\u0647 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u062a\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0628\u062f\u0648\u0646 \u062f\u0631\u06af\u06cc\u0631\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0642\u0627\u0628\u0644\u06cc\u062a \u062d\u0645\u0644: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0631\u0648\u06cc \u0647\u0631 \u0633\u06cc\u0633\u062a\u0645\u06cc \u06a9\u0647 \u062f\u0627\u06a9\u0631 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u0648 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0628\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc\u060c \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u062a\u0648\u0644\u06cc\u062f \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u06a9\u0627\u0631\u0627\u06cc\u06cc: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0647\u0633\u062a\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc \u06af\u0630\u0627\u0631\u0646\u062f\u060c \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 \u0645\u0627\u0634\u06cc\u0646 \u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0633\u0646\u062a\u06cc \u0633\u0628\u06a9 \u0648 \u0633\u0631\u06cc\u0639 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645: \u062f\u0627\u06a9\u0631 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u063a\u0646\u06cc \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Docker Hub (\u0645\u062e\u0632\u0646 \u0628\u0631\u0627\u06cc \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631) \u0648 Docker Compose (\u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0686\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc) \u0627\u0633\u062a \u06a9\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u062f\u0627\u06a9\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647\u0631\u0647 \u0648\u0631\u06cc \u0631\u0627 \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f \u0648 \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0633\u0639\u0647 \u0631\u0627 \u0633\u0627\u062f\u0647 \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0645\u0647\u0627\u0631\u062a \u0636\u0631\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0645\u062f\u0631\u0646 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f.<\/p>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f VM \u0631\u0627 \u062f\u0631 Azure \u06cc\u0627 AWS \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0628\u0631\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0646\u0635\u0628 \u062f\u0631 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0644\u0648\u06a9\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f<\/p>\n<p>Docker commands<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>docker run -it &#8211;name new_contatiner ubuntu \/bin\/bash        <\/p>\n<p> When you run this command:<br \/>\nDocker checks if the Ubuntu image is available locally. If not, it downloads the image from Docker Hub.It then creates a new container from the Ubuntu image. The -it flags make sure that you can interact with the shell.A Bash shell is started within the container, allowing you to execute commands as if you were using a regular Ubuntu terminal.<\/p>\n<p>docker images<\/p>\n<p>all Docker images available on your local machine<\/p>\n<p>docker ps<\/p>\n<p>check which containers are currently running on your system , add -a to check all containers<\/p>\n<p>docker pull image<br \/>\nused to download the official Docker image from Docker Hub to your local machine.  image can be unbuntu, jenkins or any setup<\/p>\n<p>docker start [container]\nis used to start a stopped container. Ensure you have the correct name or ID, and check the container\u2019s status after starting it.<\/p>\n<p>docker stop [container]\nis used to stop a started container. Ensure you have the correct name or ID, and check the container\u2019s status after stopping it.<\/p>\n<p>docker attach [container]\n command is used to connect your terminal to a running container&#8217;s standard input, output, and error streams. This allows you to interact with the container as if you were directly accessing its terminal.Use it carefully, as it can affect the running processes within the container.<\/p>\n<p> docker exec -it [container_name_or_id] \/bin\/bash<br \/>\n is used to start a new interactive shell session inside a running Docker container.docker exec is generally more versatile for administrative tasks, whereas docker attach is more suited for direct interaction with the primary process.<\/p>\n<p>docker rm [container]  ;   docker rm container1 container2 container3 ;  docker container prune<br \/>\ncommand will only work on stopped containers.  you can use the -f flag to forcefully remove a running container.  2nd cmd is remove multiple container. 3rd is to remove all stopped containers<\/p>\n<p>docker commit [OPTIONS] CONTAINER NEW_IMAGE_NAME<br \/>\ndocker commit sonucontianer updateimage ;<br \/>\ncommit a Docker container and create a new image from it, you can use the docker commit command. This command saves the changes made to a container&#8217;s filesystem as a new image.<\/p>\n<p>docker diff [container name]\ncommand is used to inspect changes made to a container&#8217;s filesystem since it was started. It shows what has been added, modified, or deleted in the container compared to its original state.<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>File System:  Docker file components and difference command <\/p>\n<p>A Dockerfile is a text file that contains a set of instructions used to build a Docker image. These instructions define how to configure and package the software, libraries, and dependencies required for the application you want to containerize.<\/p>\n<p>In Docker, parser directives are special instructions placed at the beginning of a Dockerfile that influence how the file is processed by the Docker engine. These directives allow you to control certain behaviors, such as the default shell to be used for RUN commands or encoding for the Dockerfile itself.<\/p>\n<p># syntax<\/p>\n<p>Purpose: Specifies the syntax or the version of the build backend to use, which allows features from specific versions of Docker BuildKit.<br \/>\nUsage: This directive helps specify which build system or additional features should be supported during the build process.<\/p>\n<p> syntax=docker\/dockerfile:1.2<\/p>\n<p># syntax=docker\/dockerfile:1.3<br \/>\nFROM ubuntu:20.04<br \/>\nRUN echo &#8220;Using BuildKit features from Dockerfile syntax version 1.3&#8221;<\/p>\n<p>This Dockerfile specifies the use of Docker BuildKit features from version 1.3.<\/p>\n<p># escape<\/p>\n<p>Purpose: Specifies the escape character to be used for line continuations in the Dockerfile. By default, Docker uses \\ for line continuation, but you can change it to another character like backtick (`).<br \/>\nUsage: This directive is useful for Windows-based containers where the backslash \\ is commonly used in file paths.<br \/>\n# escape=`<\/p>\n<p># escape=`<br \/>\nFROM mcr.microsoft.com\/windows\/servercore:ltsc2022<br \/>\nRUN dir C:\\Windows `<br \/>\n    &amp;&amp; echo &#8220;Line continuation using backtick (`)&#8221;<\/p>\n<p>In this example, the escape directive changes the line continuation character to a backtick, which is more suitable for Windows containers using Windows-style paths.<\/p>\n<p>Without the # escape directive, Docker defaults to using \\ as the line continuation character.<br \/>\nWithout the # syntax directive, Docker uses the default syntax compatible with the current Docker version.<\/p>\n<p>ARG             Use build-time variables.<br \/>\nFROM            Create a new build stage from a base image.<br \/>\nRUN             Execute build commands.<br \/>\nMAINTAINER      Specify the author of an image.<br \/>\nCOPY            Copy files and directories.<br \/>\nADD             Add local or remote files and directories.<br \/>\nEXPOSE          Describe which ports your application is listening on.<br \/>\nWORKDIR         Change working directory.<br \/>\nCMD             Specify default commands.<br \/>\nENTRYPOINT      Specify default executable.<br \/>\nENV             Set environment variables.<\/p>\n<p>ARG variables are only accessible during the build phase of a Docker image and are not available during the runtime of a container. Once the build is complete, the ARG values are discarded and cannot be accessed inside a running container. If you need access to the values during the runtime of the container, you will need to pass them as environment variables using ENV or provide runtime options via docker run.<\/p>\n<p>Create a Dockerfile<\/p>\n<p>vi Dockerfile<\/p>\n<p>FROM ubuntu<br \/>\nRUN echo &#8220;My name is Indra Singh&#8221; &gt; \/tmp\/testfile<\/p>\n<p>saveit in vm press esc&#8212;&gt; wq  enter<\/p>\n<p>run command    :    Docker build -t test .<br \/>\nagain create container from the above image and check the \/tmp directory, you will get the file<\/p>\n<p>Another example<\/p>\n<p>Create a Dockerfile<\/p>\n<p>vi Dockerfile<\/p>\n<p>FROM ubuntu<br \/>\nWORKDIR \/tmp<br \/>\nRUN echo &#8220;My name is Indra Singh&#8221; &gt; \/tmp\/testfile<br \/>\nENV myname IndraSingh<br \/>\nCOPY testfile1 \/tmp<br \/>\nADD test.tar.gz \/tmp<\/p>\n<p>saveit in vm press esc&#8212;&gt; wq  enter<\/p>\n<p>touch testfile1                 # create a testfile1<br \/>\ntouch test                      # create a test<br \/>\ntar -cvf test.tar test          #convert into test.tar<br \/>\ngzip test.tar                   #zip to gz for test.tar to create test.tar.gz<br \/>\nrm -rf test                     #remove test file as test.tar.gz file created<br \/>\nexit                            # exit from container<\/p>\n<p>dock build -t newimage1                           # create image from docker file<br \/>\ndocker run -it &#8211;name newcontatiner newimage1     # create and run the container from newimage1<br \/>\ncheck all the files <\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n#Docker Volume<\/p>\n<p>#create a file and dockerfile<br \/>\ntouch file1 file2 Dockerfile<\/p>\n<p>#edit docker file:<br \/>\nvi Dockerfile<\/p>\n<p>#enter the commmand  in docker file:<br \/>\nFROM Ubuntu<br \/>\nVOLUME [\/&#8221;myvolume&#8221;]\n<p>press esc<br \/>\n:wq enter<\/p>\n<p>#create image from file<br \/>\ndocker build -t myimage .<\/p>\n<p>#check docker images:<br \/>\ndocker images<\/p>\n<p>#create container from myimage:<br \/>\ndocker run -it &#8211;name contatiner newimage \/bin\/bash<\/p>\n<p>#create file inside myvolume then exit from  contianer<br \/>\ntouch filex filey filez<br \/>\nexit<\/p>\n<p>#creates a new container named container2 from the Ubuntu image, runs in privileged mode, granting it more permissions.It shares volumes with an existing container (contatiner)<br \/>\nAfter starting the container, it drops you into an interactive bash shell within the Ubuntu environment of the container.<\/p>\n<p>docker run -it &#8211;name container2 &#8211;privileged=true &#8211;volumes-from contatiner ubuntu \/bin\/bash<\/p>\n<p>#create volume using command<br \/>\ndocker run -it &#8211;name contatiner3 -v \/volume2 ubuntu \/bin\/bash<\/p>\n<p>#same as above shares volumes with an existing container(container3) and creating new container (container4)<br \/>\ndocker run -it &#8211;name container4 &#8211;privileged=true &#8211;volumes-from contatiner3 ubuntu \/bin\/bash<\/p>\n<p>#Map host volume to container<br \/>\ndocker run -it &#8211;name hostcont -v \/home\/azureuser:\/sonu &#8211;privileged=true &#8211;volumes-from contatiner3 ubuntu \/bin\/bash<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nPort Mapping (request made on local(host) forwarded to port on container)<\/p>\n<p>docker run -td &#8211;name techserver -p 80:80 ubuntu<\/p>\n<p>#The command creates and starts a new Docker container called techserver in the background, using the official ubuntu image. It allocates a terminal (-t), runs in detached mode (-d), and maps port 80 on the host to port 80 inside the container (-p 80:80). This setup is typically used to run a web server or another service that listens on port 80.<\/p>\n<p>example<\/p>\n<p>apt-get install apache2 -y<br \/>\ncd \/var\/www\/html<br \/>\necho &#8220;subscribe indra technical&#8221;&gt;index.html<br \/>\nservice apache2 restart <\/p>\n<p># check public ip with port :80 we will get the out put as &#8220;subscribe indra technical&#8221;.  Note inbound rule should be set for port 80.<\/p>\n<p>docker run -td &#8211;name myjenkins -p 8080:8080 jenkins\/jenkins:lts<br \/>\n# this command runs Jenkins in a detached Docker container, names it myjenkins, and makes Jenkins accessible via port 8080 on your machine.  Note inbound rule should be set for port 8080.<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0622\u0645\u0648\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0633\u0645\u062a \u0686\u067e \u0622\u0645\u0648\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0633\u0645\u062a \u0686\u067e<\/p>\n<p>\u0644\u06cc\u0646\u06a9 \u06a9\u062f github<\/p>\n<div data-article-id=\"2019693\" id=\"article-body\">\n<p>Docker \u06cc\u06a9 \u067e\u0644\u062a \u0641\u0631\u0645 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0648 \u0642\u0627\u0628\u0644 \u062d\u0645\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u060c \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062a\u0627 \u062a\u0648\u0644\u06cc\u062f\u060c \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc:<\/p>\n<p>Containerization: Docker \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u0646\u062f\u060c \u06a9\u0647 \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062c\u062f\u0627\u0633\u0627\u0632\u06cc: \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0627\u06cc\u0632\u0648\u0644\u0647 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u062a\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0628\u062f\u0648\u0646 \u062f\u0631\u06af\u06cc\u0631\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0642\u0627\u0628\u0644\u06cc\u062a \u062d\u0645\u0644: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0631\u0648\u06cc \u0647\u0631 \u0633\u06cc\u0633\u062a\u0645\u06cc \u06a9\u0647 \u062f\u0627\u06a9\u0631 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u0648 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0628\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc\u060c \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u062a\u0648\u0644\u06cc\u062f \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u06a9\u0627\u0631\u0627\u06cc\u06cc: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0647\u0633\u062a\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc \u06af\u0630\u0627\u0631\u0646\u062f\u060c \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 \u0645\u0627\u0634\u06cc\u0646 \u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0633\u0646\u062a\u06cc \u0633\u0628\u06a9 \u0648 \u0633\u0631\u06cc\u0639 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645: \u062f\u0627\u06a9\u0631 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u063a\u0646\u06cc \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Docker Hub (\u0645\u062e\u0632\u0646 \u0628\u0631\u0627\u06cc \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631) \u0648 Docker Compose (\u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0686\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc) \u0627\u0633\u062a \u06a9\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u062f\u0627\u06a9\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647\u0631\u0647 \u0648\u0631\u06cc \u0631\u0627 \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f \u0648 \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0633\u0639\u0647 \u0631\u0627 \u0633\u0627\u062f\u0647 \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0645\u0647\u0627\u0631\u062a \u0636\u0631\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0645\u062f\u0631\u0646 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f.<\/p>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f VM \u0631\u0627 \u062f\u0631 Azure \u06cc\u0627 AWS \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0628\u0631\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0646\u0635\u0628 \u062f\u0631 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0644\u0648\u06a9\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>Docker commands \n--------------------------\n\n\ndocker run -it --name new_contatiner ubuntu \/bin\/bash        \n\n When you run this command:\nDocker checks if the Ubuntu image is available locally. If not, it downloads the image from Docker Hub.It then creates a new container from the Ubuntu image. The -it flags make sure that you can interact with the shell.A Bash shell is started within the container, allowing you to execute commands as if you were using a regular Ubuntu terminal.\n\n\n\n\n\ndocker images\n\nall Docker images available on your local machine\n\n\n\n\n\ndocker ps\n\ncheck which containers are currently running on your system , add -a to check all containers\n\n\n\n\n\ndocker pull image\nused to download the official Docker image from Docker Hub to your local machine.  image can be unbuntu, jenkins or any setup\n\n\n\n\n\n\ndocker start [container]\nis used to start a stopped container. Ensure you have the correct name or ID, and check the container\u2019s status after starting it.\n\n\n\n\ndocker stop [container]\nis used to stop a started container. Ensure you have the correct name or ID, and check the container\u2019s status after stopping it.\n\n\n\n\ndocker attach [container]\n command is used to connect your terminal to a running container's standard input, output, and error streams. This allows you to interact with the container as if you were directly accessing its terminal.Use it carefully, as it can affect the running processes within the container.\n\n\n\n\n\n docker exec -it [container_name_or_id] \/bin\/bash\n is used to start a new interactive shell session inside a running Docker container.docker exec is generally more versatile for administrative tasks, whereas docker attach is more suited for direct interaction with the primary process.\n\n\n\n\ndocker rm [container]  ;   docker rm container1 container2 container3 ;  docker container prune\ncommand will only work on stopped containers.  you can use the -f flag to forcefully remove a running container.  2nd cmd is remove multiple container. 3rd is to remove all stopped containers\n\n\n\n\n\n\ndocker commit [OPTIONS] CONTAINER NEW_IMAGE_NAME    \ndocker commit sonucontianer updateimage ;\ncommit a Docker container and create a new image from it, you can use the docker commit command. This command saves the changes made to a container's filesystem as a new image.\n\n\n\n\n\n\ndocker diff [container name]  \ncommand is used to inspect changes made to a container's filesystem since it was started. It shows what has been added, modified, or deleted in the container compared to its original state.\n\n\n\n------------------------------------------------------------------------------------------------------------------------------------------------------------------\n\nFile System:  Docker file components and difference command \n\n\nA Dockerfile is a text file that contains a set of instructions used to build a Docker image. These instructions define how to configure and package the software, libraries, and dependencies required for the application you want to containerize.\n\n\n\n\nIn Docker, parser directives are special instructions placed at the beginning of a Dockerfile that influence how the file is processed by the Docker engine. These directives allow you to control certain behaviors, such as the default shell to be used for RUN commands or encoding for the Dockerfile itself.\n\n\n\n\n\n\n\n# syntax\n\nPurpose: Specifies the syntax or the version of the build backend to use, which allows features from specific versions of Docker BuildKit.\nUsage: This directive helps specify which build system or additional features should be supported during the build process.\n\n syntax=docker\/dockerfile:1.2\n\n\n# syntax=docker\/dockerfile:1.3\nFROM ubuntu:20.04\nRUN echo \"Using BuildKit features from Dockerfile syntax version 1.3\"\n\nThis Dockerfile specifies the use of Docker BuildKit features from version 1.3.\n\n\n\n\n\n\n# escape\n\nPurpose: Specifies the escape character to be used for line continuations in the Dockerfile. By default, Docker uses \\ for line continuation, but you can change it to another character like backtick (`).\nUsage: This directive is useful for Windows-based containers where the backslash \\ is commonly used in file paths.\n# escape=`\n\n# escape=`\nFROM mcr.microsoft.com\/windows\/servercore:ltsc2022\nRUN dir C:\\Windows `\n    &amp;&amp; echo \"Line continuation using backtick (`)\"\n\nIn this example, the escape directive changes the line continuation character to a backtick, which is more suitable for Windows containers using Windows-style paths.\n\n\n\nWithout the # escape directive, Docker defaults to using \\ as the line continuation character.\nWithout the # syntax directive, Docker uses the default syntax compatible with the current Docker version.\n\n\n\n\nARG             Use build-time variables.\nFROM            Create a new build stage from a base image.\nRUN             Execute build commands.\nMAINTAINER      Specify the author of an image.\nCOPY            Copy files and directories.\nADD             Add local or remote files and directories.\nEXPOSE          Describe which ports your application is listening on.\nWORKDIR         Change working directory.\nCMD             Specify default commands.\nENTRYPOINT      Specify default executable.\nENV             Set environment variables.\n\n\n\n\n\nARG variables are only accessible during the build phase of a Docker image and are not available during the runtime of a container. Once the build is complete, the ARG values are discarded and cannot be accessed inside a running container. If you need access to the values during the runtime of the container, you will need to pass them as environment variables using ENV or provide runtime options via docker run.\n\n\n\n\n\nCreate a Dockerfile\n\nvi Dockerfile\n\n\nFROM ubuntu\nRUN echo \"My name is Indra Singh\" &gt; \/tmp\/testfile\n\nsaveit in vm press esc---&gt; wq  enter\n\nrun command    :    Docker build -t test .\nagain create container from the above image and check the \/tmp directory, you will get the file\n\n\n\n\n\nAnother example\n\nCreate a Dockerfile\n\nvi Dockerfile\n\n\nFROM ubuntu\nWORKDIR \/tmp\nRUN echo \"My name is Indra Singh\" &gt; \/tmp\/testfile\nENV myname IndraSingh\nCOPY testfile1 \/tmp\nADD test.tar.gz \/tmp\n\n\nsaveit in vm press esc---&gt; wq  enter\n\ntouch testfile1                 # create a testfile1\ntouch test                      # create a test\ntar -cvf test.tar test          #convert into test.tar\ngzip test.tar                   #zip to gz for test.tar to create test.tar.gz\nrm -rf test                     #remove test file as test.tar.gz file created\nexit                            # exit from container\n\n\ndock build -t newimage1                           # create image from docker file\ndocker run -it --name newcontatiner newimage1     # create and run the container from newimage1\ncheck all the files \n\n\n\n\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------\n#Docker Volume\n\n\n#create a file and dockerfile\ntouch file1 file2 Dockerfile\n\n\n#edit docker file:\nvi Dockerfile\n\n\n#enter the commmand  in docker file:\nFROM Ubuntu\nVOLUME [\/\"myvolume\"]\n\npress esc\n:wq enter\n\n\n\n#create image from file \ndocker build -t myimage .\n\n\n\n#check docker images:\ndocker images\n\n\n\n#create container from myimage:\ndocker run -it --name contatiner newimage \/bin\/bash\n\n\n\n\n#create file inside myvolume then exit from  contianer\ntouch filex filey filez\nexit\n\n\n\n\n#creates a new container named container2 from the Ubuntu image, runs in privileged mode, granting it more permissions.It shares volumes with an existing container (contatiner)\nAfter starting the container, it drops you into an interactive bash shell within the Ubuntu environment of the container.\n\ndocker run -it --name container2 --privileged=true --volumes-from contatiner ubuntu \/bin\/bash\n\n\n\n\n\n#create volume using command \ndocker run -it --name contatiner3 -v \/volume2 ubuntu \/bin\/bash\n\n\n\n#same as above shares volumes with an existing container(container3) and creating new container (container4) \ndocker run -it --name container4 --privileged=true --volumes-from contatiner3 ubuntu \/bin\/bash\n\n\n\n#Map host volume to container\ndocker run -it --name hostcont -v \/home\/azureuser:\/sonu --privileged=true --volumes-from contatiner3 ubuntu \/bin\/bash\n\n\n\n\n-------------------------------------------------------------------------------------------------------------------------------------------------------------------\nPort Mapping (request made on local(host) forwarded to port on container)\n\ndocker run -td --name techserver -p 80:80 ubuntu\n\n#The command creates and starts a new Docker container called techserver in the background, using the official ubuntu image. It allocates a terminal (-t), runs in detached mode (-d), and maps port 80 on the host to port 80 inside the container (-p 80:80). This setup is typically used to run a web server or another service that listens on port 80.\n\n\n\nexample\n\napt-get install apache2 -y\ncd \/var\/www\/html\necho \"subscribe indra technical\"&gt;index.html\nservice apache2 restart \n\n# check public ip with port :80 we will get the out put as \"subscribe indra technical\".  Note inbound rule should be set for port 80.\n\n\n\n\ndocker run -td --name myjenkins -p 8080:8080 jenkins\/jenkins:lts\n# this command runs Jenkins in a detached Docker container, names it myjenkins, and makes Jenkins accessible via port 8080 on your machine.  Note inbound rule should be set for port 8080.\n\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0622\u0645\u0648\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0633\u0645\u062a \u0686\u067e \u0622\u0645\u0648\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0633\u0645\u062a \u0686\u067e<\/p>\n<p>\u0644\u06cc\u0646\u06a9 \u06a9\u062f github<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang Docker \u06cc\u06a9 \u067e\u0644\u062a \u0641\u0631\u0645 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0648 \u0642\u0627\u0628\u0644 \u062d\u0645\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-78468","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/78468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=78468"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/78468\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=78468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=78468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=78468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}