(二)使用一下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 镜像名

我是真的真的非常十分特别希望你能关注一下我的微信公众号~~
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值