介绍
- 核心思想:打包装箱,相互隔离
- 是基于Go语言开发的开源项目
- DevOps(开发,运维)
- 内核级别的虚拟化
基本组成
客户端 + 服务器 + 仓库
Client + Server 通过sokect访问服务器
镜像:一个模板,可以通过这个模板来创建容器服务,这个镜像可以创建多个容器
容器:通过镜像实例化一个或多个容器,可以理解为一个简易的Linux操作系统
仓库:存放镜像的地方
默认存储位置:/var/lib/docker
Docker 为什么比虚拟机快
因为Docker的抽象层更少
利用的宿主机的内核,启动的时候不需要再启动一个新的内核
安装和测试
测试环境
1
| sudo docker run hello-world
|
查看镜像
Docker基本命令
1 2 3 4 5 6 7 8 9 10 11 12
| [root@mhduiy docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest d2c94e258dcb 11 months ago 13.3kB
REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的ID CREATED 镜像的创建时间 SIZE 镜像的大小
docker images -a 列出所有的镜像 docker images -q 只显示id
|
- docker info 显示docker的系统信息,显示镜像和容器数量
搜索镜像
1 2 3
| docker search mysql
docker search mysql --filter=STARS=5000 搜索5000以上的
|
下载镜像
1 2 3
| docker pull mysql 下载最新版本 docker pull mysql:5.7 下载5.7镜像
|
删除镜像
1 2
| docker rmi -f <镜像名/镜像ID> docker rmi -f $(docker images -aq) 删除所有的镜像
|
容器命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| docker run [可选参数] image --name="Name" 指定容器名字 -d 后台方式运行 -it 使用交互方式运行 -P 指定容器的端口 -p 8080:8080 -p 指定随机的端口
docker run -it deepin /bin/bash
查看当前运行的容器 docker ps
查看历史运行的容器(所有容器) docker ps -a
退出容器 exit 退出容器,不停止运行 CTRL + P + Q
删除容器 docker rm
启动容器 docker start 容器id docker stop 容器id docker kill 容器id 强制重启 docker restart 容器id
|
配置代理
https://www.lfhacks.com/tech/pull-docker-images-behind-proxy/
创建服务配置文件
1
| sudo mkdir -p /etc/systemd/system/docker.service.d
|
若没有这个文件夹需要手动创建
写入代理环境变量配置
1 2 3
| [Service] Environment="HTTP_PROXY=http://proxy.example.com:80" Environment="HTTPS_PROXY=https://proxy.example.com:443"
|
重启docker服务
1 2
| sudo systemctl daemon-reload sudo systemctl restart docker
|
验证是否设置成功
1 2
| sudo systemctl show --property=Environment docker docker info
|
常用其他命令
进入容器
1
| docker exec -it 容器id bashshell
|
查看日志
1
| docker logs -f -t --tail 容器id
|
查看容器内部运行的进程
查看镜像元数据
进入正在运行的容器并以命令行交互
从容器内拷贝文件到主机上
1
| docker cp 容器id:容器内路径 目的主机路径
|
容器命令小结
1 2 3 4 5 6 7 8 9 10
| run 创建并启动容器 attach 进入容器 exec 进入容器并执行命令 start 启动容器 stop 停止容器 restart 重启容器 kill 强制停止容器 rm 删除容器 pause 暂停容器 unpause 取消暂停容器
|