美文网首页funny ubuntu
Docker在Ubuntu的搭建与使用

Docker在Ubuntu的搭建与使用

作者: billJiang | 来源:发表于2017-08-14 14:06 被阅读0次
    docker.png

    关于Docker

    Docker 是 Docker 公司的开源项目,使用 Google 公司推出的 Go 语言开发的,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护,大概在2017年4月份左右Docker项目突然改名为Moby,所以在Github搜索Moby才可以找到这个项目。

    Docker的内核建立在LXC(Linux Container)之上,作为容器的一种,同传统的虚拟机比起来,容器内的应用/进程直接运行在宿主机的内核上,容器没有自己的内核,所以容器更加轻量,运行效率也更高。

    同传统的虚拟机相比:

    • 更高效的资源利用
    • 快速启动时间
    • 一致的运行环境
    • 持续交付和部署
    • 轻松迁移
    • 轻松维护和扩展

    Docker 概念
    在Docker上包含如下几个重要概念

    • 镜像 Image
    • 容器 Container
    • 仓库 Repository

    Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

    Docker容器是Docker镜像的实例,镜像启动后可生成一个Docker实例,当然也可以将Docker实例保存为一个镜像,供其他用户使用。

    Docker仓库是保存Docker镜像的地方,Docker的默认镜像仓库是在hub.docker.com,但用户只能在官网创建一个private项目,有些组织并不希望自己的镜像成为public项目(比如打包了云源码),这时用户可以使用registry构建自己的仓库。

    Docker常用命令

    本人使用的机器操作系统为ubuntu 16.04.1,以下docker的使用均是建立在该操作系统上,如果是windows和mac的操作系统,可以在官方下载相应的软件。

    安装docker

    sudo apt install docker
    

    Docker 取消 sudo
    在使用docker 每次都要敲sudo ,可以使用如下命令取消

    1.创建docker组:sudo groupadd docker 
    2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker
    3.重启服务:sudo service docker restart
    4.刷新[Docker](http://lib.csdn.net/base/docker)成员:newgrp - [docker]
    

    Docker 安装信息
    使用docker info 查看docker的安装信息

    docker info
    
    docker info.png

    Docker 查找和下载镜像

    查找镜像
    docker search [镜像名称]
    下载镜像
    docker pull [镜像名称] 
    
    docker search nginx.png

    包含:NAME(镜像名称),DESRIPTION(描述),STARS(赞数量),OFFICIAL(是否是官方镜像),AUTOMATED(是否是自动构建镜像)。

    一般我们倾向于下载赞数量比较大的官方镜像

    设置Docker Hub镜像站点/加速器
    因为docker默认的仓库在docker.io,所以有时间下载的速度比较慢,可以通过设置镜像代理站点/加速器的方式来对下载加速,我使用了阿里云的镜像代理。

    在阿里云创建Docker Hub镜像站点以后,可按照操作文档配置daemon.json文件,配置完毕,再次下载docker镜像就非常快了;因为docker 会优先从镜像站点下载。

    阿里Docker Hub镜像站点.png

    查看镜像
    查看本地已经下载的镜像

    docker images
    
    docker images.png

    显示的列包括:本地镜像名称,版本,镜像ID,创建事件,大小

    导出镜像
    使用如下命令可以将镜像导出到当前目录

    docker  save centos > centos.tar
    

    导入镜像
    在当前目录中导入镜像

    docker load < centos.tar
    

    删除镜像

    docker rmi [镜像名称]
    
    • -f 强制删除
      创建并启动容器
      创建并启动一个centos容器
    docker run -i -t centos /bin/bash
    

    参数解释

    • -i 选项:容器启动后,打开标准输入设备(STDIN),可使用键盘输入
    • -t 选项:容器启动后,分配一个为终端,将与服务器建立一个会话
    • centos 参数:需要运行的镜像名称,标准格式为centos:latest, 若为latest版本,则可忽略
    • /bin/bash 表示容器中bash应用程序
      该命令首先从本地获取镜像,本地没有镜像,则从Docker Hub拉取放到本地。

    再看一个使用docker启动jenkins的例子:

    docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --link gitlab:gitlab.bill.com -u root 
    -v ~/jenkins:/var/jenkins_home  -v /usr/share/maven:/usr/local/maven 
    -v /usr/lib/jvm/jdk1.8:/usr/local/jdk jenkinsci/jenkins:latest
    

    参数解释:

    • -p: 端口映射,将宿主机的端口映射到容器端口,前为宿主机端口,后为容器端口
    • -v: 宿主机目录与容器目录映射
    • -link: 会在容器/etc/hosts创建域名映射
    • name:容器命名

    列出容器

    docker ps -a
    
    • -a 所有容器
    • -i 最近创建的容器
    • -n 列出n个最近创建的容器
    • -q 仅列出CONTAINER_ID 字段
    • -s 在输出表格中增加一个SIZE字段,用于描述容器的大小
      进入容器
    docker attach [容器ID]
    

    前提条件是容器已经启动
    执行命令

    docker exec -i -t [容器id] ls -l
    

    和docker run命令类似,进入容器并列出容器的目录结构
    停止容器

    docker stop [容器id]
    

    使用该命令对容器发送SIGTERM信号,将等待一段很短的事件,再对容器发送SIGKILL信号,立即终止容器
    终止容器

    docker kill [容器id]
    

    使用该命令对容器发送SIGKILL信号,立即终止容器

    启动容器

    docker start [容器id]
    

    启动已经停止的容器

    重启容器

    docker restart [容器id]
    

    重启在运行的容器(前提条件容器已经启动),如何修改了容器内的配置文件,需要重启容器
    删除容器

    docker rm [容器id]
    

    删除容器,前提条件是容器已经停止
    批量删除:

    docker rm -f $docker ps -a -q
    

    或者

    docker rm -f `docker ps -a -   `
    

    导出与导入容器

    docker export [容器id] > xxxx.tar
    

    在打包的文件在另一台机器上导入为镜像

    docker import xxx.tar billjiang/xxxx:lastest
    

    推送镜像

    docker push billjiang/java
    

    当我们在本地创建了镜像后,可以将它推送到镜像仓库,默认是推送到Docker hub,默认的地址是docker.io/biljiang/java

    Dockerfile

    Docker为我们提供了一个叫做Dockerfile的脚本文件,将命令写入该文件中,可以批量执行docker命令,构建镜像。

    比如我们写一个构建带有jdk环境的镜像
    Dockerfile内容

    FROM centos:latest
    MAINTAINER "billjiang"<475572229.qq.com>
    ADD jdk1.8.tar.gz /opt
    RUN ln -s /opt/jdk1.8  /opt/jdk
    CMD /opt/jdk/bin/java -version
    

    在Dockerfile的目录中执行docker build -t [容器名称] .即可构建镜像。
    (具体Dockerfile命令请自行学习,查看官网)

    Docker仓库

    考虑到我们的镜像不想在Docker hub中公开,我们可以使用registry做私有镜像注册中心。
    搭建Docker Registry:

    docker run -d -p 5000:5000 -v ~/docker-registry:/tmp/registry registry
    

    如果要把镜像推送到这个地址(在这里是本地地址http://127.0.0.1:5000),需要更改镜像的名称。

    docker tag [镜像id] 127.0.0.1:5000/billjiang/java
    

    使用push命令即可将该镜像推送到私有镜像中心

    docker push 127.0.0.1:5000/billjiang/java
    

    以上是docker的搭建和使用的总结。

    相关文章

      网友评论

        本文标题:Docker在Ubuntu的搭建与使用

        本文链接:https://www.haomeiwen.com/subject/vfayrxtx.html