目录
简介
一句话总结便于理解:
docker:操作系统上的“虚拟机”,节省硬件资源。
镜像:虚拟机镜像(image,便于理解你可想象成类似原来的win2003server虚拟机镜像)。
持久化:类似虚拟机内保存数据文件会丢。需映射保存到物理磁盘。
官网介绍:https://docs.docker.com/engine/install/centos/
Docker中文文档:http://www.dockerinfo.net/document
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
传统虚拟机理解:(服务器上,每个镜像一套操作系统,太浪费资源了)
docker"虚拟机"理解:(服务器上,每个镜像“简化”操作系统,不占资源)
名词解释
docker整个生命周期有三部分组成:
镜像(image)+ 容器(container)+ 仓库(repository)
容器是由镜像实例化而来 (把镜像启动后就是容器了)
他们关系如下图:
镜像:类似虚拟机的镜像,是一个只读的模板。一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
容器:容器是由镜像创建的运行实例。
安装
官方安装文档:https://docs.docker.com/install/linux/docker-ce/centos
linux环境下默认安装目录:/var/lib/docker
如果有旧版本,卸载:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
更新yum包
使用一个有sudo权限的帐号(root)登录centos8。更新现有的yum包。
sudo yum update
按y 更新
安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
配置docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker-ce
yum install docker-ce
错误:
问题: package docker-ce-3:19.03.13-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
此时需要安装新版containerd.io
dnf install
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm
报错
原因:防火墙阻挡443访问,关闭防火墙即可或开通端口即可。
systemctl stop firewalld.service
查看docker版本
docker -v
卸载
sudo yum remove dcoker-ce \
docker-ce-cli \
containerd.io
删除 Docker 相关文件,会删除 Docker 的镜像,容器等。
sudo rm -rf /var/lib/docker
镜像
国内镜像
配置国内镜像:新建文件: /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com/"
]
}
#重启docker
systemctl daemon-reload
systemctl restart docker
国外镜像
查询国外hub镜像:
docker search 镜像名 #例如:docker search mongo
本地镜像
#查询本地镜像
docker image ls
#删除镜像
docker rmi 镜像id
容器
容器命令(常用)
#查询容器
docker ps #查询已启动镜像
docker ps -a #查询全部镜像(没启动的)
#启动容器
#-- name:设定容器名称为nextcloud
#-p 88:80 :端口映射,将宿主机口映射到容器中的80端口
#-v /owncloud:/var/www/html/data 将容器中项目的data目录映射到本地/owncloud目录下方便配置
#-d nextcloud,刚刚所拉取的镜像名称
docker run --name nextcloud -p 88:80 -v /owncloud:/var/www/html/data -d nextcloud
#查看日志
docker logs 容器名或id
#重启容器
docker restart mysql5.7 #docker restart 容器ID或容器名 :不管容器是否启动,直接重启容器
#停止容器
docker stop 容器name或id #停止单个容器
docker stop $(docker ps -aq) #停止所有容器
#删除容器
docker rm -f 容器name或id #删除单个容器
docker rm -f $(docker ps -aq) #删除所有容器
进入容器
#进入容器
docker exec -it 容器id /bin/bash
#进入容器,安装vim
apt-get update #从软件源(也称为软件仓库)获取最新的软件包信息
apt-get install vim #安装vim
小结
安装后用的最多的就是“容器”相关命令了,能看容器内日志找问题,修改后重启,就够用了。