一、Docker的基本组成
![](https://i-blog.csdnimg.cn/blog_migrate/c83e0b9af9cae26aff02d67e51346e07.png)
1.镜像(image)
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像==> run ==>tomcat1 容器(提供服务器),通过这个镜像可以创建
多个容器(最终服务运行或者项目运行就是在容器中的)。
2.容器(container)
1)docker利用容器化技术,独立运行一个或者一个组应用,通过镜像来创建的。
2)启动、停止、删除等基本命令。
3)目前可以把这个容器理解为就是一个简单的linux系统
3.仓库(repository)
1)仓库就是存放镜像的地方
2)仓库分为公有仓库和私有仓库
3)Docker Hub(默认是国外的),配置国内镜像源(阿里云等)
二、安装Docker
1.官网文档查看
2.配置国内镜像加速
3.helloworld运行流程:docker run hello-world
![](https://i-blog.csdnimg.cn/blog_migrate/5946487d57f2d0e56040654912d9f475.png)
4.底层原理:
1)Docker是怎么工作的?
Docker是一个Client - Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问!
DockerServer接收到Docker-Client的指令,就会执行这个命令
![](https://i-blog.csdnimg.cn/blog_migrate/d4da24f34532bdec1d332a354f06e088.png)
三、 Docker的常用命令
1.帮助命令
docker version:显示docker的版本信息
docker info:显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help:帮助命令
2.镜像命令
docker images:显示当前所有的镜像
选项:-a:列出所有镜像
-q:只显示镜像的ID
docker search [搜索的镜像] :镜像源搜素
选项:--filter=STARS=3000:搜索该列大于3000的结果
docker pull:下载镜像
docker pull mysql:5.7:‘:5.7’代表版本号
docker rmi -f [镜像ID]:删除镜像
3.容器命令
1)新建容器并启动:docker run [可选参数] image
参数说明:
--name="Name":容器名字 tomcat01 tomcat02,用来区分容器
-d:后台方式运行
-it:使用交互方式运行,进入容器查看内容
-p:指定容器的端口 -p 8080:8080
-p 主机端口:容器端口(常用)
-p:容器端口
-p:ip:主机端口:容器端口
-p:使用随机端口运行
2)列出所有运行的容器:docker ps [可选项]
参数说明:
-a:列出当前正在运行的容器+带出历史运行过的容器
-n=?:显示最近创建过的容器
-q:只显示容器的编号
3)退出容器:exit:退直接停止容器并退出
快捷键:Ctrl+P+Q:容器不停止退出
4)删除容器:docker rm 容器id;删除指定的容器,不能删除正在运行的容器,如果强制删除加上选项-f
docker rm -f $(docker ps -aq):删除所有的容器
docker ps -a -q | xargs docker rm:删除所有的容器
5)启动和停止容器的操作
docker start 容器id:启动容器
docker stop 容器id:停止容器
docker restart 容器id:重启容器
docker kill 容器id:强制停止当前容器
4.常用其他命令
1)后台启动容器:docker run -d 镜像名
#常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx:容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
2)查看日志:docker logs
常用选项:
-tf:显示日志
--tail number:要显示的日志条数
3)查看容器中的进程信息:docker top 容器id
4)查看镜像的元数据:docker inspect 容器id
5)进入当前正在运行的容器:
docker exec -it 容器id bashell:进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 容器id:进去正在执行吃的终端容器,不会开启新的进程。
6)从容器内拷贝文件到主机上
docker cp 容器id:绝对路径 主机目录