docker解决了什么问题?
- 包装整个环境
- 隔离应用
- 快速扩展、弹性伸缩
docke核心技术
- Build
- Ship
- Run
Docker镜像
-
镜像存储采用linux联合文件(unionfs)分层,每层文件系统都是只读,每层加载完成之后,这些文件看作是同一个目录
镜像分层.png
Docker容器
- 容器的本质就是一个进程,容器最上面那层是可写的,同一个镜像可以生成多个容器,独立运行。
Docker仓库
- 使用国内docker镜像仓库地址:
hub.docker.com
c.163.com
- 自己搭建镜像中心
第一个docker镜像
docker pull [OPTIONS] NAME[:TAG]
--拉取镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
--查看镜像
docker run [OPTIONS] IMAGE [:TAG] [COMMAND] [ARG...]
--运行镜像
docker运行Nginx
- 持久运行的容器
- 前台挂起&后台运行
- 进入容器内部
docker pull hub.c.163.com/library/nginx:latest
docker ps
--查看正在运行的容器
docker run -d hub.c.163.com/library/nginx:latest
--后台运行nginx容器
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
--进入容器内部
docker exec -it f4 bash
--进入容器内部的bash环境
docker网络
- 网络类型 --linux的隔离性用namesapce来实现资源的隔离,如:pid namespace、mount namespace、network namespace
- Bridge(桥接模式,独立的网络环境)
- Host(和主机使用同一个network namespace)
- None模式
- 端口映射:容器上的端口可以在主机上访问到
docker run -d -p 8081:80 hub.c.163.com/library/nginx
--开放指定端口映射
docker run -d -P hub.c.163.com/library/nginx
--开放所有端口映射
制作自己的镜像
- Dockerfile:怎么样去制作自己的镜像、制作镜像的操作
- docker build -t 镜像标签 镜像当前存放目录 --执行Dockerfile里面所描述的每件事情,构建出docker镜像
Jpress:[http://jpress.io/] - Dockerfile内容:
from hub.c.163.com/library/tomcat
MAINTAINER xuming xuming@xxx.com
COPY jpress.war /usr/local/tomcat/webapps
运行自己的镜像
docker run -d -p 8888:8080 jpress
--运行容器
docker restart CONTAINER ID
--重启容器
docker images往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法:
- 停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
- 如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
- 查看当前有些什么images
docker images
- 删除images,通过image的id来指定删除谁
docker rmi <image id>
- 想要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
- 要删除全部image的话
docker rmi $(docker images -q)
- 删除已经退出的容器
docker rm $(docker container ls -f "status=exited" -q)
- 删镜像步骤:
先停容器,再删容器,最后删镜像
内容回顾:
- 集装箱、标准化、隔离
- 镜像 容器 仓库(Build Ship Run)
- docker 命令 pull build run stop restart exec
网友评论