镜像 images
容器 container 基于镜像生成容器
仓库 repository 存储镜像的仓库
可以把容器看作一个简易版的Linux环境和运行在其中的应用程序
仓库分为公开库 和 私有仓库
1、检查内核版本 官方建议 3.10 以上
uname -r
2、卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
3、设置存储库-国内可以设置为阿里云
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、更新yum缓存
yum makecache fast
5、安装docker
5.1、安装最新版
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5.2、安装指定版本
5.2.1 列出存储库中的可用版本
yum list docker-ce --showduplicates | sort -r
5.2.2 安装指定版本的docker
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
6、启动 Docker
sudo systemctl start docker
7、运行测试容器
sudo docker run hello-world
8、验证
docker ps -a
docker images -a
docker --help
docker version
ps -ef |grep docker
docker info
停止
sudo systemctl stop docker
卸载
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
进入目录
cd /etc/docker/
创建daemon.json文件并写入内容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
重新加载 systemd 管理器配置
sudo systemctl daemon-reload
重启服务
sudo systemctl restart docker
查看信息
docker info
docker run hello-world
当本地没有hello-world镜像时,会自动从远程仓库下载该镜像
当输出hello world提示后,容器就会自动终止
docker run xxx
首先在本机查找镜像,找到则直接生成容器实例运行。 找不到则从云端仓库查找,仓库找到则下载镜像到本地,生成容器实例运行,如果云端仓库查找不到则进行报错。
有比虚拟机更少的抽象层
利用的是宿主机的内核,而不需要加载操作系统OS内核
启动 systemctl start docker
重启 systemctl restart docker
停止 systemctl stop docker
状态 systemctl status docker
开机启动 systemctl enable docker
查看概要信息 docker info
查看帮助文档 docker --help
查看具体命令帮助 docker 命令 --help
=====================================
本机镜像列表
docker images
REPOSITORY 仓库源
TAG 镜像标签版本号
IMAGE ID 镜像ID
CREATED 镜像创建时间
SIZE 镜像大小
同一个仓库源可以有多个TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不置顶一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubuntu:latest镜像。
-a 列出本地所有的镜像(含历史映像层)
-q 只显示镜像ID
=====================================
查找镜像
docker search
NAME 镜像名称
DESCRIPTION 镜像说明 STARS 点赞数量
OFFICIAL 是否官方的
AUTOMATED 是否自动构建的
--limit 只列出N个镜像 默认25个
docker search --limit 10 php
=====================================
下载镜像
docker pull 镜像名字[:TAG]
docker pull 镜像名字 (默认latest镜像)
=====================================
查看镜像/容器/数据卷/构建缓存所占空间
docker system df
TYPE 类型(镜像/容器/数据卷/构建缓存)
TOTAL 总数
ACTIVE 活动数
SIZE 大小
RECLAIMABLE 可回收(例如未使用的镜像或停止的容器占用的空间)
=====================================
删除一个或多个镜像
docker rmi <image_id_or_name1>
docker rmi <image_id_or_name1:TAG> <image_id_or_name2> ...
删除全部镜像
docker rmi -f$(docker images -aq)
如果镜像正在被使用(例如由某个容器),可以使用 -f 选项强制删除:
docker rmi -f <image_id_or_name>
清理未使用的镜像:
docker image prune
要删除所有未被使用的镜像(不仅仅是悬挂镜像),可以使用 -a 选项:
docker image prune -a
虚悬镜像 仓库名字、标签都是<none>的镜像 建议删掉
=====================================
新建+启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS 有些是一个减号 有些是两个减号
--name="容器名字" 为容器指定名称,不指定则系统随机分配
-d 后台运行容器并返回容器ID
-i 以交互模式运行容器,通常与-t同时使用
-t 为容器重新分配一个伪终端,通常与-i同时使用
-P 随机端口映射 (大写P)
-p 指定端口映射 (小写p)
本地IP+端口:容器端口 -p 10.1.0.1:8080:80
本地端口:容器端口 -p 8080:80
举例 启动一个ubuntu容器:
docker run -it ubuntu /bin/bash
退出ubuntu终端则直接输入 exit
=====================================
列出正在运行的容器
docker ps
CONTAINER ID 容器ID
IMAGE 所属镜像
COMMAND 启动容器时运行的命令
CREATED 容器的创建时间
STATUS 容器的当前状态(Up 2 hours 表示已运行2小时)
PORTS 暴露端口
NAMES 容器名字
-a或--all:显示所有容器(默认只显示正在运行的容器)。
-f或--filter filter:根据提供的条件过滤输出。
--format string:使用自定义模板格式化输出:
'table':以表格格式打印输出并带有列标题(默认)。
'table TEMPLATE':使用指定的 Go 模板以表格格式打印输出。
'json':以 JSON 格式打印输出。
'TEMPLATE':使用指定的 Go 模板打印输出。
更多信息请参考 Docker 文档 中关于格式化输出的部分。
-n或--last int:显示最后创建的n个容器(包括所有状态,默认为 -1)。
-l或--latest:显示最新创建的容器(包括所有状态)。
--no-trunc:不截断输出。
-q或--quiet:只显示容器 ID。
-s或--size:显示总文件大小。
=====================================
退出容器
run进去容器 exit退出 容器停止
run进去容器 ctrl+p+q退出 容器不停止
=====================================
启动已经停止的容器
docker start 容器ID/容器名称
=====================================
重启容器
docker restart 容器ID/容器名称
=====================================
停止容器
docker stop 容器ID/容器名称
=====================================
强制停止容器
docker kill 容器ID/容器名称
=====================================
删除已停止的容器
docker rm 容器ID/容器名称
强制删除容器
docker rm -f 容器ID/容器名称
一次性删除全部容器实例 (包含启动中的)
docker rm -f$(docker ps -a -q)
docker ps -a -q | xargs docker rm -f
=====================================
前台交互式启动
docker run -it redis:alpine3.20
后台守护式启动
docker run -d redis:alpine3.20
查看容器启动日志
docker logs 容器ID/容器名称
查看容器内运行的进程
docker top 容器ID/容器名称
查看容器内部细节(容器作为最小化linux系统的一些系统配置信息)
docker inspect 容器ID/容器名称
=====================================
进入正在运行的容器并以命令行交互
docker exec -it 容器ID/容器名 bashShell
例如
docker exec -it my_u01 /bin/bash
重新进入
docker attach 容器ID/容器名
attach 直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器停止
exec 是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止
推荐使用docker exec 命令,因为退出容器终端,不会导致容器的停止
一般用-d后台启动的容器 用exec进入对应的容器实例干活
=====================================
从容器内拷贝文件到主机上
docker cp 容器ID/容器名:容器内路径 目标主机路径(本地路径)
docker cp my_u02:/1.txt /Users/iuu/22.txt
=====================================
导入和导出容器
export 导出容器的内容留作为一个tar归档文件
docker export 容器ID/容器名 > 文件名.tar
docker export my_u02 > /Users/iuu/my_u02.tar
import 从tar包中的内容创建一个新的文件系统再导入为镜像
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
cat /Users/iuu/my_u02.tar |docker import - iuu/my_u02:1.0
利用导入的镜像生成容器
docker run --name=my_u02 -it iuu/my_u02:1.0 /bin/bash
=====================================
本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.amdzz.cn
最新评论