一、何为Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker的应用场景

Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。

从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

二、Docker架构

容器 VS 虚拟机:

容器和虚拟机具有相似的资源隔离和分配优势,但功能有所不同,因为容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。

容器是一个应用层抽象,用于将代码和依赖资源打包在一起。多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行。与虚拟机相比,容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动。

虚拟机 (VM) 是一个物理硬件层抽象,用于将一台服务器变成多台服务器。管理程序允许多个 VM 在一台机器上运行。每个 VM 都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源,因此占用大量空间。而且 VM 启动也十分缓慢。

三、Docker安装

前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

使用 yum 安装(CentOS 7下)

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r命令查看你当前的内核版本

[root@runoob ~]#uname -r 3.10.0-327.el7.x86_64

安装 Docker

Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下:

[root@runoob ~]#yum -y install docker-io

安装完成。

启动 Docker 后台服务

[root@runoob ~]#service docker start

测试运行 hello-world

[root@runoob ~]#docker run hello-world

由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

使用脚本安装 Docker

1、使用 sudo 或 root 权限登录 Centos。

2、确保 yum 包更新到最新。

$ sudo yum update

3、执行 Docker 安装脚本。

$ curl -fsSL https://get.docker.com/ | sh

执行这个脚本会添加 docker.repo 源并安装 Docker。

4、启动 Docker 进程。

$ sudo service docker start

5、验证 docker 是否安装成功并在容器中执行一个测试的镜像。

$ sudo docker run hello-world

到此,docker 在 CentOS 系统的安装完成。

四、Docker 使用

docker run ubuntu:15.10 /bin/echo "Hello world" -- docker [option] OS /bash//echo "content"

各个参数解析:

docker: Docker 的二进制执行文件。

run:与前面的 docker 组合来运行一个容器。

ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

/bin/echo "Hello world":在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

[option] run , stop

1、docker -h 帮助

2、获取镜像

sudo docker pull NAME[:TAG]

sudo docker pull centos:latest

3、启动Container盒子

sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

sudp docker run -t -i contos /bin/bash

4、查看镜像列表,列出本地的所有images

sudo docker images [OPTIONS] [NAME]

sudo docker images centos

5、查看容器列表,可看到我们创建过的所有container

sudo docker ps [OPTIONS]

sudo docker ps -a

6、删除镜像,从本地删除一个已经下载的镜像

sudo docker rmi IMAGE [IMAGE...]

sudo docker rmi centos:latest

7、移除一个或多个容器实例

sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]

移除所有微运行的容器

sudo docker rm sudo docker ps -aq

8、停止一个正在运行的容器

sudo docker kill [OPTIONS] CONTAINER [CONTAINNER...]

sudo docker kill 026e

9、重启一个正在运行的容器

sudo docker restart [OPTIONS] contains[CONTAINER]

sudo docker restart 026e

10、停止一个已经停止的容器

sudo docker start [OPTIONS] CONTAINER [CONTAINER..]

sudo docker start 026e

五、Docker制作

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

runoob@runoob:~$ cat DockerfileFROM centos:6.7MAINTAINER Fisher"fisher@sudops.com"RUN /bin/echo 'root:123456'|chpasswd

RUN useradd runoob

RUN /bin/echo 'runoob:123456'|chpasswd

RUN /bin/echo -e "LANG=\"en_US.UTF-8\"">/etc/default/localEXPOSE 22EXPOSE 80CMD /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

runoob@runoob:~$ docker build -t runoob/centos:6.7.Sendingbuild context to Dockerdaemon 17.92kB

Step1:FROM centos:6.7--->d95b5ca17cc3

Step2:MAINTAINER Fisher"fisher@sudops.com"--->Usingcache

--->0c92299c6f03Step3:RUN /bin/echo 'root:123456'|chpasswd

--->Usingcache

--->0397ce2fbd0aStep4:RUN useradd runoob

......

参数说明:

-t :指定要创建的目标镜像名

. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

runoob@runoob:~$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

runoob/centos 6.7860c279d2fecAbouta minute ago 190.6MB

runoob/ubuntu v2 70bf1840fd7c17hours ago 158.5MB

ubuntu 14.0490d5884b1ee06days ago 188MB

php 5.6f40e9e0f10c8 10days ago 444.8MB

nginx latest 6f8d099c3adc12days ago 182.7MB

mysql 5.6f2e8d6c772c0 3weeks ago 324.6MB

httpd latest 02ef73cf1bc03weeks ago 194.4MB

ubuntu 15.104e3b13c8a2665weeks ago 136.3MB

hello-world latest 690ed74de00f6months ago 960B

centos 6.7d95b5ca17cc3 6months ago 190.6MB

training/webapp latest 6fae60ef344612months ago 348.8MB

我们可以使用新的镜像来创建容器

runoob@runoob:~$ docker run -t -i runoob/centos:6.7/bin/bash

[root@41c28d18b5fb /]#id runoob

uid=500(runoob)gid=500(runoob)groups=500(runoob)

从上面看到新镜像已经包含我们创建的用户runoob

设置镜像标签

我们可以使用 docker tag 命令,为镜像添加一个新的标签。

runoob@runoob:~$ docker tag 860c279d2fecrunoob/centos:dev

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。

runoob@runoob:~$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

runoob/centos 6.7860c279d2fec5hours ago 190.6MB

runoob/centos dev 860c279d2fec5hours ago 190.6MB

runoob/ubuntu v2 70bf1840fd7c22hours ago 158.5MB

ubuntu 14.0490d5884b1ee06days ago 188MB

php 5.6f40e9e0f10c8 10days ago 444.8MB

nginx latest 6f8d099c3adc13days ago 182.7MB

mysql 5.6f2e8d6c772c0 3weeks ago 324.6MB

httpd latest 02ef73cf1bc03weeks ago 194.4MB

ubuntu 15.104e3b13c8a2665weeks ago 136.3MB

hello-world latest 690ed74de00f6months ago 960B

centos 6.7d95b5ca17cc3 6months ago 190.6MB

training/webapp latest 6fae60ef344612months ago 348.8MB

Docker 删除镜像

分为两部:

首先 删除 容器,再删除镜像

docker ps -a

docker rm id

删除镜像

docker ps -a

docker images

docker rmi id

检查是否删除成功

docker images

注意点:

1. 删除前需要保证容器是停止的  stop

2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)

3. 顺序需要先删除容器

参考文献:

http://www.runoob.com/docker/centos-docker-install.html

http://www.runoob.com/docker/windows-docker-install.html(windows10安装docker)

https://www.cnblogs.com/yufeng218/p/8370670.html

https://blog.csdn.net/winy_lm/article/details/77980529

系统制成docker镜像_Docker学习以及镜像制作流程相关推荐

  1. 系统制成docker镜像_docker 制作自己的镜像

    查看 docker的服务状态 systemctl status docker 如果没有启动的话,要先启动 docker 服务 systemctl start docker 制作自己的镜像 1.从远程仓 ...

  2. 系统制成docker镜像_docker镜像原理 镜像制作 dockerfile

    为什么一个centos镜像只有两百多兆,而tomcat镜像五百多兆 1.先说说操作系统 操作系统组成部分: 进程调度子系统 进程通信子系统 内存管理子系统 设备管理子系统 文件管理子系统 网络通信子系 ...

  3. docker pull拉取镜像_docker拉取镜像失败解决

    今天在虚拟机上安装了docker-ce之后,从docker官网上去拉取镜像时,报如下错误 [root@localhost util-linux-2.27]# docker pull mysql:8.0 ...

  4. docker 制作本地镜像_Docker系列-(2) 镜像制作与发布

    上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...

  5. docker 运行mysql镜像_docker 生成mysql镜像启动时自动执行sql

    在docker 创建 mysql 容器时,往往需要在创建容器的过程中创建database 实例,代码如下: docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSW ...

  6. 系统制成docker镜像_如何让Docker基础镜像变得更小?

    本次实验是基于上一篇在<Centos7系统上制作一个7系的Docker镜像>方法制作,只是这次先在Centos65的系统上实现,并配置本人在减少镜像大小的一些思路和方法: 系统环境: Ce ...

  7. docker 容器保存为镜像_Docker容器和镜像操作

    前言 Docker 容器和镜像操作,记录下来! 容器 创建一个新的容器(ubuntu)并启动 $ docker run -dit --name ubuntu ubuntu 在容器内执行命令(容器在后台 ...

  8. docker 删除_docker 批量删除镜像

    这两天做了些实验,生成了这么多镜像.本文研究删除方法和批量删除方法. 准备工作:查看运行中的容器 sudo docker container ls -a sudo docker container l ...

  9. docker看远程仓库镜像_docker远程仓库镜像删除

    1. 查看仓库中的镜像 curl -X GET http://registry.test.cn:5000/v2/_catalog |python -m json.tool { "reposi ...

最新文章

  1. 实现操作系统运行稳定流畅如初、免受各类运行异常之苦的六个实用“秘诀”...
  2. 将键值对当作实参传进函数
  3. Perl函数pack/unpack(二进制读写)
  4. Distributed Systems笔记-middlewares
  5. 透过汇编另眼看世界之多继承下的虚函数函数调用
  6. 使用jquery+css实现瀑布流布局
  7. 工作总结5:插槽的使用
  8. python googletrans_Python使用googletrans报错的解决方法
  9. app上传遇到的一些问题
  10. 提供博客里提到的几个程序的下载地址
  11. jQuery图片LightBox插件 点击图片放大 支持移动手机
  12. 计算机内打不开小米路由器,win7系统无法访问小米路由器的解决方法
  13. Portapack应用开发教程(十三)控制遥控小车OOK
  14. 记win10家庭版系统C:\Users用户名中文改英文 详细教程
  15. CSA发布 | 《区块链的十大攻击、漏洞及弱点》
  16. android 闪光灯 频闪,技术丨频闪人像的闪光灯调节和拍摄要点
  17. 病人信息管理html,基于JSP住院病人信息管理系统本科.doc
  18. 【cookie】cookie是什么,如何使用cookie?
  19. 基于Python和R的多元线性回归分析实例
  20. windowsNote(小便签)

热门文章

  1. char string 区别
  2. [转]C++ 11 多线程--线程管理
  3. 配置Vim的显示样式
  4. 排查Java线上服务故障的方法和实例分析
  5. swift 学习- 12 -- 方法
  6. 微信创始人张小龙的创业故事
  7. 使用 COM 风格的编程接口
  8. CloudStack 的配置、部署与管理,以及 API 的使用
  9. 案例二十、自动化运维-代码上线
  10. 硬盘三步操作( 分区、格式化、挂载)