Docker安装后首先要做的事情

检查你的Docker是否安装

这个指南假设你已安装了Docker。为了检查你安装的Docker,运行下边的命令:

  1. # Check that you have a working install
  2. $ sudo docker info

如果你得到docker: command not found 或者/var/lib/docker/repositories: permission denied ,你可能没有完成Docker的安装,或者不足的权限来操作Docker在你的机器上。

请回到Docker的安装重新安装:

下载一个预先编译好的镜像

  1. # Download an ubuntu image
  2. $ sudo docker pull ubuntu

这将在Docker Hub上发现ubuntu镜像并下载到本地。

说明:当镜像已经成果下载,你将看到有12个字母的hash

  1. 539c0211cd76: Download complete

这就是镜像ID的简短名称。这个简短的镜像ID是镜像ID全称的前12个字母,可以使用docker inspect或者docker images --no-trunc=true

如果,你使用的OS X系统,你需要加上sudo。

运行交互式shell

  1. # Run an interactive shell in the ubuntu image,
  2. # allocate a tty, attach stdin and stdout
  3. # To detach the tty without exiting the shell,
  4. # use the escape sequence Ctrl-p + Ctrl-q
  5. # note: This will continue to exist in a stopped state once exited (see "docker ps -a")
  6. $ sudo docker run -i -t ubuntu /bin/bash

绑定Docker到另外主机/端口或者一个Unix Socket

警告:改变默认的docker守护进程,绑定到一个TCP端口或者Unix Docker用户组,将减弱你的安全系数,因为这允许非root账户获得了root的权限。为了你牢牢的控制住docker。如果你绑定了一个TCP 端口,任何人操作端口都有Docker权限,因此这不适合在一个开放的网络。

使用-H命令可以确保Docker监听一个指定的IP或者端口。默认情况下,它将监听unix:///var/run/docker.sock 仅仅允许root账户的本地链接。你可以设置它到0.0.0.0:2375 或者一个指定主机IP来给其它任何人权限,但是这不是被推荐做的方式,因为给任何人操控主机的权限是无价值的。

相似地,docker客户端可以使用-H来链接一个自定义端口。

-H接受主机和端口分配,以下面的格式:

  1. tcp://[host][:port]` or `unix://path

例如:

  1. tcp://host:2375
  2. unix://path/to/socket

-H,当为空时,将默认。

-H也接受简短的方式指定TCP绑定。

  1. host[:port]` or `:port

以守护模式运行docker

  1. $ sudo <path to>/docker -H 0.0.0.0:5555 -d &

下载一个Ubuntu镜像

  1. $ sudo docker -H :5555 pull ubuntu

你可以使用更多的-H,例如,你想监听TCP和Unix Socket

  1. # Run docker in daemon mode
  2. $ sudo <path to>/docker -H tcp://127.0.0.1:2375-H unix:///var/run/docker.sock -d &
  3. # Download an ubuntu image, use default Unix socket
  4. $ sudo docker pull ubuntu
  5. # OR use the TCP port
  6. $ sudo docker -H tcp://127.0.0.1:2375 pull ubuntu

启动一个长久运行的工作程式

  1. # Start a very useful long-running process
  2. $ JOB=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done")
  3. # Collect the output of the job so far
  4. $ sudo docker logs $JOB
  5. # Kill the job
  6. $ sudo docker kill $JOB

列举container

  1. $ sudo docker ps
  2. # Lists only running containers
  3. $ sudo docker ps -a
  4. # Lists all containers

操控container

  1. # Start a new container
  2. $ JOB=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done")
  3. # Stop the container
  4. $ sudo docker stop $JOB
  5. # Start the container
  6. $ sudo docker start $JOB
  7. # Restart the container
  8. $ sudo docker restart $JOB
  9. # SIGKILL a container
  10. $ sudo docker kill $JOB
  11. # Remove a container
  12. $ sudo docker stop $JOB
  13. # Container must be stopped to remove it
  14. $ sudo docker rm $JOB

绑定服务到一个TCP端口

  1. # Bind port 4444 of this container, and tell netcat to listen on it
  2. $ JOB=$(sudo docker run -d -p 4444 ubuntu:12.10/bin/nc -l 4444)
  3. # Which public port is NATed to my container?
  4. $ PORT=$(sudo docker port $JOB 4444| awk -F:'{ print $2 }')
  5. # Connect to the public port
  6. $ echo hello world | nc 127.0.0.1 $PORT
  7. # Verify that the network connection worked
  8. $ echo "Daemon received: $(sudo docker logs $JOB)"

提交/保存一个container的状态

保存你的container状态到镜像中,状态可以被使用。

当你提交你的contaienr在镜像和被创建的container之间有所不同,当前的container状态将被存储。查看那个镜像可以使用docker images命令。

  1. # Commit your container to a new named image
  2. $ sudo docker commit <container_id><some_name>
  3. # List your containers
  4. $ sudo docker images

你也有一个镜像状态,你可以创建一个新的实例。

阅读更多关于“共享镜像”的内容,或者继续完成“命令行”。