Docker的安装与使用
Docker的安装与使用
What Docker
名称 | 含义 |
---|---|
中文名 | 应用容器引擎 |
外文名 | Docker |
类 别 | 操作系统层虚拟化 |
许可协议 | Apache License 2.0 |
发行日期 | 2013年 |
编程语言 | Go |
思想来源- -集装箱
-
Docker的三要素
- 镜像
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
- 容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。 - 仓库
镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
- 镜像
Docker的安装
1.使用 Homebrew 来安装 Docker
- ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
- brew cask install docker
- Docker app - -> Next- ->密码- ->小鲸鱼的图标
2.手动下载安装
点击链接 Stable 下载
Docker的使用
-
检查版本
确保你的版本docker,docker-compose以及docker-machine均达到最新和兼容Docker.app,如果您运行的是不同版本,则输出可能会有所不同。
- docker --version
- docker-compose --version
- docker-machine --version
-
镜像加速
鉴于网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。
-
案例
-
案例1
- 拉取hello-world镜像:
docker pull hello-world
- 查看hello-world镜像信息:
docker images hello-world
- 根据镜像生成对应容器:
docker run hello-world
- 查看当前所有容器:
docker ps -a
- 也可以根据镜像生成一个具体名称的镜像
- 先删除当前容器:
docker rm 60
- 如果当前容器正在运行,要删除这个容器,则使用命令:
docker rm -f 60
- 使用镜像生成具体名称的容器:
docker run --name qingqing hello-world
- 先删除当前容器:
- 关于更多的docker run的命令可以使用来查看:
docker run --help
- 拉取hello-world镜像:
-
案例2
-
启动docker的web服务:
docker pull nginx
docker run -d -p 80:80 --name webserver nginx
-p参数是使用宿主机的80映射容器的80端口 -
交互式终端方式进入 webserver容器:
docker exec -it webserver bash
-
修改nginx的显示页面:
echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
exit
-
修改了容器的文件,也就是改动了容器的存储层。我们可以通过 docker diff:
docker diff webserver
-
使用docker commit生成镜像:
docker commit --author "qingqing<[email protected]>" --message "修改了默认网页" webserver nginx:v2
-
查看当前nginx镜像:
docker images nginx
-
查看当前所有的容器,包括运行的和停止的:
docker ps -a
-
启动新的容器:
docker run --name newwebserver -d -p 80:80 nginx:v2
-
浏览器访问:localhost
-
-
案例1