docker笔记
来源:互联网 发布:相片冲印软件 编辑:程序博客网 时间:2024/04/30 12:16
- 一 docker是什么
- 二 为什么使用docker
- 三docker有哪些不足
- 四Docker组件
- 五 mac中安装docker
- 六 docker常用操作
一 、docker是什么
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器上。区别于VM,docker只包含应用程序以及依赖库,共享宿主机操作系统已有的一些基础功能服务,所以Docker的资源占用很低,非常的轻量高效。
二 、为什么使用docker
1. 快速的交付和部署 试想一下当我们在一个新服务器中部署一个javaweb应用时,我们需要安装jdk,web服务器、数据库等环境,以及各种配置文件, 还要处理不同版本系统间的软件兼容问题,想想是不是就觉得很繁琐。但是有了docker我们可以把各种环境和配置打包成docker 镜像,部署时只需安装好docker然后从仓库中把打包的镜像pull下来启动容器就搞定2. 高效的虚拟化 Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率3. 轻松的迁移和扩展 Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性 可以让用户把一个应用程序从一个平台直接迁移到另外一个4. 更简单的管理 使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理
三、docker有哪些不足
- Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
- LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
- 隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
- 网络管理相对简单,主要是基于namespace隔离
- cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
- docker对disk的管理比较有限
- container随着用户进程的停止而销毁,container中的log等用户数据不便收集
四、Docker组件
docker主要由三个部分组成1. Docker Client:命令行工具,是用户使用Docker的主要方式, Docker client与Docker daemon通信并将结果返回给用户,Docker client也可以通过socket或者RESTful api访问远程的Docker daemon2. Docker Daemon:运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互3. Docker hub/registry:共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry
五、 mac中安装docker
mac中安装docker有两种方式:docker for mac 和 docker toolbox前者安装更加的简单方便,本文只讲第一种方式的安装,如果想使用后者可以阅读官方文档安装环境要求:1. Mac必须是2010或者以后出的,cpu支持MMU、EPT技术2. OS X 10.10.3 Yosemite或更新的系统3. 最低4G内存4. 未安装过4.3.30之前的VirtualBox,因为与Docker for Mac有冲突下载链接:<https://docs.docker.com/docker-for-mac/>
喜欢体验新特性的读者可以下载测试版本,本文下载的是稳定版本安装步骤略过,启动后的样子
安装完后打开终端测试一下:docker --versionDocker version 1.12.1, build 6f9534cdocker-compose --versiondocker-compose version 1.8.0, build f3628c7docker-machine --versiondocker-machine version 0.8.1, build 41b3b25输出正常说明安装成功
在进入hello world前先来了解一下docker中的三个个重要的东西:
镜像(image)仓库(存储装镜)和容器(container)它们像是这样的关系
所以在运行容器前我们需要先取得镜像
在命令行中敲入:docker images
bogon:~ always$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE
可以看到当前在我们的电脑里是没有任何镜像的,然后再敲入下面的命令
bogon:~ always$ docker run hello-worldUnable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-worldc04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9Status: Downloaded newer image for hello-world:latest后略
docker run hello-world 命令run主要做了两件事,从本地查找是否有名称为hello-world的镜像,如果没有则自动
从镜像仓库中下载,然后使用该镜像自动创建一个容器,最后启动该
容器
再次输入docker images
bogon:~ always$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest c54a2cc56cbb 3 months ago 1.848 kB
可以看到关于hello-world镜像的详细信息,到此docker初体验完成
另外mac上有docker的可视化管理工具Kitematic,配置和操作也是非常的简便,可以尝试一下,它看起来是这样的:
六、 docker常用操作
1、查看本地所有镜像:
docker images
2、拉取镜像
docker pull imageName
docker pull ubuntu
3、创建容器
docker create [option] imageName
docker create --name ubuntu01 ubuntu
使用create命令创建一个ubuntu系统的容器,镜像名为ubuntu,并指定容器名称为ubuntu01,该命令只创建容器不会运行容器
4、创建并启动容器
docker run [option] imageName
docker run -d -p 8888:80 --name webserver nginx
使用run命令创建一个nginx容器,–name webserver:指定容器名称为webserver,-d:以后台方式运行,-p 8888:80为端口映射,想要从外部访问容器的80端口只需访问宿主机的8888端口,端口可以绑定多个,
启动成功后这时我们可以通过:http://localhost:8888访问容器中的nginx
5、启动已创建的容器
docker start containerName/containerId
docker start ubuntu
使用start命令启动一个叫ubuntu的容器
6、停止容器
docker stop containerName/containerId
docker stop ubuntu
7、查看容器
查看所有:
docker ps -a
查看运行中:
docker ps
8、删除容器
docker rm containerName/containerId
docker rm ubuntu
9、进入容器进行管理
docker exec -it containerName/containerId
docker exec -it ubuntu /bin/bash
10、退出容器管理
Ctrl+P Ctrl+Q
11、删除镜像
docker rmi imageName/imageId,删除前需要先删除关联的容器
docker rmi ubuntu
12、保存镜像
docker commit containerName/containerId imageName/imageId
ALWAYSdeMacBook:/ always$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0689af155777 ubuntu "/bin/bash" 48 seconds ago Up 46 seconds ubuntu01ALWAYSdeMacBook:/ always$ docker commit 0689af155777 ubuntusha256:11a9fa3b4de15da8e3437461f8e81f67220342d8633d4cb4298c3a4a9f2104f9
对运行的容器安装了软件或者做了其它的修改时需要把新的内容保存到镜像中去,否则该镜像新创建的容器运行时又恢复成原样
- docker笔记
- Docker笔记
- Docker笔记
- Docker笔记
- Docker笔记
- docker笔记
- Docker 笔记
- Docker笔记
- Docker笔记
- docker 笔记
- docker笔记
- docker笔记
- docker笔记
- Docker笔记
- docker 笔记
- Docker学习笔记-Docker入门
- docker笔记(初识docker)
- Docker学习笔记-Docker容器
- Drawerlayout 侧拉栏事件传递问题
- java 多线程
- 学习python字符串(1)
- ionic创建项目报错:Couldn't find ionic.config.json file. Are you in an Ionic project?
- 速度挑战 - 2小时完成HTML5拼图小游戏
- docker笔记
- Reverse Linked List
- 歌词
- 怎么解决上传文件时winSCP报错误码3(如何用root帐号登录winscp)
- 1619-7 张良 十月五号总结 [连续第五天]
- 虚继承总结(重点:虚继承与虚函数)
- jquery中的trigger和triggerHandler区别
- maple18的plot绘图真怪异
- App网络传输协议(Json、XML、protobuf)