容器是linux支持的
容器的隔离
chroot
:隔离分区cgroup
:隔离资源(CPU、内存)netns
:隔离网络
namespace
ipc
docker安装前提
3.0以后版本的内核
1 | [root@master ~]# uname -r |
实验环境
docker节点 | 机器域名 |
---|---|
控制节点 | master.pod0.example.com |
计算节点 | node.pod0.example.com |
master节点安装docker
1 | [root@foundation0 ~]# ssh root@master.pod0.example.com |
启动docker服务
1 | [root@master ~]# systemctl enable docker |
docker子命令不能tab补齐,安装bash命令补齐工具
1 | [root@master ~]# yum -y install bash-completion |
查看docker版本,docker是使用go语言写的
1 | [root@master ~]# docker version |
容器和镜像
需要先有镜像,docker所有的镜像都是分层的tar包,分层利于二次修改,底层镜像尽量使用厂商的镜像
镜像启动之后就是容器
docker的配置文件中修改docker仓库的地址
1 | [root@master ~]# vim /etc/sysconfig/docker |
在不使用证书加密的情况下,加入信任的地址
1 | INSECURE_REGISTRY='--insecure-registry workstation.pod0.example.com:5000' |
把docker官网加入黑名单,不到docker官网搜索镜像
1 | BLOCK_REGISTRY='--block-registry docker.io' |
修改配置文件后重启生效
1 | [root@master ~]# systemctl restart docker |
docker搜索镜像
1 | [root@master ~]# docker search rhel7 |
下载rhel7镜像
1 | [root@master ~]# docker pull rhel7 |
查看本地镜像
1 | [root@master ~]# docker images |
docker的工作目录
1 | [root@master ~]# cd /var/lib/docker/ |
docker启动后的临时文件在containers目录中
运行rhel7镜像,打开bash服务
1 | [root@master ~]# docker run -it rhel7 bash |
-i
:交互式界面-t
:打开一个命令行终端-d
:启动后放到后台运行
发现容器是一个独立的系统,有自己的根分区
查看启动的容器任务
1 | [root@master ~]# docker ps |
查看容器的进程列表
1 | [root@master ~]# docker top 7b34f87319b2 |
持久化存储需要挂载外部存储设备
停止和启动docker
1 | [root@master ~]# docker stop 7b34f87319b2 |
下载hello-openshift镜像,镜像里面有一个8080端口的jboss服务
1 | [root@master ~]# docker search hello |
启动hello-openshift镜像,把容器的8080端口映射到物理机的18080端口
1 | [root@master ~]# docker run -p 18080:8080 openshift/hello-openshift |
查看容器启动的进程,可以看到状况映射的状态
1 | [root@master ~]# docker ps |
查看容器的所有信息
1 | [root@master ~]# docker inspect 7ed43f0360a5 |
从容器的信息中查找容器的ip地址
1 | [root@master ~]# docker inspect 7ed43f0360a5 |grep -iw ipaddress |
访问容器里面的服务
1 | [root@master ~]# curl http://172.17.0.3:8080 |
安装完docker后自动生成一个docker的虚拟网卡,相当于一个虚拟交换机
1 | [root@master ~]# ifconfig docker0 |
访问本机的18080端口效果是一样的,这就是docker端口映射
1 | [root@master ~]# curl http://master.pod0.example.com:18080 |
查看所有的容器,包含停止运行的容器
1 | [root@master ~]# docker ps -a |
删除容器
1 | [root@master ~]# docker stop 16cf4aa41625 |
删除镜像
1 | REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE |
把下载的镜像标准输出到tar包
1 | [root@master ~]# docker save 0f7a086fa28f > hello-openshift.tar |