{"id":48354,"date":"2025-02-08T08:10:38","date_gmt":"2025-02-08T08:10:38","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=48354"},"modified":"2025-07-12T05:40:12","modified_gmt":"2025-07-12T05:40:12","slug":"docker-create","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/docker-create\/","title":{"rendered":"Docker commands Guide &#8211; docker create with examples"},"content":{"rendered":"\n<p>Here\u2019s a <strong>complete tutorial<\/strong> on <code>docker create<\/code>, including its <strong>purpose<\/strong>, <strong>how it differs from <code>docker run<\/code><\/strong>, and a <strong>comprehensive list of examples<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is <code>docker create<\/code>?<\/strong><\/h2>\n\n\n\n<p><code>docker create<\/code> is used to <strong>create a new container<\/strong> from a specified image <strong>without starting it immediately<\/strong>. This command is useful when you want to configure or inspect a container before running it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key Features:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Only <strong>creates<\/strong> the container; does not run it.<\/li>\n\n\n\n<li>Useful for preparing containers with custom configurations.<\/li>\n\n\n\n<li>Returns the <strong>container ID<\/strong> after creation.<\/li>\n\n\n\n<li>Works with the same options as <code>docker run<\/code>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Basic Syntax<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">create<\/span> <span class=\"hljs-selector-attr\">&#91;OPTIONS]<\/span> <span class=\"hljs-selector-tag\">IMAGE<\/span> <span class=\"hljs-selector-attr\">&#91;COMMAND]<\/span> <span class=\"hljs-selector-attr\">&#91;ARG...]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Common Options:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>--name<\/code>: Assign a custom name to the container.<\/li>\n\n\n\n<li><code>-p<\/code>: Map ports from the container to the host.<\/li>\n\n\n\n<li><code>-v<\/code>: Mount a volume or bind a host directory.<\/li>\n\n\n\n<li><code>-e<\/code>: Set environment variables.<\/li>\n\n\n\n<li><code>--restart<\/code>: Define the container\u2019s restart policy.<\/li>\n\n\n\n<li><code>-it<\/code>: Allocate a pseudo-TTY and keep STDIN open (interactive mode).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Examples of <code>docker create<\/code><\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Create a Simple Container<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker create ubuntu\n<\/code><\/span><\/pre>\n\n\n<p>This creates a container from the <code>ubuntu<\/code> image without running it.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Create a Container with a Custom Name<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker create --name my_ubuntu_container ubuntu\n<\/code><\/span><\/pre>\n\n\n<p>This creates a container named <code>my_ubuntu_container<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Create a Container with Port Mapping<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">create<\/span> <span class=\"hljs-selector-tag\">-p<\/span> 8080<span class=\"hljs-selector-pseudo\">:80<\/span> <span class=\"hljs-selector-tag\">nginx<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This creates a container with port <code>8080<\/code> on the host mapped to port <code>80<\/code> in the container.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Create a Container with Environment Variables<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker create -e APP_ENV=production -e DEBUG=<span class=\"hljs-literal\">false<\/span> my_app\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This creates a container with two environment variables: <code>APP_ENV=production<\/code> and <code>DEBUG=false<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Create a Container with a Volume<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker create -v \/host\/data:<span class=\"hljs-regexp\">\/container\/<\/span>data my_app\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This mounts the host directory <code>\/host\/data<\/code> to <code>\/container\/data<\/code> in the container.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6. Create a Container with Restart Policy<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker create --restart always redis\n<\/code><\/span><\/pre>\n\n\n<p>This creates a <code>redis<\/code> container with a restart policy set to <code>always<\/code>, meaning it will restart automatically if it stops.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7. Create a Detached Interactive Container<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker create -it ubuntu\n<\/code><\/span><\/pre>\n\n\n<p>The container is created in interactive mode but remains stopped until started.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8. Create a Container with a Specific Command<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">docker create ubuntu <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Hello, Docker!\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The container is configured to run <code>echo \"Hello, Docker!\"<\/code> when started.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>9. Create a Container with Network Settings<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker create --network my_custom_network nginx\n<\/code><\/span><\/pre>\n\n\n<p>This creates a container attached to the <code>my_custom_network<\/code> network.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>10. Create a Container with a Hostname<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker create --hostname my_custom_host alpine\n<\/code><\/span><\/pre>\n\n\n<p>This creates an <code>alpine<\/code> container with a custom hostname <code>my_custom_host<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Starting a Container Created with <code>docker create<\/code><\/strong><\/h2>\n\n\n\n<p>Once a container is created with <code>docker create<\/code>, you can start it with:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker start CONTAINER_ID\n<\/code><\/span><\/pre>\n\n\n<p>For example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker start my_ubuntu_container\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Inspecting a Created Container<\/strong><\/h2>\n\n\n\n<p>You can inspect the configuration of a created container using:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker inspect CONTAINER_ID\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Difference Between <code>docker create<\/code> and <code>docker run<\/code><\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong><code>docker create<\/code><\/strong><\/th><th><strong><code>docker run<\/code><\/strong><\/th><\/tr><\/thead><tbody><tr><td>Only creates the container<\/td><td>Creates and starts the container<\/td><\/tr><tr><td>Returns the container ID<\/td><td>Returns the container&#8217;s output<\/td><\/tr><tr><td>Used for pre-configuration<\/td><td>Used for running containers<\/td><\/tr><tr><td>Requires <code>docker start<\/code> to run it<\/td><td>No need to start it manually<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>List of Common <code>docker create<\/code> Commands<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Command<\/strong><\/th><th><strong>Description<\/strong><\/th><\/tr><\/thead><tbody><tr><td><code>docker create ubuntu<\/code><\/td><td>Create a simple Ubuntu container<\/td><\/tr><tr><td><code>docker create --name my_app nginx<\/code><\/td><td>Create an NGINX container with a custom name<\/td><\/tr><tr><td><code>docker create -p 8080:80 nginx<\/code><\/td><td>Create a container with port mapping<\/td><\/tr><tr><td><code>docker create -e KEY=value alpine<\/code><\/td><td>Create a container with environment variables<\/td><\/tr><tr><td><code>docker create -v \/host:\/container busybox<\/code><\/td><td>Create a container with a volume<\/td><\/tr><tr><td><code>docker create --restart always redis<\/code><\/td><td>Create a container with a restart policy<\/td><\/tr><tr><td><code>docker create --network custom_net alpine<\/code><\/td><td>Create a container on a custom network<\/td><\/tr><tr><td><code>docker create ubuntu echo \"Hello, world!\"<\/code><\/td><td>Create a container with a specific command<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Practices for Using <code>docker create<\/code>:<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Pre-configure containers<\/strong> with volumes, environment variables, and restart policies before starting them.<\/li>\n\n\n\n<li>Use <code>docker inspect<\/code> to review container settings before running it.<\/li>\n\n\n\n<li>Use custom names (<code>--name<\/code>) for easier container management.<\/li>\n\n\n\n<li>Combine with <code>docker start<\/code> and <code>docker exec<\/code> for full control.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Common Errors and Solutions<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>&#8220;Error: No such image&#8221;<\/strong><br>\u2192 Ensure the image exists or pull it using <code>docker pull<\/code>.<\/li>\n\n\n\n<li><strong>&#8220;Duplicate container name&#8221;<\/strong><br>\u2192 Use a different name or remove the existing container with the same name: <code>docker rm existing_container_name<\/code><\/li>\n\n\n\n<li><strong>Container does not start after creation<\/strong><br>\u2192 Use <code>docker start<\/code> to run it: <code>docker start CONTAINER_ID<\/code><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a complete tutorial on docker create, including its purpose, how it differs from docker run, and a comprehensive list of examples. What is docker create? docker create is used&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4862],"tags":[],"class_list":["post-48354","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=48354"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48354\/revisions"}],"predecessor-version":[{"id":48356,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48354\/revisions\/48356"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=48354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=48354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=48354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}