Docker入门及常用命令

官方文档:http://docs.master.dockerproject.org/engine/installation/linux/ubuntulinux/

1.安装Docker
  1.准备工作:
	  1.检查Linux内核,版本必须在3.8以上
		 $ uname -r
		   4.4.0-31-generic
	  2.更新apt,并安装支持https的证书
		  $ sudo apt-get update
	 	  $ sudo apt-get install apt-transport-https ca-certificates
	     注意:
		  1.遇到如下异常:
			E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
			E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
		     解决:
		         ps -aux|grep apt  
		        kill掉占用apt-get的进程
	  3.添加一个新的 GPG key
		  sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
		  
	  4.创建 /etc/apt/sources.list.d/docker.list文件,清空里面内容,并添加以下内容:
		 deb https://apt.dockerproject.org/repo ubuntu-xenial main

	  5.更新 apt-get 的索引
		 sudo apt-get update
	   
	  6.清除旧的分支(如果之前存在)
		 sudo apt-get purge lxc-docker
	  
	  7.设置APT支持docker更新
		 apt-cache policy docker-engine

   2.安装Docker
          1.管理员身份登录
                 sudo su
          2.更新APT包的索引
                 apt-get update
          3.安装Docker 
                 sudo apt-get install docker-engine
          4.开启Docker后台进程
                 sudo service docker start
          5.验证Docker是否正确安装 
                 sudo docker run hello-world





2.Docker基础
    1.概念
          镜像:类似虚拟机快照,但非常轻量,镜像有唯一ID 及一个供人阅读的名字和标签对,eg:ubuntu:latest,django:1.7
              创建Docker镜像有几种方式:多数是在现有镜像基础上创建新镜像,几乎所有需要的东西都有公共镜像
              创建镜像:可以拿一个镜像,对它进行修改来创建它的子镜像
                       2种方式:
                              1.在一个文件种指定一个基础镜像及需要完成的修改
                              2.通过"运行"一个镜像,对其进行修改并提交  
          

          容器:可以从镜像中创建容器,等同于从快照种创建虚拟机,与虚拟机一样,容器是隔离的,拥有一个唯一ID和名字,Docker允许公开容器的特定端口,以提供对外服务
                推荐一个容器一个进程的方式,容器是设计来运行一个应用的
      


3.Docker常用命令
     1.docker pull ubuntu:latest    从公共registry下载镜像
     2.docker images                列出镜像
     3.docker run --rm -ti buntu /bin/bash  从指定镜像上创建一个容器
           参数:
                  --rm  	 告诉Docker一旦运行的进程退出就删除容器
                  --ti  	 告诉Docker分配一个伪终端并进入交互模式,这将进入到容器内,对于快速原型开发或尝试很有用,但不要在生产容器中打开这些标志
                  --ubuntu 	 容器所在的镜像
                  --/bin/bash    要运行的命令,因为我们以交互模式启动,它将显示一个容器的提示符
     4.常用命令:
            1.查看docker信息(version、info)
                   docker version    #docker 版本
                   docker info       #docker 系统信息
            2.对镜像image操作(search、pull、images、rmi、history)
                   docker search image_name   #检索image
                   docker pull image_name     #下载image
                   docker images -a           #列出所有image  
                   docker rmi image_name      #删除一或多个镜像 -f:强制删除
                   docker history image_name  #显示一个镜像的历史 
            3.启动容器(run)
                   #在容器中运行 echo 命令,输出 hello world
                   docker run image_name echo "hello world"
                   #交互式进入容器中
                   docker run -i -t image_name /bin/bash
                   #在容器中安装新程序
                   docker run image_name apt-get install y app_name
            4.查看容器(ps) 
                   # 列出当前所有正在运行的container  
		   $docker ps  
		   # 列出所有的container  
		   $docker ps -a  
		   # 列出最近一次启动的container  
		   $docker ps -l  
            5.保存对容器修改(commit)
                   # 保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message  
                   $docker commit ID new_image_name 
                   分析:  
                       image相当于类,Container相当于实例,不过可以动态给实例安装新软件,然后把这个container用commit命令固化成一个image
                  
                   



4.配置Docker拉取加速  daoCloud注册
     1.查看我的加速地址:https://www.daocloud.io/mirror
       得到加速地址: http://d1ece5f6.m.daocloud.io
     2.配置 /etc/default/docker,在DOCKER_OPTS=中添加:
       https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://xxx.m.daocloud.io
       说明:
            这里xxx表示我的加速地址
       完整配置:
               1.编辑docker配置
		       # vi /etc/default/docker
		       最后一行添加:
		       DOCKER_OPTS="--registry-mirror=https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d1ece5f6.m.daocloud.io"
		       
               2.重启docker服务
                       # service docker restart


5.制作Docker镜像
     2种方式
         1.使用docker commit 命令创建镜像
                1.通过docker run命令启动容器
		2.修改docker镜像内容
		3.docker commit提交修改的镜像
		4.docker run新的镜像

         2.使用Dockerfile创建镜像
                1.使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。
                  我们可以使用 docker build 来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,
                  包含一些如何创建镜像的指令
                2.Dockerfile语法:
                  #用来注释
                  FROM指令告诉Docker使用哪个镜像作为基础, FROM <images>:<tag>
                  接着是维护者信息,MAINTAINER <name>
                  RUN开头的指令会在创建中运行,eg:安装一个软件包,这里使用 apt-get 来安装了一些软件 
                  2种格式:
                         RUN <command> (the command is run in a shell - `/bin/sh -c`)  
			 RUN ["executable", "param1", "param2" ... ]  (exec form)  
           

   
                  eg:
                     1.新建一个目录和一个Dockerfile
		                 # mkdir new_folder
		                 # cd new_folder
		                 # touch Dockerfile

                     2.编辑Dockerfile
                         	#这里是注释
				#设置继承自哪个镜像
				FROM ubuntu:14.04
				#下面是一些创建者基本信息
				MAINTAINER JayHe (jayhe@qq.com)
				#在终端需要执行的命令
                                RUN apt-get update
                                RUN apt-get install -y openssh-server
				RUN mkdir -p /var/run/sshd

                     3.使用docker build生成镜像
                                docker build -t="jayhe/ubuntu:v1" .
                        参数分析:
                               -t 用来添加 tag,指定新的镜像的用户和镜像名称信息
                               .  是Dockerfile所在路径(. 表示当前目录),可替换为一个具体的Dockerfile路径          
  
                     4.以交互方式运行docker    
                               docker run -it jayhe/ubuntu:v1 /bin/bash

                     5.运行docker时指定配置
                               sudo docker run -d -p 172.17.65.185:9999:22 ubuntu:tools '/usr/sbin/sshd' -D

                        参数分析: 
                                -i:表示以“交互模式”运行容器,-i 则让容器的标准输入保持打开
				-t:表示容器启动后会进入其命令行,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
				-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>,
                                   -v 标记来创建一个数据卷并挂载到容器里。在一次 run 中多次使用可以挂载多个数据卷。
				-p:指定对外80端口
				# 不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”- 

      
       




 

Docker常用命令

1. 查看docker信息(version、info)

[plain]  view plain   copy
  1. # 查看docker版本  
  2. $docker version  
  3.   
  4. # 显示docker系统的信息  
  5. $docker info  


2. 对image的操作(search、pull、images、rmi、history)

[plain]  view plain   copy
    • 0
      点赞
    • 12
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值