github.com/rentongzhang/docker@v1.8.2-rc1/docs/userguide/level2.md (about) 1 <!--[metadata]> 2 +++ 3 title = "Docker images test" 4 description = "How to work with Docker images." 5 keywords = ["documentation, docs, the docker guide, docker guide, docker, docker platform, virtualization framework, docker.io, Docker images, Docker image, image management, Docker repos, Docker repositories, docker, docker tag, docker tags, Docker Hub, collaboration"] 6 +++ 7 <![end-metadata]--> 8 9 <a title="back" class="dockerfile back" href="/userguide/dockerimages/#creating-our-own-images">Back</a> 10 11 #Dockerfile tutorial 12 13 ## Test your Dockerfile knowledge - Level 2 14 15 ### Questions: 16 17 <div class="level_questions"> 18 What is the Dockerfile instruction to specify the base image?<br> 19 <input type="text" class="level"> 20 <div style="display:none;" id="level2_error0" class="alert alert-error level_error">The right answer was <code>FROM</code></div><br> 21 Which Dockerfile instruction sets the default command for your image?<br> 22 <input type="text" class="level"> 23 <div style="display:none;" id="level2_error4" class="alert alert-error level_error">The right answer was <code>ENTRYPOINT</code> or <code>CMD</code></div><br> 24 What is the character used to add comments in Dockerfiles?<br> 25 <input type="text" class="level"> 26 <div style="display:none;" id="level2_error3" class="alert alert-error level_error">The right answer was <code>#</code></div><br> 27 Which Dockerfile instruction sets the username to use when running the image?<br> 28 <input type="text" class="level"> 29 <div style="display:none;" id="level2_error5" class="alert alert-error level_error">The right answer was <code>USER</code></div><br> 30 What is the Dockerfile instruction to execute any command on the current image and commit the results?<br> 31 <input type="text" class="level"> 32 <div style="display:none;" id="level2_error1" class="alert alert-error level_error">The right answer was <code>RUN</code></div><br> 33 Which Dockerfile instruction sets ports to be exposed when running the image?<br> 34 <input type="text" class="level"> 35 <div style="display:none;" id="level2_error6" class="alert alert-error level_error">The right answer was <code>EXPOSE</code></div><br> 36 What is the Dockerfile instruction to specify the maintainer of the Dockerfile?<br> 37 <input type="text" class="level"> 38 <div style="display:none;" id="level2_error2" class="alert alert-error level_error">The right answer was <code>MAINTAINER</code></div><br> 39 Which Dockerfile instruction lets you trigger a command as soon as the container starts?<br> 40 <input type="text" class="level"> 41 <div style="display:none;" id="level2_error7" class="alert alert-error level_error">The right answer was <code>ENTRYPOINT</code> or <code>CMD</code></div><br> 42 <p> 43 44 <div class="alert alert-success" id="all_good" style="display:none;">Congratulations, you made no mistake!<br /> 45 Tell the world <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.docker.io/learn/dockerfile/level1/" data-text="I just successfully answered questions of the #Dockerfile tutorial Level 1. What's your score?" data-via="docker" >Tweet</a><br /> 46 And try the next challenge: <a href="#fill-the-dockerfile">Fill the Dockerfile</a> 47 </div> 48 <div class="alert alert-error" id="no_good" style="display:none;">Your Dockerfile skills are not yet perfect, try to take the time to read this tutorial again.</div> 49 <div class="alert alert-block" id="some_good" style="display:none;">You're almost there! Read carefully the sections corresponding to your errors, and take the test again!</div> 50 </p> 51 <button class="btn btn-primary" id="check_level2_questions">Check your answers</button> 52 </div> 53 54 ### Fill the Dockerfile 55 <br> 56 Your best friend Roberto Hashioka sent you a Dockerfile, but some parts were lost in the ocean. Can you find the missing parts? 57 <div class="form-inline"> 58 <pre> 59 # Redis 60 # 61 # VERSION 0.42 62 # 63 # use the ubuntu base image provided by dotCloud 64 <input id="from" class="l_fill" type="text"> ub<input id="ubuntu" class="l_fill" type="text"><br> 65 MAINT<input id="maintainer" class="l_fill" type="text"> Ro<input id="roberto" class="l_fill" type="text"> Ha<input id="hashioka" class="l_fill" type="text"> roberto.hashioka@dotcloud.com<br> 66 # make sure the package repository is up to date 67 <input id="run0" class="l_fill" type="text"> echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list 68 <input id="run1" class="l_fill" type="text"> apt-get update<br> 69 # install wget (required for redis installation) 70 <input id="run2" class="l_fill" type="text"> apt-get install -y wget<br> 71 # install make (required for redis installation) 72 <input id="run3" class="l_fill" type="text"> apt-get install -y make<br> 73 # install gcc (required for redis installation) 74 RUN apt-get install -y <input id="gcc" class="l_fill" type="text"><br> 75 # install apache2 76 <input id="run4" class="l_fill" type="text"> wget http://download.redis.io/redis-stable.tar.gz 77 <input id="run5" class="l_fill" type="text">tar xvzf redis-stable.tar.gz 78 <input id="run6" class="l_fill" type="text">cd redis-stable && make && make install<br> 79 # launch redis when starting the image 80 <input id="entrypoint" class="l_fill" type="text"> ["redis-server"]<br> 81 # run as user daemon 82 <input id="user" class="l_fill" type="text"> daemon<br> 83 # expose port 6379 84 <input id="expose" class="l_fill" type="text"> 6379 85 </pre> 86 <div class="alert alert-success" id="dockerfile_ok" style="display:none;">Congratulations, you successfully restored Roberto's Dockerfile! You are ready to containerize the world!.<br /> 87 Tell the world! <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.docker.io/learn/dockerfile/level2/" data-text="I just successfully completed the 'Dockerfill' challenge of the #Dockerfile tutorial Level 2" data-via="docker" >Tweet</a> 88 </div> 89 <div class="alert alert-error" id="dockerfile_ko" style="display:none;">Wooops, there are one or more errors in the Dockerfile. Try again.</div> 90 <br> 91 <button class="btn btn-primary" id="check_level2_fill">Check the Dockerfile</button></p> 92 </div> 93 94 ## What's next? 95 <p> 96 Thanks for going through our tutorial! We will be posting Level 3 in the future. 97 98 To improve your Dockerfile writing skills even further, visit the <a href="https://docs.docker.com/articles/dockerfile_best-practices/">Dockerfile best practices page</a>. 99 100 <a title="creating our own images" class="btn btn-primary" href="/userguide/dockerimages/#creating-our-own-images">Back to the Docs!</a>