Docker学习1

Docker学习1

初看docker的两个地方

阿里云docker官方文档
docker中文网
由于被墙了因此用阿里云的容器镜像服务
为了方便部署上线,使用Docker是一个很是好的选择html


win10专业版或者企业版

直接开Hyper官网下载dockergit


windows低一点的系统

下载docker-toolbox,安装完毕后,将docker-machine添加到环境变量。接着能够用git-bash命令建立一个github

docker-machine create --engine-registry-mirror=https://5f2jam6c.mirror.aliyuncs.com -d virtualbox default

用的是阿里云的加速库。这是个人阿里云加速,使用阿里云加速的方法是
登录后在容器镜像服务中选加速器而后查看windows版本下的加速命令便可。docker

https://dev.aliyun.com/search.html

ssh链接docker-machine的命令以下
ssh docker@192.168.99.100
密码是tcuserwindows


Dockerfile

github中项目中通常都会有.gitignore,README.md,有时候还会有个Dockerfile,.gitignore和README.md咱们都知道是什么,那么Dockerfile又是什么呢?Dockerfile天然就关联到docker了,它是面向开发者(Dev)的,开发者把须要什么系统,须要装什么软件,须要怎么配置环境等等所有都写进Dockerfile里面,至关因而一个基于docker的全自动生成镜像的一个脚本,至少我是这么理解的。而有个这个Dockerfile,别人只用在这个Dockerfile的目录下执行docker build -t image:tag 就能够由你的Dockerfile生成镜像,是否是很方便?
自从有了Dockerfile,开发者就能够取代一部分原来由运维(Ops)作的部署工做(deployment),也就增强了运维和开发的联系,加快的了工做的效率,其实Dockerfile还不算最高效率,最高的效率是直接移植如今作好的docker镜像,把Dockerfile build中各类网络下载安装,还有编译的时间都省去了,真的作到开箱即用安全

镜像

镜像是docker的静态,由Dockerfile生成的是镜像而不是容器,你能够经过sudo docker images查看你如今有多少的镜像,docker的镜像是docker移植的关键,固然容器也能够export出来再import回去,可是通常都是save和load docker镜像为主bash

容器

容器是docker的动态,由镜像run出来的(sudo docker run),容器是docker的精华,你能够理解为容器技术就是应用了集装箱的思惟,把所须要的全部东西都放进一个集装箱(container)里面,哪里须要服务,我直接把整个集装箱运过去,而后你进去集装箱享受服务就行了
容器是不会自动保存改动到原来的镜像的,除非你commit容器造成一个快照,可是这个操做其实就是将如今改动过的动态的容器新存为一个静态的镜像,而不是保存为原来的镜像。服务器


经常使用命令

#从当前目录下的Dockerfile(命名dockerfile好像也能识别,其余就不行了)创建镜像
sudo docker build -t reponame:tag .
#别忘了最后那个.!

sudo docker images #查看镜像
sudo docker ps  #查看当前运行的容器
sudo docker ps -a #查看所有容器(包括运行中的和中止的)

sudo docker run -it --name blabla  -p <物理机>:<容器>(e.g. 127.0.0.1:3306:3306)  -v /your/local/path/:/map/path/in/docker/ -v /etc/localtime:/etc/localtime --net =host -d reponame:tag
# 启动容器 
#[-it 是启动交互和伪终端]
#[-p  <IP>:<宿主机端口>:<容器端口>  将宿主机(物理机)映射或者能够理解为绑定,<IP>能够指定,也能够不指定,不指定默认是0.0.0.0,建议仍是指定]
#[-v  是挂载本机目录到到docker目录,最好每次都把-v /etc/localtime:/etc/localtime也带上,确保docker 容器内时间和服务器时间一致]
#[-d  是daemonize的意思,就是使容器成为守护进程,后台运做]  
#[--net是设置docker的网络模式,默认不设置的话就是bridge模式,如今设置为和物理机网络绑定的host模式,更多能够看 Docker的4种网络模式(http://www.cnblogs.com/gispathfinder/p/5871043.html)
#[--link 是容器连接]


#复习几个特别的IP:
#①127.0.0.1是本地回环地址,代指本机; [对于绑定在127.0.0.1的端口而言,外部没法访问,不对外打开,仅仅对内打开]
#②0.0.0.0 表明全部不清楚的IP,安全性差,也是指本机?;[对于绑定在0.0.0.0的端口而言,外部能够访问]
#③255.255.255.255 用人类的话说:“嘿,这屋子的全部人听着了!”
#④localhost  这个是域名,通常都是127.0.0.1,这种对应关系写在你的/etc/hosts里面

sudo docker start/stop/restart/rm  blabla #启动/中止/重启/删除 容器
sudo docker cp blabla:/app/file.txt .  # 把docker里面/app目录下的file.txt文件复制出来到如今所在的目录

sudo docker exec -it blabla /bin/bash #在启动的容器blabla中运行/bin/bash
sudo docker exec -it blabla /the/path/of/your/command

sudo docker commit blabla  repo:tag  #提交保存容器到一个新的镜像repo:tag

sudo docker rmi  repo:tag #删除镜像

#容器的导出和导入
sudo docker export 
sudo docker import 

#镜像的导出和导入
[文件]
sudo docker save repo:tag > backup.tar
sudo docker load < backup.tar
[dockerhub]
sudo docker login
sudo docker push repo:tag
sudo docker pull repo:tag 

#经常使用组合命令
#中止全部docker容器
sudo docker kill $(sudo docker ps -q)
#删除全部docker容器
sudo docker rm $(sudo docker ps -aq)
相关文章
相关标签/搜索