如何开始docker - docker容器
docker 容器
docker 容器就是程序真正跑起来的地方,容器里面就是以镜像为模板,然后跑起一个或者一组应用。
容器运行
docker run → create → start → running → process exit → stopped → docker rm → deleted
-
1、docker run 从镜像里面创建一个容器,并开始运行;
-
2、根据镜像的内容来启动应用程序, 进行支持;
-
3、如果程序退出了,没有程序在前台运行,容器就退出执行了,处于 stooped 状态;
-
4、如果我们不需要再执行这个容器了,我们可以执行 docker rm 删除容器,释放磁盘空间,容器里面的东西都会被删除。
创建新容器
docker create 和 docker run 都可以创建新的容器,只是 docker create 创建的容器并不是直接运行,而是直接处于 stopped 状态,需要手动去启动起来。这两命令的语法是一致的。
docker run 执行过程:
-
检查本地是否存在指定的镜像,不存在就从公有仓库下载
-
利用镜像创建并启动一个容器
-
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
-
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
-
从地址池配置一个 ip 地址给容器
-
执行用户指定的应用程序
-
执行完毕后容器被终止
docker run 常用创建参数
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="opcailinux1": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "opcailinux1": 指定容器的hostname;
-e username="opcai": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值(单位:bytes);
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
例子
1、创建一个有名字的容器
docker run -itd --name=opcailinux centos:latest
2、映射随机端口
docker run -itd --name=opcailinux1 -P nginx:latest
3、手动映射端口
docker run -itd --name=opcailinux2 -p 81:80 nginx:latest
4、挂载数据目录到容器里面
docker run -itd --name=opcailinux3 -v /data/docker/nginx:/data nginx:latest
查看容器
docker ps #查看正在运行或者暂停的容器
docker ps -a #查看所有的容器(包括停止的)
docker ps -l #查看最后一个创建的容器信息
docker ps -a -s #统计所有容器的大小
进入容器操作
docker exec -it [容器ID] /bin/bash
这里的/bin/bash 是容器里面的/bin/bash,就是启动一个 bash shell,提供操作,有些镜像没有使用 bash,就需要运行其他终端,一般都有/bin/sh 这个软链接来链接到默认的 shell 程序。
容器状态控制
1、启动 stopped 的容器
docker start [容器ID]
2、重启容器
docker restart [容器ID]
3、停止容器
docker stop [容器ID]
4、暂停容器(暂停只容器进程暂停,分配的资源没有回收,stop 就回收了)
docker pause [容器ID]
5、暂停恢复容器
docker unpause [容器ID]
6、查看容器标准输出日志(有时候,容器异常退出的时候,需要看下输出,来排查问题)
docker logs [容器ID]
容器导入导出
docker 提供 export、import 命令来导出容器快照,和导入快照成为镜像
1、导出容器快照
docker export [容器ID] > opcailinux1.tar
2、导入快照文件成为镜像
docker import opcailinux1.tar opcailinux:v1.0
容器清理
容器如果在运行或者暂停中,默认是不允许删除的,需要加 -f 参数
docker rm [容器ID]
强制删除
docker rm -f [容器ID]
清理所有处于终止状态的容器
docker rm $(docker ps -a -q)
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2019/2019-02/docker8/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。