Docker的目的是创建软件程序可移植的轻量容器,让其可以在任何安装了Docker的机器上运行,而不用关心所在的环境。
安装
1.在Docker Hub Registry里的大多数镜像都是64位的。
2.linux上安装docker需要kernel3.8以上。
配置
1.设置代理
在/etc/default/docker.io中 设置export http_proxy=xxx
Docker概念
镜像
1.Docker允许创建镜像时指定卷和端口。从这个镜像创建的容器继承这些设置。Docker不允许在镜像上指定任何不可移植的内容。
容器
1.在镜像中创建容器,应用由容器来运行。镜像和容器都拥有一个唯一的ID。
2.容器对外可以公开服务,Docker允许公开容器的特定端口。容器启动时,被分配一个随机的私有IP,其他容器可以使用这个IP与其进行通信,这意味着容器将共享一个本地网络。
3.容器被设计用来运行单进程,无法模拟完整的环境。
数据卷
1.容器内的应用可以访问到数据,但数据实际保存在容器之外,在不影响数据的情况下销毁、修改、删除容器。
2.数据卷保存在运行Docker的宿主文件系统上。
3.数据卷可以在容器间共享数据。
链接
要开启容器间通讯,Docker允许你在创建一个新容器时引用其它现存容器,在你刚创建的容器里被引用的容器将获得一个(你指定的)别名。我们就说,这两个容器链接在了一起。
Docker要求声明容器被链接时要开放哪些端口给其他容器,否则将没有端口可用。
命令
//显示当前版本
docker version
//从公共registry下载一个镜像
docker pull xxxx
//列出本地镜像
docker images
//显示docker运行的容器
docker ps
//检索镜像
docker search image_name
//创建运行容器
docker run [option] image command
--rm 运行的进程退出就删除容器
-d 后台运行
-i -t 交互式
//停止容器运行
docker stop <容器id>
//提交容器生成新的镜像。新镜像是原镜像和容器的整合。
docker commit <容器ID> imagename
//打包镜像
docker save imagename > xxx.tar
//在另外一台机器导入镜像
docker load < xxx.tar
//进入容器内执行
docker exec image xxx
//删除所有未运行的容器
docker ps -a -q | xargs docker rm
//查看容器的构建信息
docker inspect containerID
//保存容器结果
docker commit containerID images-Name
//在容器中安装程序
docker run image_name apt -get install -y app
docker tag
镜像的tag像是一个软连接,多个tag可以指向同一个image id。
//把同一个image映射为两个版本
docker tag image_id repo:version1
docker tag image_id repo:version2
端口映射
由于docker容器的IP地址每次启动都会变,所以不适用于手动添加端口映射。每次启动容器时由docker自动添加NAT规则,尽可能的把端口映射在创建容器时配置好。
-p oldport : newport