Docker Tutorial
参考:https://www.docker.com/tryit
查看Docker的帮助信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[root@docker ~]# docker Usage: docker [OPTIONS] COMMAND [arg...] -H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use A self-sufficient runtime for linux containers. Commands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders from the containers filesystem to the host path diff Inspect changes on a container's filesystem events Get real time events from the server export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information inspect Return low-level information on a container kill Kill a running container load Load an image from a tar archive login Register or Login to the docker registry server logs Fetch the logs of a container port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT pause Pause all processes within a container ps List containers pull Pull an image or a repository from the docker registry server push Push an image or a repository to the docker registry server restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image to a tar archive search Search for an image in the docker index start Start a stopped container stop Stop a running container tag Tag an image into a repository top Lookup the running processes of a container unpause Unpause a paused container version Show the docker version information wait Block until a container stops, then print its exit code [root@docker ~]# |
查看Docker的版本信息
1 2 3 4 5 6 7 8 9 10 |
[root@docker ~]# docker version Client version: 1.0.0 Client API version: 1.12 Go version (client): go1.2.2 Git commit (client): 63fe64c/1.0.0 Server version: 1.0.0 Server API version: 1.12 Go version (server): go1.2.2 Git commit (server): 63fe64c/1.0.0 [root@docker ~]# |
Searching for images
使用这种方式可以非常容易的获得别人制作的容器的Image。
所有的容器的Image都可以在Docker Hub的资源库中找到。
你可以通过网页浏览的方式去查找这些Image信息,也可以通过Docker的命令行方式去查找。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
[root@docker ~]# docker search tutorial NAME DESCRIPTION STARS OFFICIAL AUTOMATED learn/tutorial 4 caterpillar/java-tutorial 1 namin/io.livecode.ch interactive programming tutorials, powered... 1 [OK] ryanking/kings-tutorial 0 florentbenoit/docker-angularjs-tutorials 0 [OK] mzdaniel/buildbot-tutorial 0 reproducible/scipy-tutorial-2014 0 jbarbier/tutorial1 0 adamvduke/railstutorial First docker image. Contains a sample rai... 0 sfilipov/rails-tutorial 0 [OK] zqhxuyuan/tutorial 0 sp013719/java-tutorial 0 [root@docker ~]# [root@docker ~]# docker search oracle NAME DESCRIPTION STARS OFFICIAL AUTOMATED wnameless/oracle-xe-11g SYS & SYSTEM password: oracle https://inde... 11 [OK] alexeiled/docker-oracle-xe-11g This is a spin off from wnameless/docker-o... 10 [OK] haroon/docker-oracle-jdk7 Trusted Oracle JDK7 on Ubuntu:12.10 3 [OK] garrettux/oracle-linux-64 Base Oracle Linux 6.4 image 3 democracyworks/oracle-jdk-7 2 [OK] mminke/oracle-java-server-jre A docker image which contains the Oracle J... 2 [OK] maxexcloo/java Clean Debian container with the latest Ora... 2 [OK] kimh/oracledb Oracle XE 11g installed on Ubuntu 13.04. P... 2 relateiq/oracle-java8 2 [OK] orisi/oracle 1 [OK] centminmod/oraclelinux65base Oracle Linux 6.5 base 1.57GB image 1 mhutter/java Oracle JDK 1 [OK] sionsmith/oracle-java8 installs oracle's Java 8 with JAVA_HOME (... 1 [OK] nacyot/java-oracle 1 [OK] digitalwonderland/oracle-jre-8 0 [OK] garage/java7-oracle 0 [OK] akisei/oracle-java7 Install oracle jdk7. 0 [OK] onjin/php-oracle CentOS with php-oracle-http 0 [OK] pjan/oracle-jdk-7 0 [OK] pjan/oracle-jdk-8 0 [OK] apopelo/java-oracle-1.7 Ubuntu 12.04 with Oracle Java 1.7 installed. 0 [OK] ahnick/oracle-jdk7 0 [OK] joaodubas/oracle-jdk 0 [OK] pandeiro/oracle-jdk8 0 [OK] stratice/tomcat7-oracle 0 [OK] makuk66/docker-oracle-java7 0 [OK] hhxiao/oracle-java7 0 [OK] dockeruser/oracle-java7-jdk 0 [OK] ojajoh/docker-python3-oracle-base 0 [OK] mbentley/ubuntu-tomcat7-oracle 0 [OK] yasushiyy/vagrant-docker-oracle12c Oracle Linux 6.5 for Oracle 12c 0 [OK] sirile/oraclejre 0 [OK] elventear/oracle-jdk7 0 [OK] sdorra/oracle-java-8 0 [OK] rafflecopter/oracle-jdk-7 0 [OK] iromli/oracle-jdk 0 [OK] sirile/oraclejdk 0 [OK] skomma/trusty-oraclejdk7 0 [OK] htaox/oracle-java8 Oracle Java 8 with Maven installed 0 aabbcc1241/oracle-linux Based on: garrettux/oracle-linux-64 ... 0 resgain/oracle-xe oracle 11g 0 medined/docker-java-oracle8 0 [OK] cheesang/docker-oracle11xe 0 [OK] quintenk/jdk7-oracle DEPRECATED in favour of quintenk/jdk-oracl... 0 medined/docker-java-oracle7 0 [OK] fitbur/oracle-jdk 0 coaxys/oracle-jdk Container with oracle jdk 1.7.0_45 0 medined/docker-java-oracle6 0 [OK] emikra/oracle-java7 Ubuntu base with Oracle Java JDK 7 installed. 0 danieltribeiro/oracle-jdk Image with ubuntu 14.04 and oracle jdk 0 zhesto/oracle-jdk7 Container with Oracle JDK7 installed. 0 htaox/oracle-java8-hadoop Oracle Java 8 with Maven and Hadoop 1.2.1 0 jhamit/oracle-java-7 Base + oracle-java7 0 netarchivesuite/ubuntu-14.04-oracle-jdk6 Contains a NetarchiveSuite Quickstart syst... 0 andypp/oracle-java 0 souda/oracle-jdk7 0 philippe/jdk7-oracle 0 cleciusjm/oracle-xe-jboss-as7 0 philippe/jdk6-oracle 0 fsamin/docker-oracle-java7 From Ubuntu 12.04 Oracle Java 7 (7u51) wi... 0 bargenson/oracle-linux_5.3 0 meduzz/ubuntu_oracle_java8 Dont forget to specify the tag when you us... 0 [OK] mpereira/oracle-java8 0 pushingice/oracle-java7 0 cuongbui/oracle-jre7 0 hamiltont/oracle-java7 0 pvardanega/oracle-java7 0 barnybug/oracle-java7 0 saltosystems/base-with-oracle-java7 0 kroot/oracle-java7 0 asteris/oracle-java 0 goodguide/oracle-java-7 0 affirm/java8-oracle 0 louislandry/oracle-java7 0 momer/maestro-base-oracle-jdk 0 rml14/jdk7-oracle 0 hyao/oracle-jdk-7 0 srikanthnutigattu/jdk6-oracle 0 goodguide/base-oracle-java-7 0 coaxys/oracle-jdk-7 0 asteris/oracle-java-1.7 0 hanswesterbeek/google-debian-oracle-jdk 0 ontotext/oracle-tomcat-jdk7 0 yasushiyy/oraclelinux65 Oracle Linux 6.5 0 ontotext/oracle-jdk-7 0 khanio/precise-oracle-jdk7 0 simpler/oracle-jdk-6-base 0 betawaffle/oracle-linux-6 0 spmason/wheezy-oracle-java-6 0 remthe/docker-oracle-java 0 simpler/oracle-jdk-7-base 0 kikitux/oracle6 0 ahnick/oracle-jdk-7u45 0 kikitux/oracle5 0 zhaowh/centos-java oracle-jdk-8u5. 474.7 MB 0 [OK] munkyboy/cassandra Ubuntu 12.10 Oracle Java 7 Cassandra 1.2.1... 0 [OK] williamyeh/docker-java7 Oracle Java 7 image for Docker 0 [OK] munkyboy/elasticsearch ubuntu 12.10 oracle java 7 elasticsearch v... 0 [OK] williamyeh/docker-java8 Oracle Java 8 image for Docker 0 [OK] ronaldocwb/oracle-xe-jboss-as-7 0 relateiq/oraclejava7 0 heffer/oracle11g-xe Base image for Oracle 11g XE 0 tifayuki/java base image installed with oracle java 0 [OK] winonone/docker-java Oracle java 7 based on Ubuntu 14.04. 0 [OK] rangalo/java7 Oracle java7 on debian wheezy. 0 [OK] wiredthing/oraclejdk 0 denmat/oracle_base_65 0 kikitux/oracle6-preinstall 0 ozplatform/oraclejdk 0 kikitux/oracle5-preinstall 0 apopelo/solr-3.6.2 Ubuntu 12.04 with Oracle Java 1.7 and Apac... 0 [OK] apopelo/solr-3.6.0 Ubuntu 12.04 with Oracle Java 1.7 and Apac... 0 [OK] daprlabs/archlinux-jdk Oracle JDK on ArchLinux with Yaourt 0 [OK] steve/oraclejdk 0 oracledemo/php5 0 markl/centos-oraclejava7 0 vandekeiser/ubuntu14-oraclejdk7 0 preznik/jdk7-oracle_maven 0 momer/cassandra-oracle-java 0 [OK] griff/oracle-jdk7 Ubuntu Quantal with Oracle JDK 7 installed 0 [OK] hrafique/oracle-jdk7 Trusted Build for Oracle JDK7 0 [OK] turbovote/oracle-jdk-7 0 [OK] komljen/jdk6-oracle 0 [OK] ariya/centos7-oracle-jre7 CentOS 7 with Oracle JRE 1.7 0 [OK] ariya/centos6-oracle-jre7 CentOS 6 with Oracle JRE 1.7 0 [OK] dockeruser/oracle-java7 0 [OK] sherzberg/oracle-java7 Ubuntu 14.04 with oracle jdk 7 0 [OK] turbovote/oracle-java-aws 0 [OK] relateiq/oracle-java7 0 [OK] glerchundi/base-with-oracle-java7 0 [OK] sfeir/oracle-jre7 0 [OK] clifton/oracle-java8 0 [OK] [root@docker ~]# |
找到了中意的容器,那么就需要下载它对应的Image。
比方说,
我需要下载“learn/tutorial”,那么如下操作:
Command is:docker pull learn/tutorial
1 2 3 4 |
[root@docker ~]# docker pull learn/tutorial Pulling repository learn/tutorial 8dbd9e392a96: Download complete [root@docker ~]# |
如果是“centos”,那么如下:
1 2 3 4 5 6 7 |
[root@docker software]# docker pull centos Pulling repository centos cd934e0010d5: Download complete 1a7dc42f78ba: Download complete 511136ea3c5a: Download complete 34e94e67e63a: Download complete [root@docker software]# |
你可以把容器看成一个盒子,这个盒子包含了需要运行某个应用或实现某种功能所需要的相关联(依赖)的全部进程。
所以,这个盒子有自己的:
文件系统
系统类库
SHELL环境
…(等)
但默认情况下,这些进程都是不运行的。
你通过运行某个容器内的进程来“启动”某个容器。
输出一个典型的“Hello world”:
1 2 3 4 5 6 |
[root@docker software]# docker run learn/tutorial echo 'Hello world.' Hello world. [root@docker software]# [root@docker software]# docker run centos echo 'Hello world.' Hello world. [root@docker software]# |
给容器安装一些简单的工具:(对容器做出变更)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@docker ~]# docker run learn/tutorial apt-get install -y ping Reading package lists... Building dependency tree... The following NEW packages will be installed: iputils-ping 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 56.1 kB of archives. After this operation, 143 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ precise/main iputils-ping amd64 3:20101006-1ubuntu1 [56.1 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 56.1 kB in 1s (37.9 kB/s) Selecting previously unselected package iputils-ping. (Reading database ... 7545 files and directories currently installed.) Unpacking iputils-ping (from .../iputils-ping_3%3a20101006-1ubuntu1_amd64.deb) ... Setting up iputils-ping (3:20101006-1ubuntu1) ... [root@docker ~]# |
保存对容器的变更:
1 2 3 4 5 6 7 |
[root@docker ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c4faa0478a25 learn/tutorial:latest apt-get install -y p 8 seconds ago Exited (0) 5 seconds ago jolly_mccarthy [root@docker ~]# [root@docker ~]# docker commit c4faa0478a25 learn/adamhuan-ping 362a0f769068ab13d964c934506bf710e1ecae400c90560886e445d2b53c66d6 [root@docker ~]# |
运行上面先创建的Image:“learn/adamhuan-ping”
1 2 3 4 5 6 7 |
[root@docker ~]# docker run learn/adamhuan-ping ping google.com ^CPING google.com (173.194.127.73) 56(84) bytes of data. --- google.com ping statistics --- 20 packets transmitted, 0 received, 100% packet loss, time 19014ms [root@docker ~]# |
(这里无法ping通,可能是由于我所在的网络环境禁ping的缘故。)
查看所有正在运行的容器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
[root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a19f4023bb8c centos:centos7 yum list 25 seconds ago Up 24 seconds hungry_brattain [root@docker ~]# [root@docker ~]# docker inspect a19f4023bb8c [{ "Args": [ "list" ], "Config": { "AttachStderr": true, "AttachStdin": false, "AttachStdout": true, "Cmd": [ "yum", "list" ], "CpuShares": 0, "Cpuset": "", "Domainname": "", "Entrypoint": null, "Env": [ "HOME=/", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "ExposedPorts": null, "Hostname": "a19f4023bb8c", "Image": "centos", "Memory": 0, "MemorySwap": 0, "NetworkDisabled": false, "OnBuild": null, "OpenStdin": false, "PortSpecs": null, "StdinOnce": false, "Tty": false, "User": "", "Volumes": null, "WorkingDir": "" }, "Created": "2014-07-24T03:39:42.861196253Z", "Driver": "devicemapper", "ExecDriver": "lxc-0.9.0", "HostConfig": { "Binds": null, "ContainerIDFile": "", "Dns": null, "DnsSearch": null, "Links": null, "LxcConf": [], "NetworkMode": "bridge", "PortBindings": {}, "Privileged": false, "PublishAllPorts": false, "VolumesFrom": null }, "HostnamePath": "/var/lib/docker/containers/a19f4023bb8c87b17392027e9c3c0f5161d0c00fb6c07d74621d00bc0b98f623/hostname", "HostsPath": "/var/lib/docker/containers/a19f4023bb8c87b17392027e9c3c0f5161d0c00fb6c07d74621d00bc0b98f623/hosts", "Id": "a19f4023bb8c87b17392027e9c3c0f5161d0c00fb6c07d74621d00bc0b98f623", "Image": "1a7dc42f78ba213ec1ac5cd04930011334536214ad26c8000f1eec72e302c041", "MountLabel": "", "Name": "/hungry_brattain", "NetworkSettings": { "Bridge": "", "Gateway": "", "IPAddress": "", "IPPrefixLen": 0, "PortMapping": null, "Ports": null }, "Path": "yum", "ProcessLabel": "", "ResolvConfPath": "/etc/resolv.conf", "State": { "ExitCode": 0, "FinishedAt": "2014-07-24T03:40:55.977118671Z", "Paused": false, "Pid": 0, "Running": false, "StartedAt": "2014-07-24T03:39:43.080796154Z" }, "Volumes": {}, "VolumesRW": {} } ][root@docker ~]# |
你可以通过PUSH,来与他人分享你创建(Build)的Image。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@docker ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8719987cd445 centos:centos7 ifconfig 4 minutes ago Exited (127) 4 minutes ago furious_goodall [root@docker ~]# [root@docker ~]# [root@docker ~]# docker commit 8719987cd445 adamhuan/centos-7 0dd32135bd4fd7bbc7390b42abcc4a2ef8dfb61e9d879603062cb272924de3e8 [root@docker ~]# docker push adamhuan/centos-7 The push refers to a repository [adamhuan/centos-7] (len: 1) Sending image list Pushing repository adamhuan/centos-7 (1 tags) 511136ea3c5a: Image already pushed, skipping 34e94e67e63a: Image already pushed, skipping 1a7dc42f78ba: Image already pushed, skipping 0dd32135bd4f: Image successfully pushed Pushing tag for rev [0dd32135bd4f] on {https://registry-1.docker.io/v1/repositories/adamhuan/centos-7/tags/latest} [root@docker ~]# |
——————————————————————
Ending。