docker专题

开始使用docker

2020-02-17  本文已影响0人  深圳邱道长

开打docker

确保你有了docker哦。

image-20200215120323946

运行我们的第一个容器吧

docker run -i -t  ubuntu /bin/bash
image-20200215120615006 image-20200215120629229

这段小命令发生了不少事情

  1. 我们使用docker run来运行一个容器
  2. 传入参数-i 代表interactive,交互式的,使标准输入对容器保持打开状态,即使我们没有连接到它。
  3. 传入参数-t ,它告诉Docker为我们将要创建的容器分配一个伪tty。
  4. 紧接着我们告诉docker,我要一个Ubuntu镜像
  5. /bin/bash,告诉docker,我要启动一个bash shell

这为我们在新容器中提供了一个交互式shell。 此行是创建容器的基本配置,我们计划与该容器在命令行上进行交互,而不是作为守护程序运行。

注意,我们这里使用的镜像类似Ubuntu这种,是由docker公司负责创建的,这类我们可以称为基础镜像或者顶级镜像,类似还有Debian,Fedora,Centos。这类镜像大部分几百兆,如果你喜欢超级超级小,可以使用Alpine。

这件美妙的事情,我们还是上个图吧。

image-20200215122723806

用用它

check下hostname以及版本

hostname

cat /etc/lsb-release 
image-20200215122947212

看看网络

cat /etc/hosts

# 内容
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  952b452d9602


如果你希望快速看IP

hostname -I

接下来,我们看看跑了什么进程

ps  -aux
image-20200215123939498

接下来我们下个软件吧。

apt-get update ; apt-get install -y vim

check version

vim -v
image-20200215124340915

没问题。

退出吧

exit

当我们退出后,这个容器就停止了。只要我们指定的命令/bin/bash正在运行,容器就会一直运行。一旦我们退出容器,该命令就结束了,容器也停止了。

我们可以查看容器的状态

docker ps -a
# a is all
image-20200215124417177

显示为Exited,退出了。那也代表曾经跑过哦。

如果你跑的容器很多,有时候你想知道最后一个跑的是谁

docker ps -l
# l is last

通过这个信息,我们可以看到很多内容

对于容器来讲,有三种方式标识

OK,你可能现在不知道它的长id。

docker ps -a --no-trunc
# 最后一个参数告诉他,不要截断我的信息,我要长的

容器命名

docker会自动给你命个名,有可能来个灰色毛毛,蓝色🐳。

但是,我们还是来个自己定义的更舒服。

docker run --name qdc_container  -i -t ubuntu /bin/bash
image-20200215125051580

显然参数--name 你喜欢的名字 就是用来指定名称的。

至于名称命名和一般变量命名规则差不多,一般你是不会创一个非法名称出来的吧。

注意这个名称是唯一的哦,你尝试运行上面的命令第二次,你会GG的。

image-20200215125235967

启动一个已经停止的容器

OK,我们之前退出了这个容器,它停止了,我现在希望重新让它跑起来呀。

docker start qdc_container
image-20200215125439206

我们的名字用上了,不用去copy那个臭臭id了。

ps,学习没有乐趣的话,自己去创造乐趣。

连接容器

容器起来了,我没上车怎么开呢?

attach容器。重新连接会话。

docker attach qdc_container
image-20200215125644915

搞一个持久跑的容器

除了这些交互式容器之外,我们还可以创建运行时间更长的容器。也就是守护进程容器,这类容器没有我们刚才使用的交互式会话,非常适合运行应用程序和服务。现在我们搞一个吧。

docker run --name qdc_daemon -d ubuntu /bin/sh -c "while true; do echo hello baby; sleep 1; done"
image-20200215125957229

我们使用了 -d,就是detach在后台跑。

我们还将while循环指定为容器命令。我们的循环将一次又一次地回显hello baby,直到容器停止或进程停止。

并且它没有附加一个终端,让我们去交互。

docker ps
image-20200215130124201

虽然没交互, 但是它一直在跑。

看看里面是不是真的在循环

我们现在有一个守护进程化的容器来运行while循环;让我们看看容器内部,看看发生了什么。我们可以使用docker logs命令。docker logs命令获取容器的日志。

docker logs qdc_daemon

可以看到N多的hello baby

如果你要监视变化,加个-f,就会一秒一个hello baby

要退出它的疯狂显示,ctrl + c

如果你觉得想看看时间也是可以的,时间time, 就用-t

docker logs -ft qdc_daemon
image-20200215130511239

检查容器内的进程

除了容器的日志,我们还可以检查容器内部运行的进程。我们使用docker top命令。

image-20200215131945251

docker统计

除了docker top命令之外,您还可以使用docker stats命令。这显示了一个或多个正在运行的Docker容器的统计信息。我们来瞧一瞧。

docker stats
image-20200215132105011

我们可以看到一组容器及其CPU、内存、网络和存储I/O性能和指标。这对于快速监视主机上的一组容器非常有用。

在容器内跑个进程

从Docker 1.3开始,我们还可以使用Docker exec命令在容器中运行额外的进程。我们可以在容器中运行两种类型的命令:后台命令和交互式命令。后台任务在容器中运行,没有交互,交互任务留在前台。交互式任务对于打开容器中的shell之类的任务非常有用。让我们看一个后台任务的例子。

docker exec -d qdc_daemon mkdir /usr/local/love

这里-d标志表示我们正在运行一个后台进程。然后,我们指定要在其中运行命令的容器的名称和要执行的命令。我们可以使用docker exec后台命令在正在运行的容器中运行维护、监视或管理任务。

我们进去看看是不是。

docker exec -it qdc_daemon /bin/bash
image-20200215133211645

停止容器

守护进程容器,不会自己停,现在我们的那个输出都不知道多少了,让它别秀了,停一停。

docker stop qdc_daemon

自动重启

如果因为某些原因失败,你希望重启,可以添加--restart=xxx,比如你希望不顾一切的重启。

docker run --restart=always --name qdc_daemon_tiehanhan -d ubuntu /bin/sh -c "while true; do echo hello baby; sleep 1 done"

比如我们这里的铁憨憨容器,我们可以写错了后面的代码,它其实是错误,由于你设置了总是重启,它就无脑重启了,是否需要重启,什么机制可以根据业务情况决定。

探索容器的更多信息

ps能看看简答是,更细致的,就没有了。详细的用docker inspect

docker inspect qdc_daemon

信息过多,我们展示一部分

image-20200215134122312

删除容器

docker rm 容器名/容器id

容器很多想一次干掉。

docker rm -f `docker ps -a -q`
image-20200215154007055
上一篇下一篇

猜你喜欢

热点阅读