Docker学习笔记 - XLab-Tongji/KAOSer GitHub Wiki
Windows Docker 安装:
win7、win8 系统
win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
docker toolbox 是一个工具集,它主要包含以下一些内容:
Docker CLI 客户端,用来运行docker引擎创建镜像和容器 Docker Machine. 可以让你在windows的命令行中运行docker引擎命令 Docker Compose. 用来运行docker-compose命令 Kitematic. 这是Docker的GUI版本 Docker QuickStart shell. 这是一个已经配置好Docker的命令行环境 Oracle VM Virtualbox. 虚拟机
点击 Docker QuickStart 图标来启动 Docker Toolbox 终端。
如果系统显示 User Account Control 窗口来运行 VirtualBox 修改你的电脑,选择 Yes。
$
符号表示你可以输入命令来执行了。
Win10 专业版系统
现在 Docker 有专门的 Win10 专业版系统的安装包,需要开启Hyper-V
安装 Toolbox 最新版 Toolbox 下载地址: https://www.docker.com/get-docker 点击 Get Docker Community Edition,并下载 Windows 的版本。
运行安装文件 双击下载的 Docker for Windows Installe 安装文件,一路 Next,点击 Finish 完成安装。
安装完成后,Docker 会自动启动。通知栏上会出现个小鲸鱼的图标,这表示 Docker正在运行。桌边也会出现三个图标。 我们可以在命令行执行 docker version 来查看版本号,docker run hello-world 来载入测试镜像测试。 如果没启动,可以在 Windows 搜索 Docker 来启动。
- 查找已存的镜像:
docker search <name>
- 后台运行:
docker run -d <name>
- 指定版本:
docker run -d redis:latest
- 删除正在运行的容器:
docker rm -f 容器名
- 列出所有在运行中的容器:
docker ps
- 提供有关正在运行的容器的更多详细信息,例如IP地址:
docker inspect <friendly-name|container-id>
- 显示容器已写入标准错误或标准输出的消息:
docker logs <friendly-name|container-id>
- 绑定端口并重新定义容器名字:
docker run -d --name redisHostPort -p 6379:6379 redis:latest
(默认端口0.0.0.0)docker run -d --name redisHostPort -p 127.0.0.1:6379:6379 redis:latest
运行多个实例:docker run -d --name redisDynamic -p 6379 redis:latest
, 但此时不知道端口,需要:docker port redisDynamic 6379
- 容器可以绑定主机上的目录,使数据存储在主机上不会丢失:
docker run -d --name redisMapped -v /opt/docker/data/redis:/data redis
pwd为当前目录 :docker run -d --name redisMapped -v "$PWD/data":/data redis
如果不指定-d,容器将在前台运行,若想与bash shell交互,可用-it:docker run ubuntu ps docker run -it ubuntu bash
- 创建构建映像的Dockerfile:
FROM nginx:alpine
COPY . /usr/share/nginx/html
第一行定义了我们的基本镜像。 第二行将当前目录的内容复制到容器内的特定位置。 构建镜像:docker build -t webserver-image:v1 webserver-image为名字,v1为标签
Docker镜像是基于Dockerfile构建的。 Dockerfile定义了在配置应用程序并准备作为容器运行的情况下创建Docker镜像所需的所有步骤。
定义基本映像后(FROM...),我们需要运行各种命令来配置映像。有许多命令可以帮助解决这个问题,主要的命令有两个是COPY和RUN:
-
RUN <command>
允许您像在命令提示符下那样执行任何命令,例如安装不同的应用程序包或运行构建命令。 RUN的结果将保留在映像中,因此不要在磁盘上留下任何不必要的或临时的文件,因为这些文件将包含在映像中。 -
COPY <src> <dest>
允许您将包含Dockerfile的目录中的文件复制到容器的映像中。 这对于要在容器内部署的源代码和资产非常有用COPY index.html /usr/share/nginx/html/index.html
文件名也要是目标地址的一部分。
定义哪个端口访问应用程序:EXPOSE <port>
Dockerfile中的CMD行定义了在启动容器时运行的默认命令:CMD ["nginx", "-g", "daemon off;"]
编写Dockerfile后,需要使用docker build将其转换为图像。 build命令接收包含Dockerfile的目录,执行步骤并将映像存储在本地Docker Engine中:docker build -t my-nginx-image:latest .
启动新构建的镜像实例并绑定端口:docker run -d -p 80:80 <image-id|friendly-tag-name
WORKDIR 定义一个工作目录,以确保所有将来的命令都是从相对于我们的应用程序的目录执行的。 安装所需的依赖,需要在Dockerfile里增加以下两行:
COPY package.json /src/app/package.json
RUN npm install
应用程序指定命令已经以ONBUILD为前缀。结果是我们可以构建此镜像,但在将构建的镜像用作基本镜像之前,不会执行特定于应用程序的命令。 然后它们将作为基本镜像构建的一部分执行。OnBuild映像的创建优势在于我们的Dockerfile现在变得更加简单,并且可以在多个项目中轻松重用,而无需重新运行相同的步骤来缩短构建时间。