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 -r
2、安装docker
yum install docker
3、查看版本
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
3、启动docker
[root@localhost ~]# systemctl start docker
4、开机启动
[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 镜像名称:latest
OPTIONS说明:
- -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端口。
五、其他
其他后续遇到再补充。