创建docker容器

容器是一套完整的管理系统

容器技术的核心有以下几个内核技术组成:
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

说明:

猜你喜欢

转载自blog.csdn.net/yuefei169/article/details/81178416
今日推荐