docker--初体验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker--初体验相关的知识,希望对你有一定的参考价值。

  docker这个词已经越来越热,很多docker的概念是从周围人和知乎上看的,打算从功能上先了解docker,更深入的放在以后。

    ps:正好手头有一台腾讯云的vps,单核,1G内存,可以拿来做实验,腾讯云还能直接申请配置好的docker环境,一块钱每月,学生党的福利吧

  docker是基于c-s架构的,它有一个 docker程序,既能作为客户端,也能作为服务器,作为客户端时,docker程序向docker守护进程发送请求,然后再对返回的结果进行处理。docker的一些命令一般需要在root账户下执行。

1. docker环境可以用了吗

  docker安装很简单,安装之后验证它是否能够正常工作,

[email protected]30-109-ubuntu:~# docker info
Containers: 7    #现有的容器
Images: 11      #现有的镜像
Storage Driver: aufs #存储驱动
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 25
 Dirperm1 Supported: false
Execution Driver: native-0.2 #执行驱动
Logging Driver: json-file
Kernel Version: 3.13.0-63-generic
Operating System: Ubuntu 14.04.1 LTS
CPUs: 1
Total Memory: 994 MiB
Name: VM-30-109-ubuntu
ID: J2H5:LG3K:EL4Q:PKAL:K37L:C36K:GUIE:JQIW:XKAP:AL66:D7RS:7OEN
Username: changan
Registry: https://index.docker.io/v1/
WARNING: No swap limit support

2.docker用起来是怎么样的?

大部分书都会给运行docker的第一个容器

[email protected]30-109-ubuntu:~# docker run -i -t ubuntu /bin/bash 
[email protected]d05d3db1b990:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

  运行这条命令,发现终端从本机的~目录下跳转到 [email protected]的 / 目录下,d05d3db1b990就是当前我们创造出来的容器,我们现在所处的是在容器里面的shell,有了这个shell,我们就能很方便的在这个容器里面执行各种操作,做这个容器的时候,我们定制它的模板是 ubuntu,所以我们可以把它当作一个新的操作系统用,这条命令的 -i 参数保证容器里面的STDIN是开启的,-t参数告诉docker要为创造的容器分配一个伪tty终端,这样,新创建的容器才能提供一个与我们交互的shell,这样我们创建的是一个可以交互的容器,同样,我们也能创建一个后台服务的容器。

  在这里,我们选择是ubuntu这样一个基础镜像,同样也能选择 centos,fedora等其他镜像,Linux的不同发行版很多,但是它们都是依托唯一的Linux内核。在我们指定了ubuntu参数以后,docker去哪找这么多的基础部件呢,莫非我们在安装的时候就已经把各个操作系统,服务器的代码下载下来放到本地,用的时候去本地找?或者是每次取到用户指定的参数,拼接一个url,然后去一个地方下载?首先,docker回去本地的一个固定目录下去查找是否有本次要用的资源,如果没有,docker会连结官方的的Docker hub,看看网络上是否有镜像,找到后下载到本地,然后构建目标容器,如果本地和网络都找不到,命令只能返回一个失败。

 

容器操作的几个命令:

[email protected]30-109-ubuntu:~# docker ps  #查看正在运行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[email protected]-30-109-ubuntu:~# docker ps -a #所有容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS               NAMES
d05d3db1b990        ubuntu              "/bin/bash"              28 minutes ago      Exited (0) About a minute ago                       serene_banach
7916a41706d3        ubuntu              "/bin/bash -c ‘while "   18 hours ago        Exited (137) 54 minutes ago                         daemon_test
[email protected]30-109-ubuntu:~# docker start daemon_test  #启动一个容器
daemon_test  #返回容器名
[email protected]-30-109-ubuntu:~# docker ps  #容器启动了
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
7916a41706d3        ubuntu              "/bin/bash -c ‘while "   18 hours ago        Up 43 seconds                           daemon_test
[email protected]-30-109-ubuntu:~# docker stop daemon_test  #停止正在运行的容器
daemon_test  #返回容器名
[email protected]30-109-ubuntu:~# docker run --name zzztest_daemon -d ubuntu /bin/bash -c "while true; do echo hello docker; sleep 3; done;" 
#创建一个守护式容器 --name是给这个容器取名
fe97ada54ee9ee5fe96b78033d80595b8e23006527782609757fe11474ba2aca [email protected]-30-109-ubuntu:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fe97ada54ee9 ubuntu "/bin/bash -c ‘while " 7 seconds ago Up 6 seconds zzztest_daemon [email protected]-30-109-ubuntu:~# docker logs zzztest_daemon hello docker hello docker hello docker

[email protected]:~# docker logs -ft zzztest_daemon # -f选项类似 tail -f -t表示加上时间戳
2016-11-27T06:12:18.037582372Z hello docker
2016-11-27T06:12:21.039988788Z hello docker
2016-11-27T06:12:24.041247906Z hello docker
2016-11-27T06:12:27.042243171Z hello docker
2016-11-27T06:12:30.043316648Z hello docker

docker很便捷的是把容器做成了几条命令,直接敲几条命令就能启动几个容器,在容器里运行服务,像其他的命令一样,想知道docker的更多用法,只需要 docker --help 

 

以上是关于docker--初体验的主要内容,如果未能解决你的问题,请参考以下文章

Docker深入浅出系列 | 容器初体验

vs code初体验

docker初体验

01-docker 初体验

docker初体验

docker初体验