Docker 快速上手
一、简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布到镜像仓库,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
二、基本概念
docker主机(Host):安装了Docker程序的机器,Docker直接安装在操作系统(windows / linux)上;
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。
Client   ---------> Host  --------->  Registry使用Docker的基本步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件应用的启动停止;
三、Docker 安装
1、环境准备
检查内核版本,Linux 必须是3.10及以上
检查命令:
uname -r2、安装docker
yum install docker3、查看版本
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.63、启动docker
[root@localhost ~]# systemctl start docker4、开机启动
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.5、停止docker
systemctl stop docker四、Docker 常用命令&操作
1、镜像操作
Docker Hub 地址: https://hub.docker.com/
镜像常用操作:
| 操作 | 命令 | 说明 | 
|---|---|---|
| 检索 | docker search 关键字eg:docker search redis  | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。 | 
| 拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest | 
| 列表 | docker images | 查看所有本地镜像 | 
| 删除 | docker rmi image-id | 删除指定的本地镜像 | 
2、容器操作
(1)搜索镜像命令:
docker search 镜像名称示例:
docker search tomcat也可以在 Docker Hub直接搜索。
(2)拉取镜像:
docker pull 镜像名称示例:
docker pull mysql(3)查看本地镜像列表
docker images [OPTIONS] [REPOSITORY[:TAG]]OPTIONS说明:
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
 - –digests :显示镜像的摘要信息;
 - -f :显示满足条件的镜像;
 - –format :指定返回值的模板文件;
 - –no-trunc :显示完整的镜像信息;
 - -q :只显示镜像ID。
 
(4)根据镜像启动容器基本命令:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run --name 容器名称 -d 镜像名称:latestOPTIONS说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
 - -d: 后台运行容器,并返回容器ID;
 - -i: 以交互模式运行容器,通常与 -t 同时使用;
 - -P: 随机端口映射,容器内部端口随机映射到主机的端口
 - -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
 - -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
 - –name=”nginx-lb”: 为容器指定一个名称;
 - –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
 - –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
 - -h “mars”: 指定容器的hostname;
 - -e username=”ritchie”: 设置环境变量;
 - –env-file=[]: 从指定文件读入环境变量;
 - –cpuset=”0-2” or –cpuset=”0,1,2”: 绑定容器到指定CPU运行;
 - -m :设置容器使用内存最大值;
 - –net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
 - –link=[]: 添加链接到另一个容器;
 - –expose=[]: 开放一个端口或一组端口;
 - –volume , -v: 绑定一个卷
 
常用的操作是:
-d:后台运行
-p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
示例
# 启动tomcat 容器、映射端口、后台运行
docker run -d -p 8888:8080 tomcat
# 能启动mysql 不能访问
docker run --name mysql_01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
# 能启动mysql 并且能访问
docker run -p 3306:3306 --name mysql_02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
# 把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面,改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)
docker run --name mysql_03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
# 指定mysql的一些配置参数
docker run --name mysql_04 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
(5)查看所有的容器
#查看容器(默认是已启动的 Up)
docker ps 
#查看所有的容器(包含启动的和停止的)
docker ps -a  示例:
[root@localhost ~]# docker ps
CONTAINER ID    IMAGE     COMMAND                   CREATED       STATUS              PORTS                     NAMES
ad10e4bc5c6a    mysql    "docker-entrypoint.sh"   4 seconds ago    Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02(5)容器启停
# 启动容器
docker start 容器id
# 删除一个容器
docker rm 容器id(6)更多命令
 (A) :Docker 官方文档
 (B):参考每一个镜像的文档。
示例:
docker pull mysql
docker images
docker run -p 3306:3306 --name mysql_05 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker ps -a访问的话,关闭防护墙或者放行3306端口。
五、其他
其他后续遇到再补充。




