1、docker介绍
Docker是PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。
Docker是通过内核虚拟化技术(namespace以及cgroups等)来提供容器的资源隔离与安全保障。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机( VM)额外的操作系统开销,提高资源利用率。
组件:容器,镜像,仓库
用途:简单配置、代码流水线管理、开发效率、应用隔离、服务器整合、调试能力、多租户、快速部署
docker改变了什么?
面向产品:产品交付
面向开发:简化配置环境
面向测试:多版本测试
面向运维:环境一致性
面向架构:自动化扩容
2、docker部署
yum install docker systemctl start docker systemctl enable docker
查看docker信息
[root@izwz99hcysthbz36uveqfvz ~]# docker info
搜索docker镜像
[root@izwz99hcysthbz36uveqfvz ~]# docker search centos(镜像名称)
查看镜像(docker images信息包括:镜像仓库、标签、镜像ID、创建时间、大小)
[root@izwz99hcysthbz36uveqfvz ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 9f38484d220f 5 days ago 202 MB
删除镜像
[root@izwz99hcysthbz36uveqfvz ~]# docker rmi centos(镜像名称)
镜像的导出、导入和下载
[root@izwz99hcysthbz36uveqfvz ~]# docker pull centos(镜像名称) [root@izwz99hcysthbz36uveqfvz ~]# docker save centos > /opt/centos.tar.gz 将linux-node2的镜像导出文件上传到linux-node1机器上,然后在linux-node1机器上导入 [root@izwz99hcysthbz36uveqfvz ~]# docker load < /opt/centos.tar.gz
首次创建一个容器
[root@linux-node4 ~]# docker run centos /bin/echo "hehe" hehe
查看容器状态
可以使用docker ps只能看见存活的容器,docker ps -a 查看全部的容器,结果信息表示:
容器ID、使用的镜像、执行的命令、创建的时间、状态、端口、名称(如果不指定,自动生成)
[root@izwz99hcysthbz36uveqfvz ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49a3dd40f0a1 centos "/bin/echo hehe" 7 seconds ago Exited (0) 6 seconds ago inspiring_mirzakhani
创建容器
--name:指定容器名称
-t:分配一个tty终端
-i:容器的标准输入保持打开的状态
[root@izwz99hcysthbz36uveqfvz ~]# docker run --name mydocker -t -i centos /bin/bash [root@405fa58d00f9 /]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.2 0.1 11820 1884 ? Ss 07:40 0:00 /bin/bash root 14 0.0 0.0 51740 1736 ? R+ 07:40 0:00 ps aux
这种方式创建自动进入容器,开启的容器只执行/bin/bash
启动、停止容器
[root@izwz99hcysthbz36uveqfvz ~]# docker start ID
[root@izwz99hcysthbz36uveqfvz ~]# docker stop ID
进入容器
[root@izwz99hcysthbz36uveqfvz ~]# docker attach 405fa58d00f9
[root@405fa58d00f9 /]#
删除容器
[root@izwz99hcysthbz36uveqfvz ~]# docker rm ID