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--初体验的主要内容,如果未能解决你的问题,请参考以下文章