1.安装Docker
准备两台虚拟机,IP为192.168.1.10和192.168.1.20
安装docker-engine 和 docker-engine-selinux
关闭防火墙
 
**************************************
配置两台虚拟机:
 
创建两台虚拟机后端盘:
images] qemu-img create -f qcow2 -b node.qcow2 docker1.img 50G
images] qemu-img create -f qcow2 -b node.qcow2 docker2.img 50G
 
创建img:
删除node.xml里面所有的^mac*,^address*的行
qemu] sed 's,node,docker1,' node.xml > docker1.xml
qemu] sed 's,node,docker2,' node.xml > docker2.xml
 
创建虚拟机:
qemu] virsh define docker1.xml 
qemu] virsh define docker2.xml
 
添加网卡:(每个都添加第二张网卡)
添加硬件--网络(private1,型号 virtio)--保存    
 
登陆docker1/2
] ssh -X root@192.168.1.140
 
]# lsblk(有50G)
]# export LANG=en_US
]# growpart /dev/vda 1 (lsblk 2G-50G)
]# xfs_growfs /    (df -h 2G-50G)
 
配置DNS:
查看真机器
]# cat /etc/resolv.conf 
# Generated by NetworkManager
search tedu.cn
nameserver 176.233.0.227
虚拟机:
]# vim /etc/resolv.conf 
nameserver 176.233.0.227
测试
]# ping www.baidu.com
**************************************
 
1.1 配置yum源
 
1)配置第三方yum源(真机操作)
]# mkdir /var/ftp/docker
]# mv docker-engine-* /var/ftp/docker
]# ls /var/ftp/docker
docker-engine-1.12.1-1.el7.centos.x86_64.rpm
docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm
 
]# createrepo /var/ftp/docker/
 
2)配置IP(虚拟机配置静态ip)docker1和docker2主机同样操作
]# echo docker1 > /etc/hostname 
]# hostname docker1
]# echo docker2 > /etc/hostname 
]# hostname docker2
 
docker1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.10"
PREFIX=24
GATEWAY=192.168.1.254
docker1 ~]# systemctl restart network
 
docker2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.20"
PREFIX=24
GATEWAY=192.168.1.254
docker2 ~]# systemctl restart network
 
3)配置yum客户端(docker1和docker2主机同样操作)
docker1 ~]# vim /etc/yum.repos.d/local.repo 
[local_repo]
name=CentOS-$releasever - Base
enabled=1
gpgcheck=0
[loca]
name=local
enabled=1
gpgcheck=0
 
docker2 ~]# vim /etc/yum.repos.d/local.repo 
[local_repo]
name=CentOS-$releasever - Base
enabled=1
gpgcheck=0
[loca]
name=local
enabled=1
gpgcheck=0
 
4)安装docker(docker1和docker2主机同样操作)
]# yum -y install docker-engine
]# systemctl restart docker
]# systemctl enable docker
]# ifconfig     //有docker0说明环境部署完成
docker0: flags=4099  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0 ...
 
]# docker version  //查看版本
 
2.镜像基本操作
 
导入镜像
导出镜像
启动镜像
 
2.1 docker镜像
]# docker images 查看镜像
1)下载镜像
docker1 ~]# docker pull busybox
2)上传镜像
docker1 ~]# docker push busybox
3)查看镜像
docker1 ~]# docker images
4)查找busybox镜像
docker1 ~]# docker search busybox
5)导出busybox镜像为busybox.tar
docker1 ~]# docker save busybox:latest >busybox.tar
docker1 ~]# ls
busybox.tar  
6)导入镜像
docker1 ~]# scp busybox.tar 192.168.1.20:/root
docker2 ~]# ls
busybox.tar  
docker2 ~]# docker load < busybox.tar
7)删除镜像
docker2 ~]# docker rmi busybox
 
2.2 一次性导入多个镜像
docker1 ~]# yum -y install unzip
docker1 ~]# unzip docker_images.zip 
docker1 ~]# ls
busybox.tar  docker_images  docker_images.zip  eip
docker1 ~]# cd docker_images
images]# ls
centos.tar  nginx.tar redis.tar registry.tar  ubuntu.tar
images]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              e1ddd7948a1c        4 weeks ago         1.163 MB
images]# for i in *; do docker load <$i; done
 
2.3 启动镜像
 
1)启动centos镜像生成一个容器
启动镜像时若不知道后面的命令加什么:
1、可以猜(如:/bin/bash、/bin/sh)
2、可以不加后面的命令,默认启动
docker run -it 镜像的名称:标签 命令(容器内的命令)
images]# docker run -it centos [/bin/bash]
 
容器内:
a9f /]# ls /
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
a9f /]# cd /etc/yum.repos.d/
repos.d]# ls
repos.d]# rm -rf C*
repos.d]# vi dvd.repo    //在容器里面配置一个yum源
[local]
name=local
enable=1
gpgcheck=0
repos.d]# yum -y install net-tools  //安装软件
repos.d]# ifconfig
...inet 172.17.0.2 
repos.d]# exit
exit
 
3.镜像与容器常用指令
镜像常用指令练习
容器常用指令练习
 
3.1 镜像常用命令
 
images]# docker run -it xxx:latest (默认的)
 
1)查看后台运行的容器
docker1 ~]# docker run -d nginx  //启动nginx的镜像
docker1 ~]# docker ps   //查看后台运行的容器
CONTAINER ID   IMAGE    COMMAND                  CREATED          STATUS          PORTS             NAMES
190224dc6c10   nginx    "nginx -g 'daemon off"   21 seconds ago   Up 18 seconds   80/tcp, 443/tcp   furious_pike
 
2)只显示容器ID
images]# docker ps -q
190224dc6c10
 
3)显示所有的容器,包括没有启动的
images]# docker ps -a(all)
 
4)显示所有的容器ID
images]# docker ps -qa
190224dc6c10
aaea21554cd7
 
5)查看centos镜像历史(有几层)
images]# docker history centos
 
6) 查看镜像详细信息
images]# docker inspect centos
Cmd...(默认启动命令)
Env...启动镜像以后,设置启动的变量
 
7)删除镜像,如果用镜像启动过容器,删除镜像会失败,先删除容器,再删除镜像
格式:docker rmi 镜像名
images]# docker rmi nginx  //nginx为镜像名
Error...删除时报错
 
停止容器
images]# docker stop 190224dc6c10
删除容器
images]# docker rm 190224dc6c10
删除镜像
images]# docker rmi nginx
Deleted: ...
 
8)修改镜像的名称和标签,默认标签为latest
images]# docker tag centos:latest cen:v1
 
9)修改镜像的标签
images]# docker tag centos:latest cen:v1 
images]# docker images
images]# docker rmi centos    //删除centos
 
images]# docker run -it centos   
... Downloaded newer image for centos:latest
//启动的时候,因为是用标签标签启动的,所以会重新通过ID下载
images]# docker run -it cen:v1   
//通过新建的标签启动cen:v1,进入容器
 
3.2 容器命令
 
1)关闭容器
命令:docker stop 容器ID
images]# docker stop c7b20c544668
 
2)启动容器
images]# docker start c7b20c544668
 
3)重启容器
images]# docker restart c7b20c544668
 
4)删除容器
运行中删除不掉,先关闭容器 0f为容器ID
images]# docker rm 0f     //删除失败
images]# docker stop 0f   //关闭容器
images]# docker rm 0f     //删除成功
 
5)连接容器 attach(退出时,容器关闭) | exec(退出时,容器不关闭)
images]# docker attach c7b20c544668
images]# docker ps     //容器关闭
 
images]# docker exec -it 0f /bin/bash
images]# docker ps        //容器不会关闭
 
images]# docker top $(docker ps -aq)      //查看容器进程列表 
images]# docker run -itd centos:latest
images]# ps
 
images]# docker exec -it 3e1ec9ddcbea /bin/bash
root@85c6b0b62235:/# sleep 50 &
[1] 9
root@85c6b0b62235:/# exit
exit
images]#docker top 85
UID    PID  PPID C   STIME     TTY         TIME      CMD
root  2744 2729  0   18:01    pts/4  00:00:00   /bin/bash
 
6)过滤查看mac和ip地址
images]# docker inspect -f '{{.NetworkSettings.MacAddress}}' 3e1ec9ddcbea
02:42:ac:11:00:03
images]# docker inspect -f '{{.NetworkSettings.IPAddress}}' 3e1ec9ddcbea
172.17.0.3
 
7)修改nginx的显示内容
images]# docker run -it nginx:latest 
images]# docker exec -it 56 /bin/bash
8e0:/# nginx -T /usr/share/nginx/html/
nginx: invalid option: "/usr/share/nginx/html/"   //查找并显示结果
8e0:/# echo  aaa > /usr/share/nginx/html/index.html 
 
//修改主页显示的内容
root@56ec8154f8e0:/# nginx -T
root@56ec8154f8e0:/# cat /usr/share/nginx/html/index.html 
aaa
 
8)过滤查看nginx的ip地址
docker1 ~]# docker inspect -f '{{.NetworkSettings.IPAddress}}' 3e1ec9ddcbea
172.17.0.2
docker1 ~]# curl 172.17.0.2
aaa
 
#################################
总结:
 
1.容器技术,Docker是实现容器技术的一种手段。
对资源切分和利用的手段,核心手段是:
资源管理(Cgroups)、进程隔离(NameSpace)、SELinux安全,让用户更加方便的使用容器技术,而不关心底层内核技术。
 
2.Docker优点
虚拟机里启动虚拟机为什么性能很差,因为新启动的虚拟机CPU不能支持VMX硬件虚拟化技术,使用容器技术可以解决这一问题。
Docker使用的宿主机共享公共库和程序。
 
3.Docker缺点
容器的隔离性没有虚拟化强;功用Linux内核,安全性差;SELinux难以驾驭;容器监控和排错难度大(弹性)。
 
4.镜像与容器
镜像==模板(后端盘)
容器==虚拟机(img,xml都是docker管理)
 
docker镜像采用分层设计,利用后端盘映射前端盘,叠加前端盘为镜像,再创建(多个)前端盘,使用快照的COW技术,确保底层数据不丢失。
 
Docker镜像仓库:https://hub.docker.com
镜像的唯一性:镜像+标签
 
5.docker run 注意事项
ducker run -it 启动的是交互式进程(如: /bin/bash)
ducker run -itd 启动的是进程(如: nginx,redis)
docker attach/exec 是针对ducker run -itd 这种启动的是进程的容器设置的
###########################

五十三.Docker概述、部署Docker、Docker镜像、Docker基本命令的更多相关文章

  1. mac和linux下使用Docker,部署SpringBoot项目到docker

    主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等. 我用的电脑是mac, ...

  2. 五十一.Openstack概述 部署安装环境 、 部署Openstack OpenStack操作基础

    虚拟化技术的底层构成: 内核的虚拟化模块(KVM):从内核集去提供虚拟化及CPU指令集的支持,要求CPU支持,(CPU有VMX指令集)   硬件仿真层(QEMU):虚拟一些周边设备,鼠标.键盘.网卡. ...

  3. 01 . Docker原理部署及常用操作命令

    Docker的来源及构造: 容器是一种基础工具:泛指任何用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳,储存,运输物品: 物品可以被放置在容器中,而容器可以保护内容物: 人类使用容器的历史有十 ...

  4. 使用Docker 一键部署 LNMP+Redis 环境

    使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...

  5. Idea连接服务器docker并部署代码到docker实现一键启动

    好记性不如烂笔头,写笔记是为了回头看的. 谁要是不小心搜了看了,如有不足之处敬请谅解. 一.准备工作 虚拟机centos7.X,docker1.3.X,Win10 Idea2018.1 默认Idea已 ...

  6. docker(部署常见应用):docker部署redis

    上节回顾:docker(部署常见应用):docker部署mysql docker部署redis:4.0 # 下载镜像 docker pull redis:4.0 # 查看下载镜像 docker ima ...

  7. centos下docker离线部署

    安装准备 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 环境要求 Centos 安装包下载地址 安装包下载以下 ...

  8. docker下部署服务

    一.zabbix部署 需求: 因最近项目过多,人力监控耗费时间,打算部署一个zabbix,但又不想部署在宿主机上,就想起了docker,docker快速的移植性是最大的亮点,好了,言归正传开始干. 部 ...

  9. Centos7部署FytSoa项目至Docker——第三步:部署程序

    FytSoa项目地址:https://gitee.com/feiyit/FytSoaCms 部署完成地址:http://82.156.127.60:8000/ 我买的是一年99标准型SA2云服务器 购 ...

  10. 【docker】【mysql】docker安装mysql,阿里云docker镜像加速器,docker搜索查看远程仓库上的镜像,docker拉取镜像,查看本地所有镜像,查看容器的运行状况,查看容器的详细信息

    在docker上安装mysql有两种方式 1.通过Dockerfile构建 2.直接在docker hub上拉取镜像安装 =================本篇采用方法2=============== ...

随机推荐

  1. SpringBoot exception异常处理机制源码解析

    一.Spring Boot默认的异常处理机制 1:浏览器默认返回效果 2:原理解析 为了便于源码跟踪解析,在·Controller中手动设置异常. @RequestMapping(value=&quo ...

  2. Unity塔防游戏的创建

    看了下塔防游戏的教程,比我想像的还简单一些,有些收获: (1)敌人的移动路径,其时比较简单,用了N个Empty GameObject作为路径点,然后做一个总的Empty GameObject 作为父级 ...

  3. c++-01--迭代器

    迭代器的概念 除了在其它语言中司空见惯的下标法访问容器元素之外,C++ 语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素.迭代器其实类似于引用,指向容器中某一元素.迭代器(ite ...

  4. LINUX安装Tree软件包

     1.将镜像光盘放入光驱中 查看当前LINUX版本号:cat  /etc/redhat-release 2.挂载镜像文件 mount  /dev/cdrom /mnt mount :挂载设备命令 /d ...

  5. 为什么需要 RPC 服务?

    链接:https://www.jianshu.com/p/362880b635f0 在传统的开发模式中,我们通常将系统的各个服务部署在单台机器,随着服务的扩展,这种方式已经完全无法满足系统大规模的扩展 ...

  6. Docker pull下载出现 error pulling image configuration:

    出现这个问题,并且在错误信息的最后附带 net/http: TLS handshake timeout: 猜测是docker的相关配置问题,导致无法通过TLS握手 执行如下命令修改配置 echo &q ...

  7. Computer Vision_33_SIFT:SIFTflow Dense Correspondence across Scenes and its Applications——2011

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  8. 你应该使用Python3里的这些新特性

    概述 由于Python2的官方维护期即将结束,越来越多的Python项目从Python2切换到了Python3.可是,在实际的工作中,我发现好多人都是在用Python2的思维去写Python3的代码, ...

  9. 【JavaWeb】通过邮件找回密码

    前言 本文将介绍忘记密码时通过发送重置密码邮件找回密码的实现思路.整个实现过程中最重要的就是以下三点: 如何发送邮件到用户指定邮箱 邮件中的重置密码链接构成是怎么样的 验证重置密码链接的合法性(是否过 ...

  10. 02.python网络爬虫第二弹(http和https协议)

    一.HTTP协议 1.官方概念: HTTP协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(www.world wide web) 服务器传输超 ...