1.Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司。Docker自开源后就受到广泛的关注和讨论,
目前已有多个相关项目,逐渐形成了围绕Docker的生态体系。dotCloud公司后来也改名为Docker Inc,专注于Docker相关技术和产品的开发。
2.Docker是一个新的容器化的技术,它轻巧,且易移植,号称“build once, configure once and run anywhere
关于DevOps的一些有意思的观点,这有助于理解为什么使用docker:
http://server.zol.com.cn/593/5933044.html
http://www.oschina.net/news/78004/how-about-learn-devops-at-2016
=======================================================================================================
docker在ubuntu-14.04上安装
参考:https://docs.docker.com/engine/installation/linux/ubuntulinux/,下面的实际上都来自这个网页
(1)检查内核版本,需要大于3.10,这通常不是问题
$ uname -r
(2)更新源
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
$ apt-cache policy docker-engine 可以查看docker版本(和https://github.com/docker/docker比较版本)
$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
$ sudo apt-get install docker-engine
(3)查看信息和版本,升级
$ sudo docker version
$ sudo docker info
当前docker服务是root运行,所以上面2个指令也需要root权限
$ sudo service docker start
$ sudo docker run hello-world
$ sudo apt-get upgrade docker-engine 升级
(4)自动补全,用户组,及代理
/root/.bashrc最后加一行
. /usr/share/bash-completion/bash_completion
用户组:
执行gpasswd -a wyt docker 和service docker restart,把用户wyt加入到docker组,以后就不需要带sudo了
代理:
修改Docker配置文件/etc/default/docker如下:
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io"
使用service docker restart重启Docker服务即可
(5)在web上维护docker
推荐安装https://github.com/portainer/portainer
启动脚本加入:
/home/wyt/bin/portainer/portainer --assets="/home/wyt/bin/portainer" &
=======================================================================================================
传统虚拟机和docker区别:
vs
仓库—仓库是存放镜像的地方,有类似git的版本控制,同样分为公开仓库(Public)和私有仓库(Private)两种形式;
镜像—Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息;
容器—容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,Docker运行在“Docker”上;
常用命令:
docker pull index.alauda.cn/alauda/ubuntu
docker images 得到image id:7e0e965a5c9f
docker run -i -t -v /data/:/data/ 7e0e965a5c9f /bin/bash
# 下载一个ubuntu镜像
sudo docker pull ubuntu
# 使用ubuntu运行一个交互性的shell
sudo docker run -i -t ubuntu /bin/bash
#docker ps命令
sudo docker ps #列出当前所有正在运行的container
sudo docker ps -l #列出最近一次启动的,且正在运行的container
sudo docker ps -a #列出所有的container
#port命令
docker run -p 80:8080 <image> <cmd> #映射容器的8080端口到宿主机的80端口
#删除容器命令
sudo docker rm `sudo docker ps -a -q`#删除所有容器
sudo docker rm $CONTAINER_ID#删除容器id为CONTAINER_ID的容器
#其他命令快速参考:
sudo docker images #查看本地镜像
sudo docker attach $CONTAINER_ID #启动一个已存在的docker实例
sudo docker stop $CONTAINER_ID #停止docker实例
sudo docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
sudo docker inspect $CONTAINER_ID #查看container的实例属性,比如ip等等
docker run <相关参数> <镜像 ID> <初始命令>
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中
-d: 后台运行
格式:-v <宿主机目录>:<容器目录>
docker run index.alauda.cn/alauda/ubuntu /bin/bash
docker run -i -t -v /data/:/data/ index.alauda.cn/alauda/ubuntu /bin/bash
docker run --name ubuntu1 -i -t -v /data/:/data/ index.alauda.cn/alauda/ubuntu /bin/bash
docker run --name ubuntu1 -i -t -v /data/:/data/ -p 8080:80 index.alauda.cn/alauda/ubuntu /bin/bash
docker run --name ubuntu1 -i -t -v /data/:/data/ -p 8080:80 --restart=always index.alauda.cn/alauda/ubuntu /bin/bash
(容器的80端口,主机的8080端口)restart always表示开机自动启动container
更改镜像和容器默认存储路径:
Ubuntu/Debian: edit your /etc/default/docker file with the -g option: DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"
Fedora/Centos: edit /etc/sysconfig/docker, and add the -g option in the other_args variable: ex. other_args="-g /var/lib/testdir".
镜像操作:
docker images
docker images -a
docker tag nginx nginx2
docker rmi nginx2
docker rmi nginx (当删除一个镜像的最后一个tag时,该镜像文件也会被删除,指定id也可以直接删除)
docker save busybox -o 1.tar
docker load --input 1.tar
一个重要的镜像:https://github.com/hopsoft/docker-graphite-statsd
docker pull hopsoft/graphite-statsd
docker run -d --name graphite --restart=always -p 65160:80 -p 65163-65164:2003-2004 -p 65173-65174:2023-2024
-p 65175:8125/udp -p 65176:8126 hopsoft/graphite-statsd
浏览器打开:http://192.168.8.163:65160/