Docker快速入门
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
帮助命令
docker version
docker info
docker --help
docker 命令 --help
镜像命令
镜像查看
docker images
#解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
docker images --help
可选项
-a, --all # 列出所有镜像(默认隐藏中间图像)
--digests # 显示摘要
-f, --filter filter # 根据提供的条件过滤输出
--format string # 使用Go模板打印镜像
--no-trunc # 不截断输出
-q, --quiet # 仅显示镜像ID
搜索
docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12604 [OK]
mariadb MariaDB Server is a high performing open sou… 4843 [OK]
percona Percona Server is a fork of the MySQL relati… 576 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 542 [OK]
常用国内镜像网站
https://c.163.com/hub#/home
https://hub.daocloud.io/
下载镜像
docker pull mysql
docker pull daocloud.io/library/mysql:5.7.5-m15
docker pull hub.c.163.com/public/redis:2.8.4
例如
docker pull daocloud.io/library/redis:3.0.7-32bit #如果不写tag,默认就是latest
3.0.7-32bit: Pulling from library/redis
026514ce3fd8: Pull complete #分层下载,docker iamge的核心联合文件系统 (下载过的层不会重复下载)
81c1b06634af: Pull complete
6333e537f464: Pull complete
15881137d7d0: Pull complete
341de5be7ffe: Pull complete
9b7619d254d1: Pull complete
f00cc90ce1c5: Pull complete
88748b7a0c37: Pull complete
Digest: sha256:947163a9e1032c6b70c784f07e2164f86645ecfddef947681b8cc91015465e93 #签名
Status: Downloaded newer image for daocloud.io/library/redis:3.0.7-32bit
daocloud.io/library/redis:3.0.7-32bit # 真实地址
删除镜像
docker rmi IMAGE_ID # id 删除
docker rmi -f $(docker images -aq) # 全部删除
容器命令
在centos镜像下学习
docker pull centos
新建并启动
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字tomcato1 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口-p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 随机指定端口
示例
docker run -it centos /bin/bash
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
[root@ba841ff6c650 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@ba841ff6c650 /]# exit
exit
列出所有运行的容器
docker ps
#列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q # 仅显示容器ID
退出容器
exit # 直接停止退出
Ctrl+P+Q # 保持运行退出
删除容器
docker rm 容器ID # id 删除
docker rm -f 容器ID # 强制删除
docker rm -f $(docker ps -aq) # 全部删除
docker ps -a -q| xargs docker rm # 全部删除
启动和停止容器
docker start 容器ID # 启动
docker restart 容器ID # 重启
docker stop 容器ID # 停止
docker kill 容器ID # 强制停止
其他命令
后台启动
docker run -d centos
查看日志
docker logs --help
参数:
--details 显示提供给日志的其他详细信息
-f, --follow 跟踪日志输出
--since string 显示自时间戳(例如2013-01-02T13:23:37Z)或相对时间戳(例如42m,42分钟)以来的日志
-n, --tail string 从日志末尾显示的行数(默认为“全部”)
-t, --timestamps 显示时间戳
--until string 在时间戳(例如2013-01-02T13:23:37Z)或相对时间戳(例如42m,42分钟)之前显示日志
由于centos 没有日志,需要编写脚本产生日志
docker run -d centos /bin/bash -c "while true;do echo VincentVic ;sleep 1; done"
查看日志
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf6886da4dcf centos "/bin/bash -c 'while…" 2 seconds ago Up 2 seconds awesome_murdock
docker logs -f -t --tail 10 cf6886da4dcf