docker

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/

原文地址:https://www.cnblogs.com/wjx0912/p/6206162.html