前言
Docker是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker概述
Docker为什么会出现
开发一款产品时存在开发,上线两套环境,环境配置十分麻烦,如果每个机器都要配置环境将费时费力。而Docker可以将项目和他的环境打包(镜像)。
Dockers能做什么
- 虚拟机技术缺点:
- 资源占用十分多
- 冗余步骤多
- 启动很慢
- 容器化技术:
- 不是模拟一个完整的操作系统
- 容器的应用直接运行在宿主机的内核中
- 每个容器互相隔离,都有自己的文件系统
Docker基本概念
- 镜像:好比是一个模板,可以通过镜像创建容器服务。
- 容器:独立运行一个或一组应用,可以理解为一个简易的Linux系统
- 仓库:存放镜像的地方
底层原理
容器运行流程如上
Docker是一个Client-Server结构,Docker守护进程运行在主机上。通过Socket从客户端访问。
Docker常用命令
帮助命令
docker version
docker 命令 --help
镜像命令
docker images 显示所有镜像
docker search 搜索镜像
docker pull 下载镜像
docker rmi 删除镜像
容器命令
说明:有了镜像之后才能创建容器
docker pull centos 下载centos镜像
新建容器并启动
docker run [可选参数] image
参数说明
--name="Name" 容器名字,用来区分容器
-d 后台运行方式
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 随机指定窗口
docker run -it centos /bin/bash 交互的方式运行容器
exit 关闭容器
ctrl + P + Q 关闭容器但不退出
docker ps
列出正在运行的容器
-a 列出所有运行过的容器
-n=? 只显示最近创建的容器
-q 只显示容器编号
删除容器
docker rm 容器id
docekr rm -f $(docker ps -aq) 删除所有容器
启动和停止容器
docker start 容器id 启动容器
docer restart 容器id 重启容器
docker stop 容器id 停止当前正在运行的容器
docker kill 强制停止当前容器
常用的其他命令
docker run -d 镜像名 后台启动容器
docker log 查看日志
docker top 容器id 查看容器中的进程信息
docker inspect 容器id 查看镜像的元数据
docker exec -it 容器id /bin/bash 进入容器后开启一个新的终端
docker attach 进入容器正在执行的终端,不会启动新的进程
#从目的容器拷贝文件到主机上
docker cp 容器id:容器内的路径 目的主机的路径