Docker的简单使用

一、Docker简介

​ Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
一个完整的Docker有以下几个部分组成:

  • dockerClient客户端
  • Docker Image镜像
  • DockerContainer容器
  • Docker Daemon守护进程
  1. Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

  2. Docker与虚拟机

    首先,需要明白一点,Docker不是不是虚拟机,Docker与虚拟机有着不同的应用场景,Docker常常用于隔离不同应用,提供不同应用运行环境。虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。

1. 客户端

  1. 安装

    ​ 这里只简单的介绍在Ubuntu下的安装,Docker要求Ubuntu系统的内核版本高于3.10,使用uname -r 可以查看当前内核版本。

    ​ 现在的apt,apt-get已经比较强大了,使用apt-get install docker.io即可安装。

  2. 常用命令

    docker -v   #查看版本信息
    docker 		#查看所有命令选项
    docker 命令 --help   #查看命令的详细信息
    
  3. Hello World

    docker run ubuntu:15.10 /bin/echo "Hello world"		
    #可能会有点耗时,这是由于本地没有该镜像,需要下载
    #ubuntu:15.10:指定镜像,如果本地没有则会自动从镜像仓库 Docker Hub 下载公共镜像。
    #/bin/echo "Hello world":shell语句
    

2. 镜像(Images)

​ 镜像类似于面向对象编程中的类,也和操作系统的镜像文件类似,是用来创建容器的模板。

  1. 镜像的使用

    ​ 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。我们可以在网上(https://hub.docker.com/)查找镜像,也可以使用docker search … 来查找,然后使用docker pull … 来获取

    • 管理和使用本地Docker镜像

      docker images	#列出本地镜像
      #各个选项说明
      #    REPOSITORY:表示镜像的仓库源
      #    TAG:镜像的标签,表示镜像版本号,同一个镜像可以创建多个版本
      #    IMAGE ID:镜像ID
      #    CREATED:镜像创建时间
      #    SIZE:镜像大小
      docker pull 镜像名:版本号	#获取一个新的镜像
      
    • 创建镜像

      当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

      • 1.从已经创建的容器中更新镜像,并且提交这个镜像

        docker run -t -i ubuntu:15.10 /bin/bash		#运行镜像
        apt-get update	#更新
        exit	#退出
        docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
        #说明:-m:提交的描述信息,-a:指定的镜像作者
        #e218edb10161 runoob/ubuntu:v2分别是容器ID和要创建的镜像名和tag
        
      • 2.使用 Dockerfile 指令来创建一个新的镜像

        1. 创建镜像生成文件
        FROM    centos:6.7	#版本,Base Image可以从本地拉取也可以从公共库拉取
        MAINTAINER      Fisher "[email protected]"   #生成这个镜像的作者。
        
        #以下是在创建之前在这镜像中执行的语句
        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/local
        EXPOSE  22
        EXPOSE  80
        CMD     /usr/sbin/sshd -D
        
        1. 使用Dockerfile生成镜像
        docker build -t runoob/centos:6.7 .
        #说明:-t :指定生成的镜像名和tag,
        	. :后接镜像生成文件路径,也可以指定绝对路径
        

3. 容器(Container)

​ 我的理解是一个运行中的镜像即为一个容器,一个镜像可以运行不同的应用,从而构成不同容器,容器不用像操作系统一样需要安装。

  1. 启动一个容器

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    [OPTIONS]:参数可选,可以指定后台运行,默认是不指定后台运行
    IMAGE:指定运行容器的镜像文件
    [COMMAND]:需要执行的任务
    eg:
    #1. 直接运行不指定参数,结果会直接输出
    docker run ubuntu:15.10 /bin/echo "Hello world"
    #2. 后台运行,-d:指定后台运行
    docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    #3.启动交互式容器,与远程登录了一台操作系统类似
    docker run -i -t ubuntu:15.10 /bin/bash
    

4. 容器连接

一般采用端口映射,在创建时指定

docker run -d -p 5000:5000	...
#说明:
-p:指定映射关系,如果不指定一般会随机映射,使用docker ps可以查看
例:0.0.0.0:32768->5000/tcp	将本机的容器的5000端口映射为主机的0.0.0.0:32768端口
完整格式为:
-p [ip:]port:port[/tcp/udp]

端口映射并不是唯一把 docker 连接到另一个容器的方法,docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。这里不再做介绍。

5. 常用命令

  1. 镜像管理

    docker images	#查看本地所有镜像
    docker rmi [OPTIONS] IMAGE [IMAGE...]	#删除一个或多个镜像
                -f :强制删除;
                --no-prune :不移除该镜像的过程镜像,默认移除;
    docker build [OPTIONS] PATH | URL | -   #用于使用 Dockerfile 创建镜像。
    			-t:创建的镜像名字及标签
    			-f:Dockerfile文件路径默认为当前路径
    			. :不明所以,必须有,
    docker pull [OPTIONS] NAME[:TAG|@DIGEST]	#获取镜像
    docker login -u ... -p ...			#登录
    docker push [OPTIONS] NAME[:TAG]			#上传到镜像仓库,需要先登录
    docker logout   #退出登录
    docker search [OPTIONS] TERM   #查找
    
  2. 容器相关

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]		#创建一个容器
    		-v $PWD/logs:/wwwlogs:文件映射,将主机中当前目录下的logs挂载到容器的/wwwlogs
    docker ps : 列出容器
    docker start :启动一个或多个已经被停止的容器
    docker stop :停止一个运行中的容器
    docker restart :重启容器
    docker kill [OPTIONS] CONTAINER [CONTAINER...]   #杀死一个运行中的容器
    docker logs [OPTIONS] CONTAINER
    

二、实例安装

1. 安装 Nginx

实例安装一遍即镜像的获取,可以使用pull获取也可以自定义创建,自定义创建这里不做介绍。

  1. 获取

    docker pull nginx		#获取
    docker images nginx		#查看
    
  2. 使用

    docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs  -d nginx
    说明:
    -p 80:80:将容器的80端口映射到主机的80端口
    --name mynginx:将容器命名为mynginx
    -v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
    -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
    -v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs
    

2. 安装其他实例

docker pull php #安装php
docker pull mysql #安装mysql
docker pull tomcat
docker pull python:3.5
...

使用总结:

–name:重命名

-p:端口映射

-v:文件映射

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章