Docker
一、Docker为什么出现
- 系统平滑移植,容器虚拟化技术
二、Docker三要素
- 镜像
- 容器
- 仓库
三、Docker 地址
- https://www.docker.com/
- https://hub.docker.com/ 仓库,例如:MySQL、Redis、PHP
四、Docker安装
# 查看进程
ps -ef|grep docker
# 启动
sudo systemctl start docker
# 测试
sudo docker run hello-world
# 停止
sudo systemctl stop docker
官网安装链接
- 卸载旧版本
旧版本的 Docker 的名称为docker或docker-engine。在尝试安装新版本之前卸载任何此类旧版本以及相关的依赖项
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engin
- 安装yum-utils软件包(提供yum-config-manager 实用程序)并设置存储库。
sudo yum install -y yum-utils
# 官网镜像慢
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 使用阿里云镜像
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker 引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 卸载 Docker 引擎 ,卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
- 主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
五、镜像加速器
- 阿里云容器镜像服务 地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://uyh6osb1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
六、帮忙docker启动类命令
开机启动 systemctl enable docker
查看docker 概要信息 docker info
帮助文档 docker --help
七、镜像操作
docker 的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS (联合文件系统)
1. docker images 列出本机上的镜像
docker images -a 列出本地所有的镜像(含历史映像层)
docker images -q 只显示镜像ID
2. docker search redis 查找远程仓库
docker search redis --limit 5 前5
3. docker pull redis:6.0.8 下载镜像
4. docker system df 查看镜像/容器/数据卷所占空间
5. docker rmi 某个镜像ID或者镜像名 删除镜像
docker rmi -f 某个镜像ID或者镜像名 强制删除
6. docker rmi -f $(docker images -qa) 删除全部
// 制作镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
面试题
谈谈docker虚悬镜像是什么?
仓库名、标签都是 <none> 的镜像
八、容器操作
1. docker run --name="容器新名字"
2. docker run -it ubuntu /bin/bash 交互式
-i 交互式操作
-t 终端
-p 小写,主机端口:docker 容器端口
-P 大写,随机分配端口
docker run -d redis 启动守护
3. docker ps 罗列出在运行的容器
-a 列出当前所有正在运行的容器+历史上运行过的
-l 显示最近创建的容器
-n 显示最近n个创建的容器
-q 静默模式,只显示容器编号
4. exit run进去容器,退出,容器停止
ctrl+p+q run进去容器,退出,容器不停止
5. docker start 容器ID或者容器名 启动已停止运行的容器
6. docker restart 容器ID或者容器名 重启容器
7. docker stop 容器ID或者容器名 停止容器
8. docker kill 容器ID或者容器名 强制停止容器
9. docker rm 容器ID 删除已停止的容器
-f 强制删除
10. docker rm -f $(docker ps -a -q) 一次性删除多个容器实例
docker ps -a -q | xargs docker rm
11. docker logs 容器ID 查看容器日志
12. docker top 容器ID 查看容器内运行的进程
13. docker inspect 容器ID 查看容器内部细节
14. docker exec -it 容器ID /bin/bash 重新进入容器
docker attach 容器ID
15. docker cp 容器ID:容器内路径 目标主路径 拷贝文件
16. docker export 容器ID > 文件名.tar 容器导出
17. cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 容器导入