Docker由三大部分组成

基础镜像---->中间件---->最后生成应用镜像
一个镜像可以给多个进程使用!

Docker是什么

Docker是一个改进的容器技术。具体的“改进”体现在,Docker为容器引入了镜像,使得容器可以从预先定义好的模版(images)创建出来,并且这个模版还是分层的。

Docker的特性:

  • 轻量

  • 快速

  • 隔离

Docker技术的基础:

  • namespace,容器隔离的基础,保证A容器看不到B容器. 6个名空间:User,Mnt,Network,UTS,IPC,Pid

  • cgroups,容器资源统计和隔离。主要用到的cgroups子系统:cpu,blkio,device,freezer,memory

  • unionfs,典型:aufs/overlayfs,分层镜像实现的基础

Docker组件:

  • docker Client客户端————>向docker服务器进程发起请求,如:创建、停止、销毁容器等操作

  • docker Server服务器进程—–>处理所有docker的请求,管理所有容器

  • docker Registry镜像仓库——>镜像存放的中央仓库,可看作是存放二进制的scm

Docker的安装与部署:

 [root@docker /]# yum install -y docker   //使用官方源安装docker

也可以使用国内源安装docker,例如,阿里,中科大,网易 的源

启动docker:

 [root@docker /]# systemctl start docker 

 

搜索docker官方镜像文件:OFFICI [OK]表示官方镜像,其余表示非官方上传

下载与上传镜像文件:

docker pull [镜像文件名] //拉取镜像
    docker push [镜像文件名] //上传镜像

也可以直接下载站点镜像:
           docker pull hub.c.163.com/library/tomcat:latest  //复制站点链接用 pull 下来

查看docker本地镜像:

docker images

运行docker镜像:

docker run -it [镜像名]:[标签名] /bin/bash
            -i 使用交互模式运行镜像  -t 分配输入伪终端

使用后台运行docker进程:
    docker run -d [镜像名]:[标签名] /bin/bash -c "[脚本]"
                -d 后台运行docker返回容器的ID好   -c 完成后面的命令
例:docker run -d [镜像名]:[标签名] /bin/bash -c "while true;do echo hello world;sleep 2;done"

查看docker进程:

docker ps     //加 -a 参数列出所有

读取docker日志:    
    docker logs [PID]         //短ID也可以,只要是唯一的

docker镜像的停止、开启、重启:

docker stop [PID] //关闭docker镜像
        docker start [PID] //继续运行docker images
        docker restart [PID] //restart docker images

通过docker镜像的PID进程ID来杀死docker进程:

docker kill [PID]

删除docker镜像:

docker rm [image ID] //删除images file   -f 强制删除

Docker镜像制作方法:
    方法一:docker commit  //保存 container 当前状态到image 然后生成image
    方法二:docker build   //使用 Dockerfile 文件自动化制作 images

在实例中创建一个apache服务:
    docker run -it [docker name]:[docker taget] /bin/bash
    yum install -y httpd
    exit

保存安装apache的  centos image:          
    docker commit [container imageID] [image name]:[Taget] //docker.io/centos:apache (这个标签可以随便写)

imageID用的是docker ps -a 中的ID  不是 docker image 中的镜像ID!!!!!!

通过Dockerfile来创建容器:
    dockerfile文件中执行命令中的所有需要被调用到的文件,必须放在Dockerfile所在的目录下
    基础镜像可以不放在dockerfile文件目录下,但是docker image中必须要有所需的基础镜像

 [root@docker docker/]# vim Dockerfile 
FROM docker.io/centos:latest  //基于哪个镜像
MAINTAINER <zxq@qq.com>      //MAINTAINER 镜像创建者
RUN yum install -y httpd  //RUN 安装应用
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html   //ADD 将此目录中的文件拷贝到对应的镜像系统路径下。

 

 [root@docker docker /]# vim Dockerfile

/usr/sbin/httpd -DFOREGROUND"

[root@docker docker /]# index.html
Docker a Web!

chmod a+x start.sh

所有拷贝到镜像中的文件 权限默认为 0755  uid和pid都为0
CMD systemctl start httpd   //container中启动时执行的命令,一个Dockerfile只能有一个CMD命令,
有多条只能执行最后一条

通过docker build创建镜像:
docker build -t [image name]:[taget] [Dockerfile路径]  
[root@docker docker /]# docker buile -t docker.io/centos:httpd ./

 

Docker镜像导出:
    docker save image to tarball
    保存image到tar包当中
    docker save -o 导出镜像名.tar 本地镜像名:image标签  //这里导出的镜像名不能有冒号,注意特殊符号!
    
Docker image 导入镜像:
    docker load -i [本地镜像名]

Container容器端口映射:
    docker run -d -p 80(物理机端口):80(容器端口) [image name]:[taget] /bin/bash -c /usr/local/bin/start.sh


访问一个正在运行的docker镜像:
    docker exec -it <container id|name> /bin/bash

发布镜像到docker hub :
    push image to docker hub
1、注册docker hub 账号
https://hub.docker.com/
2、登录 docker hub
docker login -u username -p password -e 2235590965@qq.com
3、上传镜像
docker push [image name]:[taget]
4、下载镜像
docker pull username/[image name]:[taget]

如果在运行docker镜像的时候提示网络错误,查看 /proy/sys/net/ipv4/ip_forward值,正常的是 1

原文地址:https://blog.51cto.com/13735335/2177648?source=dra

CentOS7-Docker容器入门的更多相关文章

  1. CentOS7 Docker容器无法ping通宿主机ip问题解决记录

    Docker服务部署启动容器发现docker容器内访问宿主机IP不通,于是进入容器内ping宿主机IP,发现无法ping通,容器IP为172.17.0.2,于是继续ping172.17.0.1也不通, ...

  2. 自动化集成:Docker容器入门简介

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...

  3. Docker容器入门

    为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是<Docker在雪球的技术实践>,当时听的也 ...

  4. docker容器入门最佳教程

    为什么要写这个 简单回答是:容器技术非常热门,但门槛高. 容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行. 对 IT 行业来说,这是一项非常有价值的技术.而对 I ...

  5. Docker容器入门篇

    第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...

  6. Centos7 docker容器启动后添加端口映射

    docker容器启动后添加端口映射的两种方法: 一.通过修改防火墙策略添加端口映射 docker容器已创建好,但是想在容器内配置tomcat监控,需要新的端口去访问,但是映射时没有映射多余端口,此时, ...

  7. 解决CentOS7 docker容器映射端口只监听ipv6的问题

    问题现象 docker容器起来以后,查看9100端口监听情况,如下图: $ ss -lntp State Recv-Q Send-Q Local Address:Port Peer Address:P ...

  8. Docker容器入门实践

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...

  9. Docker容器入门介绍

    1.前言 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.Docker: 本意是码头工人,言外之意是集装箱: Java号称 ...

  10. Centos7 docker容器 搭建

    Dockerfile 文件如下: # # MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com> # DOCKER-VERSION # # Dock ...

随机推荐

  1. Dubbo架构及原理

    1.Dubbo:Dubbo是一个分布式服务框架,SOA治理方案. 主要功能有:高性能的NIO通讯以及协议集成.服务动态寻址与路由.软负载均衡与容错.依赖分析与降级 主要特点: 连通性:provider ...

  2. 在WinDbg中显示和搜索std::map内容

    我们希望在WinDbg中自动显示.搜索和过滤std::map对象.std::vectors的脚本相对简单,因为vectors中数据的平面结构:map是更复杂的野兽.具体地说,Visual C++ ST ...

  3. cronicle minio s3 存储配置集成

    cronicle 后端存储是可配置的 ,通过使用不同的存储配置,我们可以解决多实例部署以及数据共享的问题 cronicle 的后端存储模型,设计的特别方便,包含了基于文件的,基于s3 的,同时我们也可 ...

  4. CF241E Flights 题解

    题目 做了一下这道题,突然发现自己忘了差分约束,赶紧复习一下. 设当前有n个变量 a1,a2,...,an ,有若干组限制形如 ai≤aj+k (其中k为常数),则由点j向点i连一条边权为k的边,再从 ...

  5. svn报错:[Previous operation has not finished; run 'cleanup' if it was interrupted] 的排错过程

    今天在打开某一文档的情况下,使用SVN更新文档,在更新的过程中报错,提示需要执行clean up,果断右键执行clean up,又提示一个新的错误:"Previous operation h ...

  6. 模拟26A 题解

    A. marshland 考试时想到了网络流,然而不会建图,就死了. 正解是最大费用可行流. 比较容易想到的是将每个点拆为两个点, s连没有危险值的入点, 没有危险值的入点连有危险值的入点,入点出点之 ...

  7. c# 画正态分布图

    /// <summary> /// 提供正态分布的数据和图片 /// </summary> public class StandardDistribution { /// &l ...

  8. ping某域名的整个流程

    实验环境:主机A,B(可不再同一网段),主机B有域名假设为www.baidu.com首先:1. 本地主机A在命令行下执行"ipconfig/flushdns"命令来清空本地DNS高 ...

  9. 阿里云ecs centos yarn 安装

    安装流程:https://yarn.bootcss.com/docs/install/#centos-stable

  10. Spring Boot-JPA、Hibernate、Spring data jpa之间的关系

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...