1.1:什么是docker?
可移植的容器,开源的应用容器引擎。
1.2:Nginx作为Node.js前端Web Server 的作用
①:提升静态文件处理效率 是纯node.js的两倍以上
②:利用并配置反向代理规则,减轻压力
③:可扩展性
④:稳定性和转发性能
⑤:安全性增强
⑥:方便运维
1.3:安装Docker和下载Images镜像
http://docs.docker.com/
使用阿里云镜像加速器可以提升下载速度
https://help.aliyun.com/knowledge_detail/60750.html
1.4:docker常用指令
帮助:
docker -h
获取镜像:
sudo docker pull name:[tag]
ex: duco docker pull centos:7
启动Container盒子
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
ex: sudo docker run -t -i centos /bin/bash
查看镜像列表,列出本地所有images
sudo docker images [OPTIONS] [NAME]
ex: duso docker images centos
查看容器列表,可看到所有创建的Container
sudo docker ps [options]
ex: sudo docker ps -a
删除镜像
sudo docker rmi IMAGE [IMAGE...]
ex: sudo docker rmi centos: latest
删除一个或多个容器
sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]
ex: sudo docker rm 026
删除运行中的容器(+ -f)
sudo docker rm -f [OPTIONS] CONTAINER [CONTAINER...]
ex: sudo docker rm -f 026
移除所有未运行的容器
sudo docker rm $( sudo docker ps -aq)
停止运行中的容器
sudo docker kill [OPTIONS] container [CONTAINER...]
ex: sudo docker kill 026e
重启一个正在运行的容器
sudo docker restart [OPTIONS] CONTAINER [OCNTAINER...]
ex: sudo docker restart 026e
启动容器
sudo docker start [OPTIONS] CONTAINER [CONTAINER...]
ex: sudo docker start 026e
容器重命名
docker rename 容器ID/容器名 新名称
其它命令:
镜像
docker images
-a:列出本地所有镜像
-q:只显示镜像ID
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息
-p 主机端口:docker容器端口
-P 随机分配端口
-i 交互
-t 终端
搜索镜像
docker search -s 30 XXX
-s: 过滤 点赞数 小于 30 的 XXX
拉取最新镜像
docker pull XXX 等价于 docker pull XXX:latest
删除所有镜像
docker rmi -f $(docker images -qa)
下载镜像并运行
docker run -it -p 8080:8080 tomcat
容器
根据docker镜像创建新的容器并进入
docker run -it [--name XXX] 镜像ID
打开已有容器
docker attch name
不打开容器,但执行命令
docker exec ID 指令
ex: docker exec ID ls -l
查看容器运行历史
上一次:
docker ps -l
上三次:
docker ps -n 3
所有历史:
docker ps -a
只显示容器编号: -q
ex: docker ps -l -q
退出容器
停止并退出:
exit
不停止退出:
Ctrl+P+Q
停止容器
一般停止:
docker stop name/ID
强制停止
docker kill name/ID
容器重点
运行机制
docker后台守护进程,必须对应的有一个前台进程(-it),否则后台进程将自动结束,除非使用一直挂起的命令运行(或者后台在跑功能)
docker run -d
日志:
docker logs 容器ID
logs -t 添加时间
logs -f 持续输出日志
logs --tail 3 从最后三行开始打印
查看容器内部的细节
docker inspect id
复制容器内文件
docker cp容器ID/容器名:(冒号) /file 目标路径
ex: docker cp abcd:/testfile /root
1.5:启动Container容器
启动(创建)一个每秒输出一次 ‘hello world’ 的容器
sudo docker run -i -t 7e6 /bin/sh -c "while true; do echo 'hello world' ; sleep 1;done;"
-i: 表示同步 container 的stdin
-t: 表示分配一个伪终端
1.6:文件卷标加载
以下命令是把本机的 /etc 目录挂载到 Container 的/opt/etc 下,并且打印Container 的/opt/etc 目录
docker run --rm=true -i -t --name=ls-volume -v /etc/:/opt/etc/ centos ls /opt/etc
/etc/:/opt/etc/
冒号前,表示本机目录;冒号后,表示Container挂载目录
--rm=true
表示这个Container运行结束后自动删除
挂载只读卷标
docker run --rm=true -i -t --name=ls-volume -v /etc/:/opt/etc/:ro #read only
Container 文件共享
创建一个名为 etc_share 的容器 ,并在etc目录下创建文件夹 my_share, 把 etc 目录共享出去
sudo docker run -i -t -p 1337:1337 --name=etc_share -v /etc/ centos mkdir /etc/my_share && /bin/sh
-p: 表示端口映射 将Container的1337端口映射到主机的1337端口
启动一个名为 get_etc 的Container来挂载etc_share共享的目录,需要用到 volumes-from 参数
docker run --rm=true -it --volumes-from share_etc --name=get_etc centos ls /etc
打印etc目录,可以看到刚才创建的 my_share文件夹
1.7:将多个Container盒子连接起来
①:先下载一个redis数据库的镜像
docker pull redis:latest
②:启动redis镜像的Container,开启redis-server持久化服务
docker run --name redis-server -d redis redis-server--appendonly yes
目标:实用
项目: