Docker循序渐进

上一篇大致介绍了什么是Docker和其安装(以Ubuntu为例)。这篇来说说,Docker的基本操作。

非Root用户授权

上一篇的演示中使用的都是默认登录了Root权限后的操作,而实际的开发运维情况下,我们一般极少使用Root权限,所以Docker提供了一个权限组,我们只需要把当前用户加入到Docker用户组中。

一共需要三条指令:

$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart

三条指令的意思分别是:

  • 添加docker用户组,一般会默认创建,提示已存在
  • 将用户添加到docker用户组
  • 重启docker服务

示例如下

user

注意 重启服务后,仍需推出当前用户,重新登陆使用户权限生效!

容器的基本操作

本内容仅提供常用操作命令及参数,并非完整内容,具体可以参考官方文档或三方手册补全。

推荐参考菜鸟教程(RUNOOB.COM)的-Docker命令大全

启动容器

$ docker run IMAGE [COMMAND] [AGR…]
  • run 在新容器中执行的命令
  • IMAGE 启动容器所使用的操作系统的镜像
  • [COMMAND] 容器启动后的运行命令
  • [AGR] 命令参数

示例:

一个执行单一指令的基本容器

$ docker run ubuntu echo 'Hello world!'
hello

启动交互式容器

$ docker run -i -t IMAGE /bin/bash
  • -i 开启标准输入(交互) --interactive = true | false 默认是false
  • -t 分配伪tty终端 --tty = true | false 默认是false

示例:

$ docker run -i -t ubuntu /bin/bash
itrun

docker创建了一个允许使用bash交互的系统,当执行exit时推出,释放资源。

查看容器

PS 列举

$ docker ps [OPTIONS]
  • -a 查看所有容器
  • -l 查看最近创建的容器
  • 无参 正在运行的容器
ps

inspect 查看容器信息

docker inspect NAME|ID [NAME|ID...]

参数为 ps列举出的ID /NAME

执行后列举出容器的元信息,此处略过。

顺带一提:

前文中run指令中未提到,给容器指定名称的方法:

$ docker run --name=自定义名 -i -t IMAGE /bin/bash

重新启动停止的容器

很多时候并不需要不停的创建容器,而是可以将已经停止的容器重启来使用。

$ docker start [-i] 容器名
  • -i 交互模式

示例如下:

start

删除停止的容器

$ docker rm 容器名

示例如下:

rm

守护式容器

区别于交互式容器,守护式容器有如下特点:

  • 能长期运行
  • 没有交互式会话
  • 适合运行应用程序和服务

以守护形式运行容器

推出交互模式,后台运行:

使用快捷键 Ctrl+P + Ctrl+Q

退出交互

退出交互后,容器仍在运行,使用docker ps查看

直到执行exit,容器被释放

附加到运行中的容器

$ docker attach 容器名

执行指令后重新进入容器交互界面,图略

创建守护式容器

直接使用run来创建交互式容器

$ docker run -d IMAGE [COMMAND] [AGR…]

区别于默认模式,-d参数表面启动后台驻留

示例:(这里通过编写一个循环shell来验证)

$ docker run --name dc_test -d ubuntu /bin/sh -c "while true; do echo 'hello world'; sleep 1; done"

执行后返回ID,截图略

查看容器运行情况

$ docker logs [-f] [-t] [--tail] 容器名

参数:

  • -f 保持跟踪日志变化并返回结果 --follows = true | false 默认为false
  • -t 返回结果加上时间戳 --timestamps = true | false 默认为false
  • --tail = all 返回结尾处制定数量的日志 不指定则返回所有

示例:

$ docker logs dc_test --tail 3 -t -f

以前面创建的dc_test容器为例,先显示三行,并保持跟踪且显示时间戳:

log

注意Ctrl+C退出(Linux下绝大部分操作通用嘛)

查看进程内容

查看运行中容器的进程:

$ docker top 容器名
top

在运行的容器中启动新的进程

Docker的理念是,在一个容器中使用一个服务,但仍然提供了在一个容器中运行多个进程的方法,从而实现对运行中容器进行维护,监控等操作。

$ docker exec [-d] [-i] [-t] 容器名 [COMMAND] [AGR…]

参数-d/-i/-t 和前面run相同

$ docker exec -i -t dc_test /bin/bash

以前面创建的dc_test容器为例,为其添加一个bash终端进程,并使用top指令查看

exec

停止守护式容器

stop

$ docker stop 容器名

发送停止信号给容器,等待容器的停止。

kill

$ docker kill 容器名

直接停止容器。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从零学习云计算

openshift/origin学习记录(9)——S2I镜像定制(基于Git)

参考《开源容器云Openshift》一书,制作一个Tomcat的S2I镜像(从Git下载代码,Maven打包,部署到Tomcat上。) 从Svn下载代码的...

54700
来自专栏散尽浮华

完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像

在部署openstack云平台环境的时候,需要上传镜像到glance。 首先下载iso镜像,这里下载了centos6.5镜像,放到/usr/local/src目...

43290
来自专栏搜云库

Ubuntu 17.04 x64 安装 Docker CE

Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本!使用 Docker,可以让应用的部署、测...

368100
来自专栏清晨我上码

docker运行容器远程挂载卷

61120
来自专栏编程坑太多

『中级篇』Docker Compose到底是什么(38)

PS:上节通过image 和container的方式创建wordpress,一般麻烦吧还不算特别麻烦,但是相比今天的docker-compose.yml来说,还...

12630
来自专栏IT派

用Docker玩转PHP环境配置

是否有这样的场景,你搞了一个项目,在本地开发时需要搭建环境,放到线上时也需要搭建环境,到公司想暗戳戳玩一下要搭建环境,不搭还不行,因为你的环境依赖还挺多。这个时...

26320
来自专栏finleyMa

docker学习系列4 简单总结 docker-curriculum

来源:https://docker-curriculum.com/ 这篇文章不错,可以作为第一篇 docker 的入门,我简单总结了下。顺便重温下之前的内容。...

15630
来自专栏编程坑太多

『中级篇』Docker Compose到底是什么(38)

PS:上节通过image 和container的方式创建wordpress,一般麻烦吧还不算特别麻烦,但是相比今天的docker-compose.yml来说,还...

18440
来自专栏Coding01

使用 docker-compose 搭建 Laravel 环境 (三)

有了第二篇《使用 Docker 搭建简易的 Java Web 环境 (二)》,懂了如何通过单一镜像创建 Docker 环境,这篇主要学习如何使用「docker-...

24130
来自专栏finleyMa

docker学习系列2 保存对容器的修改

注意: 经查,不推荐更改运行中的容器配置,容器本身是无状态的,当然也可以通过进入容器内部的方式进行更改: docker exec -it 这样的更改是无法持久...

2.2K10

扫码关注云+社区

领取腾讯云代金券