全栈Web开发者

Docker基本用法

2017-05-08  本文已影响229人  0d601f651140

1. Docker一些基础的概念

1.1 docker与传统虚拟化的区别可以通过下面两幅图很直观的看出
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

docker 官网
  • docker run hello-word 来判断是否安装正确

  • docker run hello word

    3. docker基础命令

    docker基础命令包含docker操作、镜像操作、容器操作以及其他相关操作,以下列举了一些常用的命令,更多请参考官方文档,或者使用–help命令查看。

    docker操作

    查看docker信息

    $docker info
    Containers: 1  #1个容器
    Running: 1    #1个容器正在运行
    Paused: 0
    Stopped: 0
    Images: 5   #5个镜像
    Server Version: 1.12.3
    
    

    查看docker版本

    $docker -v
    Docker version 17.04.0-ce, build 4845c56
    $docker version
    Client:
    Version:      17.04.0-ce
    API version:  1.28
    Go version:   go1.7.5
    Git commit:   4845c56
    Built:        Wed Apr 5 18:55:11 2017
    OS/Arch:      linux/amd64
    Server:
    Version:      17.04.0-ce
    API version:  1.28
    Go version:   go1.7.5
    Git commit:   4845c56
    Built:        Wed Apr 5 18:55:11 2017
    OS/Arch:      linux/amd64
    
    

    镜像操作

    查看本地镜像列表:

    docker images -a  #-a可以查看所有的image
    
    

    其他镜像操作:

    docker search (image-name) 查询镜像 example:docker search ubuntu
    docker history (image-name) 查看镜像的历史版本
    docker push (image-name) 将镜像推送到registry
    docker pull image-name:tag pull镜像 example:docker pull ubuntu:latest
    docker rmi  <image id>   删除镜像(先stop并删除镜像上的所有容器)
    docker rmi $(docker images -q) 删除全部镜像
    docker tag image-id imagename:tag 修改镜像的tag标签
    docker load -i test.tar 从tar文件中载入镜像
    docker save image > test.tar 保存镜像为tar文件
    
    

    容器操作

    创建容器

     
    docker run --rm -ti ubuntu /bin/bash
    
    
    docker ps -a(显示所有容器,包括已经stop的)
    
    

    进入容器内部(shell):

    docker exec -ti centos /bin/bash
    
    

    容器操作:

    docker attach container 进入容器交互式界面
    docker diff  container 列出容器内发生变化的文件与目录
    dcoker logs ID(容器的ID,可以用docker ps查看)   查看docker上的容器的状态
    docker stop ID(或者容器名字)  关闭运行中的容器
    docker start ID 开启容器
    docker restart ID  重启运行中的容器
    docker stop ID docker rm ID  移除容器(先关闭再删除)
    docker kill [options] container 杀死容器的主进程
    docker stop $(docker ps -a -q) 停止所有container
    docker rm $(docker ps -a -q)   移除所有container
    docker commit ID new镜像名字(只能字母加数字) 将容器的状态保存为镜像
    docker export container > test.tar  将容器打包成tar文件
    docker cp container:path hostpath  从容器内复制文件到指定的路径
    
    

    other操作

    docker import http://example.com/example.tar  远程导入文件
    docker login [options][server]  用来登陆自己的registry
    docker inspect container/image  收集容器的信息(ip地址,端口等)
    docker wait container  阻塞
    
    

    dockerfile

    dockerfile可以用来动态生成新的镜像,比如说我们pull了一个基础的centos镜像,现在需要在此镜像内安装一些软件,以便可以顺利运行我们准备的项目代码,那么可以使用以下2种方案:

    编写dockerfile

    在Dockerfile文件内写入:
    我们需要创建一个目录来存放Dockerfile文件,目录名称可以任意取,在该目录里创建Dockerfile文件。这里我以创建一个基于centos基础镜像,容器运行后会自动开启一个python webserver(本地监听8080端口)的例子。

    # Version 0.1
    # 基础镜像
    FROM centos:latest
    # 维护者信息
    MAINTAINER caisen
    # 镜像操作命令
    RUN yum install wget
    # 容器启动命令
    CMD python -m SimpleHTTPServer 8080
    
    
    

    dockerfile语法类似于MakeDown,基础内容如下:

    生成dockerfile镜像

    进入到Dockerfile文件所在目录,运行:

     
    docker build -t centos_test:01 .
    
    

    使用dockerfile镜像

    在此image上运行容器:

     
    docker run -d -p 80:8080 centos_test:0.1
    
    
    

    此时,打开本机的127.0.0.1:80

    Paste_Image.png

    docker的内容非常多,以上只是一些最基础的用法,本文也将会持续更新,第二篇会详细介绍Laradock的安装和使用

    Laradock包含预包装 Docker 镜像,提供你一个美妙的开发环境而不需要安装 PHP, NGINX, MySQL 和其他任何软件在你本地机器上。

    上一篇 下一篇

    猜你喜欢

    热点阅读