孤独海岸线 发表于 2018-5-26 06:42:24

docker安装,镜像、容器管理

  Docker介绍
  官网 www.docker.com
github https://github.com/docker/docker.github.io
开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的linux发行版上,移植很方便
由go语言编写,基于apache2.0协议发布
基于linux kernel,要想在win 运行需要借助一个vm(虚拟机)来实现
  Docker与传统的虚拟化比较


  Docker的优势
  启动非常快,秒级实现
资源利用率高,一台高配置服务器可以跑上千个docker容器
更快的交付和部署,一次创建和配置后,可以在传任意地方运行
内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率
易迁移,平台依赖性不强




特性
容器
虚拟机




启动
秒级
分钟级


硬盘使用
一般为MB
一般为GB


性能
接近原生
弱于


系统支持量
单机支持上千个容器
一般几十个


  Docker核心概念


[*]镜像,是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署
[*]容器,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。
[*]仓库,存放镜像的一个场所,仓库分为公开仓库和私有仓库。最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com).
  Docker安装
  Docker下载与安装

# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
# yum install docker-ce -y
  查看docker-ce的版本

# yum list docker-ce.x86_64--showduplicates | sort -r
  安装指定版本的docker-ce

# yum install docker-ce-<version>
  启动docker,查看进程

# systemctl start docker.service

  启动后,会自动生成一些防火墙规则
  镜像管理
  拉取 centos 镜像

# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
469cfcc7a4b3: Pull complete
Digest: sha256:bc494daa9d9ad7e37f93236fbd2c3f372739997c6336ef3c321e227f336e73d3
Status: Downloaded newer image for centos:latest
  配置docker加速器
  阿里云加速器
  登录地址https://dev.aliyun.com/search.html 注册一个账号
点击“创建我的容器镜像”--->镜像加速器

按照上面的配置即可。
  DaoCloud加速器
  登入到 https://www.daocloud.io/mirror#accelerator-doc 注册账号

  查看本地的镜像

# docker images
REPOSITORY          TAG               IMAGE ID            CREATED             SIZE
centos            latest            e934aafc2206      5 hours ago         199MB
  搜索镜像

# docker search keywords // 例如搜索jumpserver
# docker search jumpserver
  给镜像打标签

# docker tag centos apeng_centos
# docker images
REPOSITORY          TAG               IMAGE ID            CREATED             SIZE
apeng_centos      latest            e934aafc2206      6 hours ago         199MB
centos            latest            e934aafc2206      6 hours ago         199MB
ubuntu            latest            f975c5035748      4 weeks ago         112MB

  将镜像启动为容器


  -i 表示容器的标准输入打开
-t 表示分配的伪终端
-d 表示后台启动

  查看启动状态的容器,加上-a 选项可查看所有的容器

# docker ps
CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS               NAMES
a8dfe32a2be7      centos            "/bin/bash"         2 minutes ago       Up 2 minutes                            eloquent_wing
  删除镜像


# docker rmi aming_centos:235123
Untagged: aming_centos:235123
  通过容器创建镜像
  镜像启动为容器之后,进入一个启动的容器

  docker exec CONTAINER COMMAND


//拉取下来的centos系统大小很小,需要的软件自己安装
# docker exec -it a8dfe32a2 /bin/bash
# ifconfig
bash: ifconfig: command not found
# yum install net-tools -y
  通过容器创建由自己定义环境的镜像

# docker commit -m "install_net-tools" -a "author:apeng" a8dfe32a2be7 new_centos
  此时系统会产生一个new_cnetos的镜像

  通过 docker build 创建一个基于centos的httpd web服务器镜像
  创建工作目录,创建Dockerfile文件

# mkdir /docker-build
# touch /docker-build/Dockerfile
  编辑Dockerfile

FROM centos
MAINTAINER user1 <user1@163.com>
RUN yum -y install httpd
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html
  创建start.sh和index.html

# cd /docker-build/
# echo "/usr/sbin/httpd -DFOREGROUND" > start.sh
# chmod a+x start.sh
# echo "docker image build test" > index.html

  使用命令build来创建新的image

# docker build -t centos:httpd .

  将镜像导出为tar包

# docker save -o /opt/docker-centos-httpd.tar centos:httpd
  将tar包导入为本地镜像

# docker load -i /opt/docker-centos-httpd.tar
  容器端口映射
  将镜像centos:httpd运行为容器,将80端口映射到本机的9000,启动httpd

# docker run -d -p 9000:80 centos:httpd /bin/sh -c /usr/local/bin/start.sh
  查看端口

# netstat -tlnp|grep 9000
tcp6       0      0 :::9000               :::*                  LISTEN      13774/docker-proxy
  在浏览器中访问容器的httpd服务的主页

  在容器中添加test1.html

# docker exec -it e5fcdc897c58 /bin/bash
# echo "docker image test1 successful" > /var/www/html/test1.html
  在浏览器中访问test1.html
页: [1]
查看完整版本: docker安装,镜像、容器管理