Docker使用总结

1) 什么是Docker

基本架构

2) Docker核心概念

Docker镜像

Docker容器

Docker仓库

例如:

containerregistry.oracle.com/middleware/weblogic:12.2.1. 3

3) Docker的安装与配置

CentOS

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。推荐使用 CentOS 7.4.1708

# yum install -y yum-utils device-mapperpersistent-data lvm2
# yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# yum install docker-ce –y
# systemctl enable docker && systemctl start docker

Windows 10

系统要求

Docker for Windows 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V。

安装

运行

在 Windows 搜索栏输入 Docker 点击 Docker for Windows 开始运行。

macOS

系统要求

Docker for Mac 要求系统最低为 macOS 10.10.3 Yosemite。如果系统不满足需求,可以安装 Docker Toolbox。

安装

Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:

$ brew cask install docker

运行

从应用中找到 Docker 图标并点击运行。

其它

其它未涉及到的操作系统,可以查看Docker官方网站的install overview


4) 使用Docker镜像

获取镜像

Docker Hub上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。

从 Docker 镜像仓库获取镜像的命令是 docker pull。 其命令格式为:

docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名[:标签]

DockerPull

具体的选项可以通过 docker pull --help 命令看到, 这里我们说一下镜像名称的格式。

列出镜像

要想列出已经下载下来的镜像,可以使用 docker image ls 命令。

DockerImageLs

列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。

其中仓库名、标签在之前的基础概念章节已经介绍过了。镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签。

删除本地镜像

如果要删除本地的镜像,可以使用 docker image rm (或者docker rmi) 命令,其格式为:

$ docker image rm [options] <image1> [<iamge2> ...]

DockerImageRm

其中可以镜像名称或者镜像ID

如果需要查看当前系统镜像占用的存储空间情况,可以使用 docker system df 命令。

导入和导出镜像

如果要导出镜像可以使用 docker save命令,例如:

docker save mysql:5.7 -o mysql_56.tar

如果要导入镜像可以使用 docker load 命令,例如:

docker load -i mysql_56.tar

导入和导出镜像一般使用在非联网计算机场景下。


5) 管理Docker容器

查看容器

查看正在运行的容器

docker ps

查看所有容器(包含已停止的容器)

docker ps -a

DockerPs-a

注意:这里的 -a 是 --all 参数的缩写

启动容器

启动容器

docker run centos:latest echo “Hello World!”

DockerRun

启动已停止容器

docker start -a <容器id>

这里的 -a 是 --attach 参数的缩写,请多多利用 docker start –help 确认

启动容器,退出时自动销毁容器

docker run --rm centos:7.4.1708 echo “Hello World!”

后台运行

将命令运行再后台并指定端口映射关系

docker run --rm -d -p 8080:8080 tomcat:7-jre7

注意:

  1. 牢记在端口映射中,本地端口在前,容器内端口在后

  2. 使用后,原先利用Dockersystemd/supervisor让应用在后台运行的方式不需要带入到容器的使用场景中

停止容器

停止容器

首先通过 docker ps 查看正在运行的容器,然后通过 docker stop 命令停止

docker stop <容器ID或名称>

DockerStop

注意:

停止后的容器依然会占用主机资源(例如网络端口),若要释放资源,则需要删除容器

进入容器

进入容器(适用于正在运行的容器,一般是用于调试)

docker exec -it <容器名或id> bash/ash

DockerExec

注意:

镜像中使用了不同的Shell,使用前需要查询下基础镜 像名,一般alpine镜像用的是ash

删除容器

删除容器

docker rm <镜像ID或名称>

DockerRm

注意:

  1. 容器删除后,曾经在容器内写入的数据会被抛弃,因此需要谨慎对待
  2. 在应用程序设计和实现阶段,需要充分考虑容器的分层存储特性,生产阶段将需要持久化保存的数据保存在容器外
  3. 而开发测试阶段可以利用分层存储的特性,构建不同的测试环境

6) 制作应用镜像

Dockerfile

A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image.

DockerFile

解读

text document:通常是名为Dockerfile的文件(Windows用户 需要注意,这个文件没有后缀)

all the commands:通常在Dockerfile中以指令的形式存在。


7) Docker Compose项目

项目简介

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器的快速编排,提升本地开发和测试效率。

其代码目前在github上开源。

Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。

安装与使用

Compose 支持 Linux、macOS、Windows 10 三大平台。

Docker for Mac 、Docker for Windows 自带 dockercompose 二进制文件,安装 Docker 之后可以直接使用。

Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用。

# curl -L https://github.com/docker/compose/releases/downlo ad/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

编排文件

定义:

The Compose file is a YAML file defining services, networks, and volumes for a Docker application.

ComposeFile

解读:

a YAML file: 意味着需要按照YAML文件的规范进行, 需要注意缩进

术语:

服务 (service):一个应用容器,实际上可以运行多个 相同镜像的实例。

项目 (project):由一组关联的应用容器组成的一个完 整业务单元。

可见,一个项目可以由多个服务(容器)关联而成, Compose 面向项目进行管理。


8) 资源链接

Docker Documentation

Docker Hub

Docker — 从入门到实践

Table of Contents