Docker是一个能够把开发的应用程序自动部署到容器的开源引擎,基于客户端-服务器架构c/s,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 由下面这些组成:
1. Docker 服务器守护程序(server daemon),用于管理所有的容器。
2. Docker 命令行客户端,用于控制服务器守护程序。
3. Docker 镜像:查找和浏览 docker 容器镜像。
准备工作:
1.下载VM和centos7镜像
2.安装centos7
3.cd 进入vi /etc/sysconfig/network-scripts/ifcfg-eno**** 修改ip地址
4.onboot 改为 yes
在最后一行添加:
IPADDR=自己主机ipv6地址
GATWAY=自己主机的网关地址
修改完成后重启网络
service network restart
5.安装ifconfig功能
yum install net-tools.x86_64
6.xshell连接vm下的centos
开始安装Docker:
1.下载docker(可以省略)
rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2.安装docker
yum -y install docker-io
3.启动docker
service docker start
4.将docker加入开机启动
chkconfig docker on
基本信息查看
docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等
docker info :查看系统(docker)层面信息,包括管理的images, containers数等
镜像的获取与容器的使用
镜像可以看作是包含有某些软件的容器系统,比如centos就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,该镜像包含基本的centos系统
(1)搜索可用的centos的docker镜像
docker search
docker search centos
这样就可以搜索出在Docker Hub上所有带centos的公共的可用镜像
(2)下载centos镜像(拉取镜像)
docker pull centos:latest
查看镜像
docker images: 列出images
docker images -a :列出所有的images(包含历史)
docker images --tree :显示镜像的所有层(layer)
docker rmi
(3)启动一个容器
docker run -it centos /bin/bash
Docker允许启动一个伪tty终端,使用交互运行的方式启动一个容器,所用到的参数为:-t -i
centos为基础镜像,首先Docker会检查本地是否有centos镜像,如果没有就会连接官方维护的Docker Hub Regustry查看,一旦有就会下载该镜像并将其保存在本地宿主机中。
容器命名(名称必须唯一)
用上述方法启动容器,Docker会为我们创建的每一个容器自动生成一个随机的名字,如果想自己命名,可以用--name标志来实现。
sudo docker run --name Luffy -it centos /bin/bash
查看容器
docker ps :列出当前所有正在运行的container
docker ps -l :列出最近一次启动的container
docker ps -a :列出所有的container(包含历史,即运行过的container)
docker ps -q :列出最近一次运行的container ID
退出
exit
输入exit就可以返回到centos宿主机的命令行提示符了,一旦退出容器,/bin/bash命令也就结束了,容器也随之停止了运行。
再次启动容器
docker start/stop/restart
docker start [container_id] :再次运行某个container (包括历史container)
docker run -i -t
docker run -i -t -p
注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。
删除容器
docker rm
docker rm `docker ps -a -q` :删除所有的container
docker ps -a -q | xargs docker rm :同上, 删除所有的container
进入容器
docker attach ****(容器ID或名)
连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)容器的主机名就是该容器的ID
查看ip主机配置