容器是一套完整的管理系统
容器技术的核心有以下几个内核技术组成:
1 CGroups(Control Groups)-资源管理
2 NameSpace-进程隔离
3 SELinux安全
由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速
docker 采用连层设计,
安装docker
准备环境:
创建前端盘
[root@localhost ~] cd /var/lib/libvirt/images
[root@localhost images]# qemu-img create -b .node.qcow2 -f docker.img 50G
[root@localhost images]# qemu-img create -b .node.qcow2 -f qcow2 docker.img 50G
[root@localhost images]# qemu-img create -b .node.qcow2 -f qcow2 docker2.img 50G
[root@localhost images]#
创建xml文件
[root@localhost qemu]# vim docker.xml
<domain type='kvm'>
<name>docker</name>
<memory unit='KiB'>4096000</memory>
<currentMemory unit='KiB'>4096000</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='yes'/>
<bios useserial='yes'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough' check='none'/>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/docker.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<controller type='usb' index='0' model='piix3-uhci'>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='virtio-serial' index='0'>
</controller>
<interface type='bridge'>
<source bridge='vbr'/>
<model type='virtio'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<memballoon model='virtio'>
</memballoon>
</devices>
</domain>
[root@localhost qemu]# vim docker1.xml
同docker.xml
导入xml文件
[root@localhost qemu]# virsh define docker1.xml
[root@localhost qemu]# virsh define docker.xml
[root@localhost qemu]#
开启虚拟机
[root@localhost qemu]# virsh start docker --console
配置静态ip地址:/etc/sysconfig/network-scripts/ifcfg-eth0
[root@docker ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.5.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.5.254"
[root@docker ~]#
配置 yum源:/etc/yum.repos.d/docker.repo
[root@docker ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=centos7
baseurl=ftp://192.168.5.254/CentOS7
enabled=1
gpgcheck=0
[local_docker]
name=centos7 docker
baseurl=ftp://192.168.5.254/docker
enabled=1
gpgcheck=0
[root@docker ~]#
安装 docker
[root@docker ~]# systemctl stop firewalld #//关闭防火墙
[root@docker ~]# systemctl mask firewalld #//删除防火墙
[root@docker ~]# sed -i 's/SELIUX=//' /etc/selinux/config
[root@docker ~]# sestatus #//禁用防火墙
[root@docker ~]# yum -y install docker-engine
设置开机自启动
[root@docker ~]# systemctl enable docker
重启虚拟机
[root@docker ~]# reboot
[root@docker ~]# ifconfig
说明:会多出一个docker0的ip地址
常用的docke镜像操作命令
docker镜像操作
– docker history //查看镜像制作历叱
– docker search //搜索镜像
– docker tag //修改镜像名称和标签
[root@docker ~]# docker version #//查看版本
查看镜像列表
格式:docker images
[root@docker ~]# docker images #//查看镜像
搜索镜像
格式:docker search 镜像名
[root@docker ~]# docker search mysql #//搜索镜像mysql
下载镜像
格式:docker pull 镜像名
[root@docker ~]# docker pull busybox #//下载封装镜像(工作常用busybox镜像)
上传镜像
格式: docker push 镜像名
使用tar包导入镜像
格式:docker load < tar包镜像文件名
[root@docker ~]# docker load < mysql.tar
[root@docker ~]# docker images
镜像另存为tar包
格式:docker save 镜像名称:标签 > 路径/文件名
[root@docker ~]# docker save busybox:latest > busybox.tar #//导出镜像,“latest”是docker images 中查到的TAG格式
[root@docker ~]# ls
busybox.tar
查看镜像底层信息
格式:docker inspect 镜像名:标签
删除本地镜像
docker rmi 镜像名
[root@docker ~]# docker rmi busybox #//删除docker 镜像
删除镜像
docker rmi 镜像名称:标签
创建镜像别名
docker tag 源镜像名称:标签 新名称:新标签
导入镜像
[root@docker ~]# lftp 192.168.5.254
lftp 192.168.5.254:~> ls
drwxr-xr-x 8 0 0 2048 Sep 05 2017 CentOS7
drwxr-xr-x 3 0 0 4096 Jul 24 02:13 docker
lftp 192.168.5.254:/> cd docker/
lftp 192.168.5.254:/docker> ls
-rw-r--r-- 1 0 0 19917380 Jul 24 02:12 docker-engine-1.12.1-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 0 0 28860 Jul 24 02:12 docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm
-rw-r--r-- 1 0 0 258246973 Jul 24 02:12 docker_images.zip
drwxr-xr-x 2 0 0 4096 Jul 24 02:13 repodata
###############下载
lftp 192.168.5.254:/docker> get docker_images.zip
258246973 bytes transferred
lftp 192.168.5.254:/docker> exit
[root@docker ~]# ls
busybox.tar docker_images.zip ifcfg-eth0 RPM-GPG-KEY-CentOS-7
[root@docker ~]# yum -y install unzip
[root@docker ~]# unzip docker_images.zip
Archive: docker_images.zip
creating: docker_images/
inflating: docker_images/nginx.tar
inflating: docker_images/redis.tar
inflating: docker_images/centos.tar
inflating: docker_images/registry.tar
inflating: docker_images/ubuntu.tar
[root@docker ~]# ls
busybox.tar docker_images docker_images.zip ifcfg-eth0 RPM-GPG-KEY-CentOS-7
[root@docker ~]# cd docker_images/
[root@docker docker_images]# ls
centos.tar nginx.tar redis.tar registry.tar ubuntu.tar
[root@docker docker_images]# for i in *.tar
> do
> docker load < $i
> done
43e653f84b79: Loading layer 207.2 MB/207.2 MB
Loaded image: centos:latest
142a601d9793: Loading layer 128.9 MB/128.9 MB
40e298e9673a: Loading layer 60.57 MB/60.57 MB
8d8bfe3cd5e4: Loading layer 3.584 kB/3.584 kB
Loaded image: nginx:latest
1cc8aacad4a1: Loading layer 344.6 kB/344.6 kB
40ef78f2da08: Loading layer 41.21 MB/41.21 MB
652c8a715c4f: Loading layer 2.703 MB/2.703 MB
fa4e25f53e04: Loading layer 16.46 MB/16.46 MB
c215f3ad270b: Loading layer 1.536 kB/1.536 kB
644be81b61f9: Loading layer 3.584 kB/3.584 kB
Loaded image: redis:latest
e53f74215d12: Loading layer 5.06 MB/5.06 MB
febf19f93653: Loading layer 7.894 MB/7.894 MB
59e80739ed3f: Loading layer 22.79 MB/22.79 MB
621c2399d41a: Loading layer 3.584 kB/3.584 kB
9113493eaae1: Loading layer 2.048 kB/2.048 kB
Loaded image: registry:latest
65bdd50ee76a: Loading layer 82.09 MB/82.09 MB
ec75999a0cb1: Loading layer 15.87 kB/15.87 kB
67885e448177: Loading layer 8.192 kB/8.192 kB
8db5f072feec: Loading layer 5.632 kB/5.632 kB
059ad60bcacf: Loading layer 3.072 kB/3.072 kB
Loaded image: ubuntu:latest
[root@docker docker_images]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 22c2dd5ee85d 7 days ago 1.163 MB
ubuntu latest 452a96d81c30 12 weeks ago 79.62 MB
centos latest e934aafc2206 3 months ago 198.6 MB
registry latest d1fd7d86a825 6 months ago 33.26 MB
nginx latest a5311a310510 21 months ago 181.4 MB
redis latest 1aa84b1b434e 22 months ago 182.8 MB
[root@docker docker_images]#
启用docker容器
docker run -it 镜像的名字:标签 镜像里面的命令
说明:-i 交互式 -t 终端 -d 后台终端
启动一个交互式的终端 /bin/bash /usr/bin/python
docker run -it centos /bin/bash
docker run -it centos /usr/bin/python
启动一个非交互式的的终端 nginex
docker run -
docker容器命令操作
[root@docker ~]# docker run busybox(id) //运行容器busybox
[root@docker ~]# docker ps busybox //查看容器列表busybox
[root@docker ~]# docker stop busybox //关闭容器busybox
[root@docker ~]# docker start busybox //启动容器busybox
[root@docker ~]# docker restart busybox //重启容器busybox
[root@docker ~]# docker attach|exec busybox //进入容器busybox
[root@docker ~]# docker inspect busybox //查看容器底层信息busybox
[root@docker ~]# docker top busybox //查看容器进程列表busybox
[root@docker ~]# docker rm busybox //删除容器busybox
说明: