1、Docker容器部署及基础
1、Docker入门简介 Docker技术类似码头上看到的集装箱,最早集装箱没有出现的时候,码头上有许多搬运的工人在搬运货物,有了集装箱以后,搬运货物变得简单,通过集装箱的搬运模式更加单一、高效,将货物打包在集装箱里面,可以复制货物之间相互影响。 如果要将货物搬运到另一个码头就需要装运,通过集装箱,可以直接把它们运送到另一个航舱内,而且完全可以保证里面的货物是整体地搬迁,而不会损坏货物本身。 而Docker虚拟化正是基于类似的原理,将原本复杂的环境打包成为镜像模块,然后将模块迁移到各个平台,可以快速地交付使用,从而减少了人工大量的干预。 Docker是一个开源的应用容器引擎,开发者使用打包他们的应用以及依赖包到一个可移植的容器中,然后发布到如何流行的Linux机器上,进而实现虚拟化。 容器是完全使用沙箱机制的,而且互相之间不会有如何接口,几乎没有性能开销,可以很容易地在机器和数据中心运行,最重要的是,他们不依赖于如何语言、框架或包括系统。 Docker虚拟化和传统虚拟机(KVM、Xen等)方式的不同之处在于Docker虚拟化可以在操作系统层面上直接实现App或者虚拟化,直接复用本地机器的操作系统,而传统方式则需要在硬件的基础上,虚拟GurstOS操作系统,然后在GuestOS操作系统上部署相关的App应用。
Docker虚拟化实施有以下三个概念:
本地导入镜像:
格式:cat 本地容器快照名 | docker import-自定义容器名:自定义标记名 docker version
:查看Docker版本
docker info
:查看当前信息
docker search -s 500 nginx
:搜索星级为500以上的镜像
docker pull docker.io/nginx
:下载nginx镜像
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
- Docker镜像:Docker镜像是一个静态模块,与常见的ISO镜像类似,是一个样板,不能直接修改,可以通过封装生成;
- Docker容器:基于Docker镜像运行启动的应用或系统,称之为一个Docker容器或Docker虚拟机;
- Docker仓库:Docker仓库是存放Docker镜像的地方,常见分为公开仓库和私有仓库两种形式;
- 操作启动快,运行时的性能可以获取极大提升,管理操作(启动、停止、开启、重启等)都是以秒或毫秒为单位的;
- 轻量级虚拟化,用户会拥有足够的“操作系统”,仅需添加或减小镜像即可,单台服务器上可以部署100~1000个containers容器,而传统虚拟化能虚拟10~20个虚拟机就非常不错了;
- 开源免费,成本低,由现代Linux内核支持并驱动;
- 前景及云支持,正在越来越受欢迎,各大主流公司都在推动Docker的快速交付;
- 更简单的管理,使用Docker只需要小小的修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理;
- 镜像分层:每个镜像都由一个或多个镜像层组成;
- 可通过在某个镜像上加上一定的镜像层得到新镜像(此过程可以通过编写DockerFile或基于容器Commit实现);
- 每个镜像层拥有唯一镜像ID;
- 镜像在存储和使用时共享相同的镜像层(根据ID),所以在Pull镜像时,已有的镜像层会在自动跳过下载;
- 每个镜像层都是只读的,即使启动成容器,也无法对其真正的修改,修改只会作用于最上层的容器层。
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config setenforce 0 yum -y install epel-release yum -y install docker* systemctl start docker.service报错: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. 解决办法: vi /etc/sysconfig/docker

systemctl start docker.service
systemctl enable docker.service
ps -ef |grep docker
Docker下载加速,默认docker下载是从国外去下载,但是下载速度慢,所有我们 这边使用国内的:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://registry.docker-cn.com", "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com" ] } EOF systemctl restart docker6、Dockers必备命令 公共仓库Nginx和CentOS镜像下载以及本地导入CentOS镜像,执行如下命令 docker pull centos :Docker下载CentOS镜像

docker pull nginx :Docker下载Nginx镜像



docker search centos :搜索可用Docker镜像



docker images :查看当前Docker所有镜像

启动Docker镜像:
-i:表示交互输入 -t:表示打开终端 -d:表示后台启动 docker run -i -t centos /bin/bash
进入Docker容器:
docker exec -it a9ca644fd04f /bin/bash :红色部分是容器的ID退出Docker容器:
(1)exit或者ctrl+d :退出并停止容器 (2)先按ctrl+p再按ctrl+q :退出伪终端,容器后台运行 docker ps :查看容器,-l获得最后一个容器的ID,-a查看所有的容器docker start id :启动Docker容器,可以利用docker ps查看容器,然后输入iD
docker stop id :关闭Docker容器
docker save -o centos-7.2.tar centos:latest :存储镜像
docker rm id :删除Docker容器,如果删除多个容器则需要使用空格隔离即可~!
docker rmi id :删除Dokcer镜像
docker load < centos-7.2.tar :导入容器快照
docker export -o centos-7.2.test.tar container_id :Docker导出镜像
cat centos-7.2.test.tar | docker import - centos-7.2.test :本地导入Docker镜像,红色为镜像名,需要自定义
docker run -p 5500:80 -it nginx /bin/bash :将宿主机5500端口映射给容器的80端口
nginx :启动nginx服务图片显示
进入Docker容器:
docker exec -it a9ca644fd04f /bin/bash :红色部分是容器的ID

更多精彩