ubuntu docker容器的安装

一、安装docker

1.sudo apt-get update

2.安装所有必须和可选的包

sudo apt-get install linux-image-generic-lts-trusty

3.重启系统

sudo reboot

4.查看是否安装了wget

which wget

如果没有安装,先升级管理包,再安装

sudo apt-get update

sudo apt-get install wget

5.获取最新版本的docker安装包

wget -O- https://get.docker.com/ | sh 

这个网址会比较慢,可以换成下面daocloud的,下载速度快

wget -O- https://get.daocloud.io/docker | sh

或者是如果系统自带docker, 可以直接升级

wget -N https://get.docker.com/ | sh

6. 验证docker 是否正确安装

sudo docker run hello-world 会下载一个测试镜像,并在容器内运行这个镜像

或是docker -v  查看docker版本

7.创建docker用户

sudo usermod -aG docker test//把用户添加进docker用户组

sudo reboot   //重启系统,重新登陆后生效

docker run hello-world  //测试是否生效,不用在输入sudo

二、下载docker镜像

1.下载镜像

sudo docker pull ubuntu:14.04  //如果不加:14.04,就下载最新版本的ubuntu。‘:’可指定下载版本

这个命令会比较慢,可换成下面的命令执行

sudo docker pull daocloud.io/ubuntu:14.04

2.查看镜像

sudo docker images

3.导入导出镜像

sudo docker save -o ubuntu.tar ubuntu:14.04   //导出镜像,

sudo docker load < ubuntu.tar

三、利用下载的镜像安装容器

1.利用下载的镜像创建容器

sudo docker run -t -i ubuntu:14.04 /bin/bash

如果没有该版本的镜像(事先没下载),那么将会自动下载镜像然后创建容器。以此方式运行的容器,退出后容器就会关闭

exit //退出容器

注意:如果是docker attach进入的容器。输入exit退出容器就会在推出的同时关闭容器,单纯退出要按下ctrl键+P+Q。

    docker-enter进入的容器则只退出

2.查看容器

sudo docker ps 查看已经启动的容器,可写成sudo docker ps -s

sudo docker ps -a 查看已经创建的容器

sudo docker ps -l  查看最后一个运行的容器

3.如果docker容器apt-get报错

修改

/etc/resolv

追加nameserver 8.8.8.8 或 nameserver 114.114.114.114重启网络sudo /etc/init.d/networking restart更新就好了


四、docker参数详解

1.参数详解

-D 默认false 允许调试模式(debugmode)
-H 默认是unix:///var/run/docker.sock tcp://[host[:port]]来绑定 或者unix://[/path/to/socket]来使用(二进制文件的时候),当主机ip host=[0.0.0.0],(端口)port=[4243] 或者 path=[/var/run/docker.sock]是缺省值,做为默认值来使用
-api-enable-cors 默认flase 允许CORS header远程api
-b 默认是空,附加在已存在的网桥上,如果是用’none’参数,就禁用了容器的网络
-bip 默认是空,使用提供的CIDRClasslessInter-Domain Routing-无类型域间选路)标记地址动态创建网桥(dcoker0),-b参数冲突
-d 默认false 允许进程模式(daemonmode)
-dns 默认是空,使docker使用指定的DNS服务器
-g 默认是”/var/lib/docker”:作为docker使用的根路径
-icc 默认true,允许inter-Container来通信
-ip 默认”0.0.0.0″:绑定容器端口的默认Ip地址
-iptables 默认true 禁用docker添加iptables规则
-mtu 默认1500 : 设置容器网络传输的最大单元(mtu)
-p 默认是/var/run/docker.pid进程pid使用的文件路径
-r 默认是true 重启之前运行的容器
-s 默认是空 ,这个是docker运行是使用一个指定的存储驱动器
-v 默认false 打印版本信息和退出

2.docker run命令参数详解

-a=map[]: 附加标准输入、输出或者错误输出
-c=0: 共享CPU格式(相对重要)
-cidfile=””: 将容器的ID标识写入文件
-d=false: 分离模式,在后台运行容器,并且打印出容器ID
-e=[]:设置环境变量
-h=””: 容器的主机名称
-i=false: 保持输入流开放即使没有附加输入流
-privileged=false: 给容器扩展的权限
-m=””: 内存限制 (格式:, unit单位 = b, k, m or g)
-n=true: 允许镜像使用网络

-p=[]: 匹配镜像内的网络端口号  

  例如docker run -it -p 10000:22 --name test ubuntu:14.04 /bin/bash就是用宿主机的10000端口映射容器的22端口。 

-rm=false:当容器退出时自动删除容器 (不能跟 -d一起使用)
-t=false: 分配一个伪造的终端输入
-u=””: 用户名或者ID
-dns=[]: 自定义容器的DNS服务器
-v=[]: 创建一个挂载绑定:[host-dir]:[container-dir]:[rw|ro].如果容器目录丢失,docker会创建一个新的卷
-volumes-from=””: 挂载容器所有的卷
-entrypoint=””: 覆盖镜像设置默认的入口点
-w=””: 工作目录内的容器
-lxc-conf=[]: 添加自定义-lxc-conf=”lxc.cgroup.cpuset.cpus = 0,1″
-sig-proxy=true: 代理接收所有进程信号(even in non-tty mode)
-expose=[]: 让你主机没有开放的端口
-link=””: 连接到另一个容器(name:alias)
-name=””: 分配容器的名称,如果没有指定就会随机生成一个
-P=false: Publish all exposed ports to thehost interfaces 公布所有显示的端口主机接口

五、容器的使用

1.容器的启动,停止和删除

sudo docker ps -a //查看容器

sudo docker start [container_name] //启动容器

sudo docker pause [container_name]   //暂停容器

sudo docker stop [container_name]   //停止容器

sudo docker restart [container_name]  //重启容器

sudo docker rm [container_name]  //删除容器,得先关闭容器,才能删除容器

sudo docker logs [container_name]  //列出容器的标准输出

2.镜像的删除

sudo docker images //列出所有镜像

sudo docker stop $(sudo docker ps -a -q)   //停止所有容器

sudo docker rmi [image]   //删除指定镜像

sudo docker rmi  $(sudo docker images | grep “^” |awk “{print $3}”) //删除无标识镜像,即idnone的镜像

sudo rmi $(sudo docker images -q)   // 删除所有镜像

3.使用容器工作

sudo docker version  // 查看docker版本信息

sudo docker    //查看docker客户端的所有命令行选项

sudo docker commit [container] [newimageName]   //提交自己的容器状态作为一个镜像

sudo docker export [container_ID] > ubuntu.tar  //导出容器快照

cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0   //从文件快照中导入为镜像

sudo docker import http://example.com/exampleimage.tgz example/imagerepo  //指定url导入为镜像

4.创建自己的镜像

sudo docker run -t -i ubuntu:14.04 /bin/bash  //用已有镜像创建一个新的容器

修改容器之后,提交容器状态,生成自己的镜像

docker commit [container] [newImage]

六、使用docker hub(私有仓库) 

1.登录docker中心

可以直接在docker hub创建账户,或是使用下面命令

sudo docker login

2.查看镜像

sudo docker search ubuntu

3.获取镜像

sudo docker pull ubuntu

4.推送镜像到docker hub仓库

sudo docker push yourname/newname //以镜像名字或者标签来标记

额外功能

curl -v -X POST -H "Content-Type: application/json" -d '{"Binds":["/tmp:/tmp"],"PortBindings":{"22/tcp":[{"HostPort":"10000"}]},"PublishAllPorts":false,"Privileged":false}' http://localhost:5555/containers/suspicious_cori/start

远程api的数据格式如下

{"HostName":"",

"User":"",

"Memory":0,"MemorySwap":0,

"AttachStdin":true,"AttachStdout":true,"AttachStderr":true,"portSpecs":null,

"Tty":true,"OpenStdin":true,"StdOnce":true,"Env":null,

"Cmd":["/usr/sbin/sshd","-D"],

"Image":"ubuntu-ssh","Tag":"latest",

"volumes":{"/tmp":{}},"WorkingDir":"",

"DisableNetwork":false,

"ExposedPorts":{"22/tcp":{},"80/tcp":{}} ,

"PortBindings":{"22/tcp":[{"HostIp":"172.171.5.60","HostPort":"2001"}],"80/tcp":[{"HostIp":"172.171.5.60","HostPort":"2002"}]}  } 


你可能感兴趣的:(自我学习)