前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker容器技术系列二:docker容器初体验

docker容器技术系列二:docker容器初体验

作者头像
小小科
发布2018-05-04 15:28:55
9410
发布2018-05-04 15:28:55
举报
文章被收录于专栏:北京马哥教育北京马哥教育

一、docker容器安装

1.1 RedHat/CentOS下的docker安装:

代码语言:javascript
复制
RedHat/CentOS必须要6.6版本以上,或者7.x才能安装docker,建议在RedHat/CentOS 7上使用docker,因为RedHat/CentOS 7的内核升级到了kernel 3.10,对lxc容器支持更好。

CentOS 6.6下安装docker:

  • 安装
代码语言:javascript
复制
rpm -ivh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm

yum install docker-io
  • 设置自启动:
代码语言:javascript
复制
chkconfig docker on

service docker start

CentOS 7下安装docker:

  • 安装:
  • centos7下默认yum源已经包含了docker,因此无需其他yum仓库支持,直接安装即可:
代码语言:javascript
复制
yum install docker
  • 设置自启动:
代码语言:javascript
复制
systemctl enable docker

systemctl start docker

1.2 Ubuntu下docker安装:

  • Ubuntu下我仅测试了14.04版本,其他版本未测试
  • 安装:
代码语言:javascript
复制
sudo apt-get install docker.io
  • 设置自启动:
  • 设置开机启动:运行sysv-rc-conf,如果没有该工具,则自行安装即可

启动:

代码语言:javascript
复制
service docker.io start
  • *注:我不建议初学者采用编译安装docker,因为这样耗时耗力,还有很多不可预知的问题出现,对初始学习docker并没有多大用处。

二、运行第一个docker容器

2.1 hello world

  • 安装好docker环境并启动docker服务后,我们就可以跑一个“hello world!”试试了
  • 命令如下:
代码语言:javascript
复制
[root@localhost ~]# docker  run  centos echo "Docker,hello world"
Unable to find image 'centos:latest' locally
latest: Pulling from centos
47d44cb6f252: Pull complete
168a69b62202: Pull complete
812e9d9d677f: Pull complete
4234bfdd88f8: Pull complete
ce20c473cd8a: Pull complete
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5
Status: Downloaded newer image for centos:latest
Docker,hello world
  • 命令说明:
代码语言:javascript
复制
docker run  :标准容器启动命令

centos :镜像名称

echo及后面的内容  :容器启动后执行的命令

2.2 启动一个交互式容器

  • 当然我们也可以再复杂一点,增加-it参数,可以启动一个bash,实现与容器的交互,并向操作虚拟机一样操作容器:
代码语言:javascript
复制
[root@localhost ~]# docker  run -it centos /bin/bash

[root@110baabc10bc /]# echo "Docker,hello world"Docker,hello world
  • *注:-t标示在心容器内指定一个伪终端或终端,-i标示允许我们对容器内的STDIN进行交互
  • 我们在容器中执行一个ps命令,可以看到容器与虚拟机最大的不同,容器仅允许了一个需要允许的进程,无内核相关的其他进程,如下:
代码语言:javascript
复制
[root@110baabc10bc /]# ps -efUID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 02:05 ?        00:00:00 /bin/bash
root        17     1  0 02:06 ?        00:00:00 ps -ef

2.3 以服务方式启动一个docker容器

  • 如果你实际测试,估计也发现了,第一个“hello world”容器启动后执行完echo命令就退出了,而第二个交互式的容器,只要用户退出当前容器的bash,容器也退出了。这明显不能满足一个服务长时间运行的要求,好找docker run提供了‘-d’参数,可以实现将容器以守护进程方式启动。
  • 演示如下:
代码语言:javascript
复制
[root@localhost ~]# docker  run -d  centos /bin/bash -c "while true; do echo Docker,hello world; sleep 2; done"5ff7a2ac73469a4ff30d3709ceaa4d9ee14a87bf075fdf5ba4cb751b7077edf3
[root@localhost ~]# docker  logs 5ff7a2ac73469a4ff30d3709ceaa4d9ee14a87bf075fdf5ba4cb751b7077edf3Docker,hello world
Docker,hello world
Docker,hello world
Docker,hello world
Docker,hello world

[root@localhost ~]# docker  psCONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES5ff7a2ac7346        centos              "/bin/bash -c 'while   21 seconds ago      Up 20 seconds                           elegant_jang
  • 这是一个荒谬的hello word进程:一个脚本会一直输出”Docker,hello world”
  • 为什么不是我们看到的一大堆的”hello word”?而是docker返回的一个很长的字符串:
代码语言:javascript
复制
5ff7a2ac73469a4ff30d3709ceaa4d9ee14a87bf075fdf5ba4cb751b7077edf3
  • 这个长的字符串叫做容器ID。它是容器的唯一标识,所以我们可以使用它来操作容器,比如查看日志、停止或删除容器等。

而为什么使用一个死循环来输出呢?

  • 因为如果不是死循环,一次输出后,容器中的进程就结束了。容器的唯一进程都结束了,容器就停止了。因此如果要在容器中运行具体的服务,这项服务本身在容器中也必须是已守护进程方式运行的。

容器的操作是不是很简单的呢?下文我们将探讨docker镜像。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、docker容器安装
  • 二、运行第一个docker容器
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档