docker入门教程

本文介绍 Docker 的基本使用方法和常用命令,包括容器的创建、查看、停止和删除。通过这些操作可以实现单个容器的使用和应用部署。至于 Docker 镜像创建、Dockerfile 的书写和编配工具 Docker-compose 的使用等进阶话题,后续更新。

安装和启动 Docker

之前已经介绍过 CentOS7 下安装 Docker 和非 root 用户执行 Docker 命令:

  1. Docker 安装教程
  2. 非 root 用户使用 Docker

如果没有配置开机启动,则需要手动启动 Docker 守护进程:

$ systemctl start docker

运行第一个容器

百度百科: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

所以使用 Docker 所操作的对象就是容器,具体操作包括创建、启动、查看、关闭、删除等。

启动一个容器:

$ docker run -it --name myubuntu ubuntu /bin/bash

其中:

  • docker run为 Docker 命令。
  • -it--name为命令参数,i表示开启容器 STDIN,t表示创建伪 tty 终端,只有指定这两个参数才能提供交互式 shell;name用于指定要创建容器的名字,这里取为 myubuntu,若不指定 name 参数则自动生成随机名称。容器名称必须唯一!
  • ubuntu 指定创建容器所需要的镜像名,每个容器都依赖于镜像创建,镜像概念后续更新。
  • /bin/bash 指定了容器启动后执行的命令,这里表示启动 ubuntu 系统内的 bash。

不出意外,执行结果如下图:

这里写图片描述

在继续使用 myubuntu 之前,先说明下 Docker 命令的使用帮助。

  1. 查看 Docker 支持的命令

    $ docker
    
  2. 查看具体命令的使用

    $ docker run --help
    

容器的使用

上面已经成功以 root 用户启动容器 myubuntu 并进入 bash 终端,这是一个完整的 ubuntu 系统,可以用来做任何事情。其中容器的 ID c7f79d6c379b 同时也是容器的主机名。

这里写图片描述

我们可以尝试在系统内安装 vim:

这里写图片描述

再看看看容器的进程:

这里写图片描述

你可以继续做任何想做的,如安装 python3, 部署 flask,…甚至rm -rf /o(∩_∩)o 。不用担心,创建容器是docker run那么容易。

现在是时候退出了,输入exit并回车:

这里写图片描述

一旦退出容器,/bin/bash 命令也就结束了,容器也随之停止。我们又回到了主机,初次的体验完毕。

查看容器

退出容器回到宿主机,容器虽然停止,但是仍然存在,可以再次使用。

使用docker ps查看当前系统的容器列表(-a显示所有容器,包括运行和停止的,不加则只显示运行的)

$ docker ps -a

这里写图片描述

其中:

  • CONTAINER ID, 容器 id
  • IMAGE,创建容器使用的镜像
  • COMMAND,容器最后执行的命令
  • CREATED,容器的创建时间
  • STATUS,容器的退出状态
  • PORTS,容器和主机的端口映射
  • NAMES,容器名称

docker inspect可以查看容器的配置信息,如名称、网络等。


重新启动已停止的容器

上面使用 exit 退出了容器,容器也随之停止。也许以后某个时候,我们还需要再次使用(当然可以再创建一个新的,这样的话,不用的容器记得删除,删除方法见本文最后),则可以使用docker start重新启动停止的容器:

$ docker start myubuntu

一般的,容器名和容器 ID 可以替换使用,如上面操作也可以用:

$ docker start c7f7

不需要使用完整的 ID,开始的 3 - 4 位足矣!

类似相关命令有:docker restart, docker create,如何学习?--help

有没有发现执行了上述命令,好像没有看到什么变化?docker ps一下:

这里写图片描述

注意STATUS,已经UP

那么问题来了,如何再次进入终端呢?有两种方法(科普一下茴香豆的茴有4种写法:茴 ,回,囘,囬):

  1. 附着到容器(命令执行后需要 Enter 直到进入)

    $ docker attach myubuntu
    
  2. 在容器内重新运行新进程(docker exec登场)

    $ docker exec -it myubuntu /bin/bash
    

在第二种方法中,我们新启动了 bash 进程,有图为证:

这里写图片描述

注意上面操作都要求容器先启动!

同样,exit 退出。


创建守护容器

前面创建的容器都是交互式运行的,更多时候我们需要创建长期运行的容器来运行服务,而且不需要交互式会话(比如数据库)。

容器创建仍旧使用docker run命令,但这次使用-d参数:

$ docker run --name myredis -d -p 9527:6379 redis

这里写图片描述

这里我使用 redis 镜像 并添加-d将任务放到了后台,所以执行命令后仍然回到主机而没有进入容器。至于-p参数,用于容器与主机的端口映射(上面例子将容器内 redis 端口映射到主机的 9527),这次docker ps可以看到PORTS有了内容。

这里写图片描述

查看某容器的端口可直接使用命令docker port

这里写图片描述

通过docker ps可以看到容器已经成功在后台运行,如何与该容器交互使用呢?比如这里如何连接上 reids?其实很简单,只要使用主机的 ip 和 容器映射的主机端口就可以正常使用。

这里写图片描述

如果想研究容器内部都做了些什么,可以使用docker logs来读取容器日志。命令可以添加参数-f进行滚动查看(效果类似 tail -f),参数-t为 每条日志添加时间戳。退出日志跟踪使用Ctrl-C

这里写图片描述

如果想进入容器,使用上面的docker exec命令。

更多容器状态检测命令,查阅:docker top, docker stats


停止守护容器

只需要执行docker stop命令:

$ docker stop myredis

还有个命令docker kill直接向容器发送 SIGKILL 信号停止容器。


删除容器

如果容器不再使用,可以使用docker rm删除。

$ docker rm myredis

若要删除运行中的容器,使用-f参数。

若要删除所有容器:

$ docker rm `docker ps -aq`

DEMO: 学习 Spark

  1. 查看是否有 spark 镜像

    $ docker search spark
    

    这里写图片描述

  2. 创建容器(使用点赞最多的 sequenceiq/spark)

    $ docker run -it --name myspark sequenceiq/spark spark-shell
    

    这里写图片描述

    这里写图片描述


总结

Docker 最基本常用的命令就这些:docker run启动容器,docker ps查看容器状态,docker stop停止容器,docker rm删除容器。

有了 Docker,你可以通过docker search查询镜像仓库是否已经有人做好相关镜像,如果有则直接docker run创建容器使用,否则需要自己构建镜像。作为入门篇,这里就不多说了。

Docker 最直观的好处,就是可以无痛快速尝试新的技术,这些往往别人已经做好镜像配置好环境(对于学习这些环境足够了),初学者不必自己去处理繁琐的运维配置。而且启动容器的代价非常小,资源隔离保证主机安全下满足好奇心,折腾坏了直接删除新建一个就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值