一、安装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 默认是空,使用提供的CIDR(ClasslessInter-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=””: 内存限制 (格式:
-n=true: 允许镜像使用网络
-p=[]: 匹配镜像内的网络端口号
例如docker run -it -p 10000:22 --name test ubuntu:14.04 /bin/bash就是用宿主机的10000端口映射容器的22端口。
-rm=false:当容器退出时自动删除容器 (不能跟 -d一起使用)五、容器的使用
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 “^
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"}]} }