一、Docker的简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
以下是关于Docker的思维导图:
二、Docker组成部分
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
三、Docker的使用
1.容器的使用
在运行容器之前要处理好镜像问题
(1)运行容器
运行第一个容器,执行以下命令。
[root@master~]# docker run-it--rm-d-p 80:80 nginxlatest
5d42a9fafeb60064d3d9f764de57d2eb2b51f58b1d7blc37020674c1bc08e4bb
参数说明:
-i:交互式操作。
-t:终端。
-rm:容器退出后随之将其删除,可以避免浪费空间。
-p:端口映射。
●-d:容器在后台运行。
其过程可以简单的描述为:
①下载Nginx镜像。
②启动容器,并将容器的80端口映射到宿主机的80端口。
当使用dockerrun来创建容器时,Docker在后台运行的标准流程如下:
①检查本地是否存在指定的镜像,不存在就从公有仓库下载。
②利用镜像创建并启动一个容器。
③分配一个文件系统,并在只读的镜像层外面挂载一层可读写层。
④从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
⑤从地址池配置一个IP地址给容器。
⑥执行用户指定的应用程序。
接下来可以通过浏览器验证容器是否正常工作。在浏览器中输入地址http//hostIP验证
启动容器的语法如下:
# docker start[CONTAINERID
例如,启动所有的Docker容器:
# docker start $(docker ps -aq)
(2)操作容器
列出运行中的容器。
# docker ps
# docker container ls
列出所有容器(包含终止状态)。
# docker ps -a
查看具体容器的信息。
# docker inspect [container ID or NAMEST
查看容器的使用资源状况。
# docker stats [container ID or NAMES
查看容器日志。
# docker logs [OPTIONS][container ID or NAMES
OPTIONS 说明:
--details:显示更多的信息。
-f--follow:跟踪实时日志。
--sincestring:显示自某个timestamp之后的日志,或相对时间,如 42分钟。
--tailstring:从日志末尾显示多少行日志,默认是all。
-t,--timestamps:显示时间戳。
--untilstring:显示自某个timestamp之前的日志,或相对时间,如42分钟。
进入容器。
# docker exec-it[CONTAINER ID] bash
进入容器后,输入exit或者按Crtl+C键即可退出容器,示例代码如下:
[root@master~]#docker exec-it 5d42a9fafeb6 bash
root@5d42a9fafeb6:/#exit
exit
(3)终止容器
删除终止状态的容器。
# docker rm[CONTAINER ID]
删除所有处于终止状态的容器。
# docker container prune
删除未被使用的数据卷。
# docker volume prune
删除运行中的容器。
# docker rm-f[CONTAINER ID]
批量停止所有的容器。
# docker stop $(docker ps-aq)
批量删除所有的容器。
# docker rm $(docker ps -aq)
终止容器进程,容器进入终止状态。
# docker container stop[CONTAINER ID(4)导入/导出容器
将容器快照导出为本地文件,语法如下:
# docker export[CONTAINER ID]>[tar file]
例如:
root@master~]# docker export 5d42a9fafeb6>nginx.tar
[root@master~]# 11
total 125320
-rw-r--r--1 root root 128326656 0ct 31 01:24 nginx.tar
同样的,也可以把容器快照文件再导入为镜像,语法如下,
# cat [tar file]| docker import-[name:tag
例如:
[root@master~]# cat nginx.tardocker import-nginxtest
sha256:c1668cd482c7e86a231f718d673c2c4a293ad75ea49ac3f3f4b75dfee42b3e2f
[root@master~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx test c1668cd482c7 3 seconds ago 125MB
nginx latest 540a289bab6c 8 days ago 126MB
使用dockerimport命令导入一个容器快照到本地镜像库时,将丢弃所有的历史记录和
元数据信息,即仅保存容器当时的快照状态。
2.实例
查看镜像列表:
使用版本为2.2.31的http镜像来运行容器:
强制删除本地镜像swarm :
查看运行中的容器:
查看所有的容器
进入容器的两种方法(使用版本为2.2.31的http镜像来运行容器):
使用镜像(busybox镜像)创建一个临时的容器:
使用镜像(busybox镜像)创建一个一直后台运行的容器:
暂停httpd:2.2.32运行中的容器:
开启httpd:2.2.32运行中的容器 :
重启httpd:2.2.32运行中的容器:
创建一个nginx的容器,设置这个容器的参数,当容器因某种错误而停止运行时,能自动重启:
恢复暂停httpd:2.2.32运行中的容器:
删除某一个已经不运行的容器:
批量删除所有已经退出的容器:
参考图片:以上图片均为博主本人进行的实验
参考文档:百度
有什么问题欢迎提出