docker初识_Docker 初识

一、Docker 简介

Docker是一个开源的应用容器,用户可以将web程序和服务打包到一个轻量级、可以移植的容器中,然后发布到任务流行的Linux服务器上,实现虚拟化。同时完全是沙箱操作,即Docker内部是一个沙箱操作,项目之间不会有任何接口,并且开销极低。

二、Docker(centos)安装

1. 移除旧的Docker服务

sudo yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-selinux \

docker-engine-selinux \

docker-engine

2. 安装必要的参数

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3. 设置软件源的来源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4. 更新yum缓存

sudo yum makecache fast

5. 安装 Docker-ce

sudo yum -y install docker-ce

6. 启动

sudo systemctl start docker

7. 设置开机启动

chkconfig docker on

8. 测试运行 hello-world

docker run hello-world

9. 镜像加速,在 /etc/docker/daemon.json中添加下面的内容,没有改文件,则创建该文件。

{

"registry-mirrors": ["http://hub-mirror.c.163.com"]

}

# 国内加速镜像

# 网易加速器:http://hub-mirror.c.163.com

# 官方中国加速器:https://registry.docker-cn.com

10. 删除Docker CE

sudo yum remove docker-ce

sudo rm -rf /var/lib/docker

三、Docker 基础

Docker重要的基础概念:仓库,镜像,容器

仓库:注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04、12.04等不同版本的镜像,很多人会把仓库与registry混为一谈,其实registry是存放repository的地方,仓库分为公有仓库与私有仓库;

镜像:Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。例如:一个镜像可以只包含一个完整的Ubuntu操作系统环境,可以把它称为一个Ubuntu镜像。

容器:似于一个轻量的沙箱,docker利用容器来运行和隔离应用;容器是从镜像创建的应用运行的实例;容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身保持不变;容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。可以从一个镜像创建无数个容器。平时我们主要操作的就是容器。我们也可以把容器打包成镜像以方便再次使用。镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。

以前部署一个程序nginx,会进入到linux服务器上,下载nginx程序,然后运行。如果现在有一个镜像,该镜像就像是虚拟机一样的一个镜像文件,该文件运行起来,和那个nginx部署在linux服务器环境一样,nginx程序也在其中,然后运行该镜像中的已经存在的nginx程序,这个时候可以叫他容器,运行该容器后nginx就启动起来了。

hub中央仓库是一个公共的库,可以创建账号之后,将自己的内容推送到上面,https://hub.docker.com/注册自己账号

四、Docker命令

1. 基础命令

docker ps -- 查看当前运行在容器中的程序

docker pull image_names -- 拦截镜像文件 image_name镜像文件的名称

docker images -- 查看当前容器中的镜像文件

docker rmi imageName --删除镜像文件

2. 案例:

运行程序

docker pull training/webapp --拉取镜像

docker run -d -P training/webapp python app.py --运行程序

-d 让容器在后台中运行

-P 将程序端口映射到主机上

添加自己的hub上账号

sudo docker login

Username: ***

Password:

Email: ***

使用Dockerfile来构建自己的镜像

1. mkdir workdir

2. cd workdir

3. touch Dockerfile 添加如下内容:

# Version: 0.0.1

FROM ubuntu:14.04

MAINTAINER Wangzhe0912 "Wangzhe0912@tju.edu.cn"

RUN apt-get update

RUN apt-get install -y nginx

RUN echo "Hi, I am your contrainer" > /usr/share/nginx/html/index.html

EXPOSE 80

代码含义:

1.每个Dockerfile的第一行指令都应该是FROM开头。FROM用于制定一个已经存在的镜像,后续指令都是基于该镜像来运行。这个镜像我们称之为基础镜像。

2.MAINTAINER后说明该作者和作者邮箱信息。

3.接下来是三条RUN指令。默认情况下,指令后的内容会通过/bin/sh -c来执行。

4.最后设置了EXPOSE,该指令用于指定容器内的应用程序会使用哪些端口(可以指定多个)。PS:出于安全考虑,默认Docker不会自动打开这些端口,

5.需要在docker run指令中指定需要打开的端口

4.构建镜像

docker build -t="wangzhe0912/nginx:v1"` . (后面有一个点,表示执行当前目录下的Dockerfile文件,-t="wangzhe0912/nginx:v1"指定了新生成镜像的镜像名称,也可以从git仓库中寻找docker build -t="wangzhe0912/nginx:v1"` git@github.com:wangzhe0912/docker_web)

Dockerfile构建的好处是如果某一步执行失败了,以前面的镜像存储于缓存中,如果再次构建时会利用该缓存,如果不想,则执行

sudo docker build --no-cache -t="wangzhe0912/nginx:v1" .

如果想利用缓存,则需要在第一个RUN之前指定: ENV REFRESHED_AT 2018-01-28该命令行。如果该缓存变化了,则重新构建,如果没有变化,则会利用该缓存中的镜像。

如下:

# Version: 0.0.1

FROM ubuntu:14.04

ENV REFRESHED_AT 2018-01-28

MAINTAINER Wangzhe0912 "Wangzhe0912@tju.edu.cn"

RUN apt-get update

5.将镜像推送到hub仓库中 sudo docker push wangzhe0912/nginx

五、优势和使用场景

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。

Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。

Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。

Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值