docker学习三--容器(container)

一、前言

容器是镜像的运行时的实例,相当于虚拟机模版启动VM一样,使用者也可以从单个镜像上启动一个或多个镜像

虚拟机和容器最大的区别是容器更快并且更轻量,本质上就是因为docker容器共享宿主机的内核或操作系统。

使用单个Docker镜像启动多个容器

以上为使用一个docker镜像启动多个容器的示意图

二、容器常用命令

1、启动
docker container run <image> <app>
# 省略container也可
启动命令后接的参数说明
1.1 启动某个 centos7 容器,并运行 Bash Shell 作为其应用
docker container run -it centos7 /bin/bash
1.2 -it 参数

可以将当前终端连接到容器的 Shell 终端之上。

-t docker分配伪终端,并绑定到容器的标准输入上
-i 保持标准输入打开
1.3 -p 指定映射端口即容器暴露的端口
1.4 -d 指定容器在后台运行
1.5 --rm 容器退出时删除容器
1.6 --name 为启动的容器命名
1.7 -e 指定环境变量,容器中可以使用该环境变量
1.8 -v ,–volume 给容器挂载存储卷,挂载到容器的某个目录
1.9 -a 或者 --attach 登录容器(必须是以docker run -d启动的容器)
2.0 -w ,–workdir="": 指定容器的工作目录
2.1 -h, --hostname="", 指定容器的主机名
2.2 -u, --user="", 指定容器的用户
2.3 -c,–cpu-share=0, 设置容器cpu权重,在cpu共享场景使用
2.4 -m,–memory="",指定容器的内存上限
2.5 --dns-search=[], 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
2.6 --entrypoint="", 覆盖image的入口点
2.7 --expose=[], 指定容器暴露的端口,即修改镜像的暴露端口
2.8 --link=[], 指定容器间的关联,使用其他容器的IP、env等信息
2.9 --privileged=false, 指定容器是否为特权容器,特权容器拥有所有的capabilities
3.0 --restart="no", 指定容器停止后的重启策略
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
3.1 --sig-proxy=true, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

2、退出容器

2.1、按Ctrl-pq不停止容器而退出当前容器
2.2、按Ctrl-d 直接退出容器,如果启动时没有指定-d,则容器直接停止

3、停止容器

3.1优雅退出
docker container stop <container_name/id>

再删除容器

docker container rm 
3.2粗暴退出并删除
docker container rm <container> -f

4、查看容器运行情况

4.1、docker container ls

使用 docker container ls 命令可以查看当前运行的容器以及端口的映射情况。端口信息按照 host-port:container-port 的格式显示,明确这一点很重要。

4.2 查看正在运行的容器
docker ps
4.3 查看运行容器时使用的镜像以及其他详情
docker image inspect <image>

示例:

$ docker image inspect nigelpoulton/pluralsight-docker-ci
[
{
"Id": "sha256:07e574331ce3768f30305519...49214bf3020ee69bba1",
"RepoTags": [
  "nigelpoulton/pluralsight-docker-ci:latest"

  <Snip>

],
"Cmd": [
  "/bin/sh",
  "-c",
  "#(nop) CMD [\"/bin/sh\" \"-c\" \"cd /src \u0026\u0026 node \
  .app.js\"]"
],
<Snip>

为了方便阅读,仅截取输出内容中我们感兴趣的部分。

Cmd 一项中展示了容器将会执行的命令或应用,除非在启动的时候读者指定另外的应用。如果去掉示例脚本中的转义字符,可以得到这样的命令:/bin/sh -c "cd /src && node ./app.js。这是基于该镜像的容器会默认运行的应用。

在构建镜像时指定默认命令是一种很普遍的做法,因为这样可以简化容器的启动。

这也为镜像指定了默认的行为,并且从侧面阐述了镜像的用途——可以通过 Inspect 镜像的方式来了解所要运行的应用。

5、docker exec 在运行状态的容器中,启动一个新进程
#命令会在容器内部启动一个 Bash Shell 进程,并连接到该 Shell。
docker container exec -it <container-name or container-id> bash 
6、重启容器docker container start

重启处于停止(Exited)状态的容器。可以在 docker container start 命令中指定容器的名称或者 ID。

7、 docker container inspect

显示容器的配置细节和运行时信息。该命令接收容器名称和容器 ID 作为主要参数

8、清除所有的已经停止的容器
docker container prune

参考文章:

http://c.biancheng.net/view/3150.html

三、单体应用容器化步骤(简述)

1、获取应用代码

2、分析Dockerfile

3、构建应用镜像

4、运行该应用

5、测试应用

6、容器应用化细节

7、生产环境中的多阶段构建

8、最佳实践

详细请参考以下文章:

http://c.biancheng.net/view/3159.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值