专栏首页程序员的碎碎念docker 入门-容器(二)

docker 入门-容器(二)

上一篇:Docker 入门(一)

说在前面的话:docker 推荐单个容器只运行一个应用程序或进程,因为这样以后可以拓展形成分布式应用程序模型

不管是 win10 还是 linux,docker 的命令都是一样的,不过 linux 下要带上 sudo,因为 docker 是以 root 权限运行docker守护进程

使用前

启动/停止运行 docker

linux:

start/stop docker   # ubuntu
service docker start/restart/stop    # centos

确保 docker 可以运行

sudo docker info

该命令打印出一大堆配置信息即说明 docker 正常运行了,信息包括所有容器和镜像的数量、docker的执行驱动和存储驱动、基本的配置等

容器(以 Ubuntu 镜像为例)

创建并运行容器(run)

sudo docker run -it ubuntu /bin/bash    # 创建并运行一个随机命名的容器
sudo docker run -name xxx -it ubuntu /bin/bash   # 创建并运行一个容器名为xxx的容器

补充解释:

使用 run 指令,创建并运行一个基于 Ubuntu 镜像的容器,如果本地没有该镜像,docker 会自动去 docker hub 下载

-it选项分别是:-i:开启容器的标准输入 STDIN,即键盘输入;-t:使新容器拥有一个 shell

/bin/bash 则告诉 docker 在新容器中要运行命令 /bin/bash

该命令创建运行的容器是一个精简版的 ubuntu 系统,拥有自己的网络、IP 地址、和宿主机通信的桥接网络接口等

创建容器(create)

sudo docker create -it 镜像名称 # 创建一个随机命名的容器
sudo docker create --name xxx -it 镜像名称 # 创建一个容器名为xxx的容器

创建一个可以自动重启的容器(--restart)

有什么用?当容器因为内部运行出错停止时可以重新启动,从而避免一些损失

sudo docker run --restart=always --name xxx -d ubuntu ...

还可以设置自动重启的上限次数:

--restart=on-failure:5

退出正在当前窗口运行的容器

exit

查看当前系统的所有容器

sudo docker ps -a

查看当前运行的容器

sudo docker ps

查看最后一个运行的容器(不管是否正在运行)

sudo docker ps -l

查看一个容器的详细信息

sudo docker inspect 容器名或ID

删除容器

sudo docker rm 容器名称或 ID

目前没有一键删除所有容器的功能,但我们可以这样:

sudo docker rm `sudo docker ps -a -q`

但 windows 中不是用这个命令批量删除

启动/重启/停止一个已存在的容器

sudo docker start/restart/stop 容器名或 ID

但是,这样启动的容器只是在后台运行,并没有进入 shell 界面,这时我们可以用附着到容器的命令:

sudo docker attach 容器名或 ID

注意!

如果想要在容器退出后使用 start 命令启动,则只有守护式容器可以长时间运行,而普通的容器则会在启动后马上停止运行。

解决方法为:在创建这些普通容器时使用 -dit 选项:

sudo docker run -dit --name xxxx ubuntu

守护式容器(即无交互式会话)

创建长期在后台运行的容器

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

解释:

-d:detached 的意思,指示放在后台运行

/bin/sh -c:让 bash 将后面的一个字符串作为完整的命令来执行

"while true; do echo hello world; sleep 1; done;":每隔一秒在容器内部的 shell 窗口输出 hello world

可以通过附着到容器查看,也可以通过 docker log 查看

查看守护式容器干了些什么

获取守护式容器的日志(仅获取当前已输出的日志)

sudo docker logs 容器名或 ID

跟踪守护式容器的日志(实时显示)

sudo docker logs -f 容器名或 ID

按 ctrl+c 退出 -t 选项可以打印时间

查看容器内部正在运行的进程(top)

sudo docker top 容器名或 ID

输出样例:

PID                 USER                TIME                COMMAND
2710                root                0:00                /bin/sh -c while true; do echo hello world; sleep 1; done;
3167                root                0:00                sleep 1

在容器内部运行进程(exec)

sudo docker exec -d 容器名或ID touch xxx_file

解释:

在xxx容器中创建一个文件

这有什么用呢?用处可大了,比如上面例子中遇到的守护式容器想要进行交互,但没有界面怎么办?这时就可以用上在容器内运行bash进程的命令了:

sudo docker exec -it 容器名或ID /bin/bash

导入导出容器(export/import)

指把一个已创建的容器导出到一个文件中

导出:

sudo docker export 容器名或ID > xxx.tar

导入为一个镜像:

sudo docker import xxx.tar 镜像名

本文分享自微信公众号 - 程序员的碎碎念(gh_53e607dd4782),作者:米国队长

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【容器技术】Docker容器技术入门(二)

    Dokcer 通过使用 Linux 桥接提供容器之间的通信,Docker的网络模式有四种

    民工哥
  • Docker 容器入门

    1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件...

    惨绿少年
  • Docker容器入门

    为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是《Docker在...

    用户1154259
  • docker 容器从入门到入魔

    1. docker 是什么2. docker 解决什么问题1. 解决虚拟机资源消耗问题。2. 快速部署。3. 提供一次性的环境。4. 提供弹性的云服务。5. 组...

    somenzz
  • Docker容器技术入门(一)

    DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,...

    民工哥
  • Docker入门实战(三)-Docker容器镜像

    从基本的看起,一个典型的 Linux 文件系统由 bootfs 和 rootfs 两部分组成,

    JavaEdge
  • Docker容器最初的2小时(Docker从入门到入门)

    最初的2小时,你会爱上Docker,对原理和使用流程有个最基本的理解,避免满世界无头苍蝇式找资料。本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习...

    Linux阅码场
  • Docker入门及自定义容器

    Linux Containers Linux容器 缩写LXC,其对进程进行隔离,而非一个完整的操作系统。Docker属于LXC的一种封装,提供简单易用的容器使用...

    用户2987604
  • docker容器入门最佳教程

    容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行。

    sunsky

扫码关注云+社区

领取腾讯云代金券