常用命令
- 启动常用命令
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help
- 镜像常用命令
docker images 列出本地主机上的镜像
参数:
[ -a ] 含历史映像层
[ -q ] 只显示镜像ID
docker search IMAGE_NAME 搜索镜像
参数:
[ --limit number ]
docker pull IMAGE_NAME[:TAG] 拉取镜像
docker system df 查看镜像/容器/数据卷所占的空间
docker rmi [-f 强制] IMAGE_NAME/IMAGE_ID 删除单个镜像
docker rmi -f $(docker images -qa) 删除全部
- 容器命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:
--name="容器名字"
-d 后台运行容器
-i 以交互模式运行容器
-t 为容器重新分配一个伪输入终端
-P 随机端口映射 大写P
-p HOST_PORT:CONTAINER_PORT 指定端口映射 小写p
-v HOST_DIR:CONTAINER_DIR 映射目录到容器
IMAGE:
IMAGE:TAG
COMMAND:
/bin/bash 在容器执行的命令
docker ps 列出当前所有正在运行的容器
参数:
-a 全部
-l 最近创建
-n 最近n个
-q 只显示ID
docker start CONTAINER_NAME/CONTAINER_ID 启动停止的容器
docker restart CONTAINER_NAME/CONTAINER_ID 重启容器
docker stop CONTAINER_NAME/CONTAINER_ID 停止容器
docker kill CONTAINER_NAME/CONTAINER_ID 强制停止容器
docker rm CONTAINER_ID 删除单个容器
docker rm -f $(docker ps -qa) 删除全部容器
docker logs CONTAINER_ID 容器日志
docker top CONTAINER_ID 容器内运行的进程
docker inspect CONTAINER_ID 查看容器配置
docker exec -it CONTAINER_ID /bin/bash 交互式进入正在运行的容器, exit不会导致容器停止
docker attach CONTAINER_ID 进入正在运行的容器, exit会导致容器停止
一般用-d后台启动的程序, 再用exec进入对应容器实例
docker cp CONTAINER_ID:CONTAINER_DIR/FILE HOST_DIR/ 拷贝容器文件到宿主机
docker export CONTAINER_ID > FILE.tar.gz 导出快照
cat FILE.tar.gz | docker import - CONTAINER_NAME:TAG 导入快照
docker save -o FILE.tar.gz CONTAINER_NAME:TAG 导出镜像
docker save CONTAINER_NAME:TAG > FILE.tar.gz 导出镜像
docker load -i FILE.tar.gz 导入镜像
docker load < FILE.tar.gz 导入镜像
export 和 save的区别:
docker load命令导入镜像库存储文件到本地镜像库;
docker import命令导入一个容器快照到本地镜像库.
容器快照将会丢弃所有的历史记录和元数据信息,
而镜像存储文件将保存完整记录, 体积也会更大.
Docker环境信息 info、version
镜像仓库命令 login、logout、pull、push、search
镜像管理 build、images、import、load、rmi、save、tag、commit
容器生命周期管理 create、exec、kill、pause、restart、rm、run、start、stop、unpause
容器运维操作 attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update
容器资源管理 volume、network
系统信息日志 events、history、logs
- 联合文件系统
镜像加载原理
docker的镜像实际上由一层一层的文件系统组成, 这种层级的文件系统就是 UnionFS.
UnionFS
联合文件系统.Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,
它支持对文件系统的修改作为一次提交来一层层的叠加, 同时可以将不同目录挂载到同一个
虚拟文件系统下(unite several directories into a single virtual filesystem).
Union 文件系统是 Docker 镜像的基础.镜像可以通过分层来进行继承,
基于基础镜像(没有父镜像), 可以制作各种具体的应用镜像.
特性:一次同时加载多个文件系统, 但从外面看起来, 只能看到一个文件系统,
联合加载会把各层文件系统叠加起来, 这样最终的文件系统会包含所有底层的文件和目录
bootfs
boot file system.主要包含bootloader和kernel, bootloader主要是引导加载kernel,
Linux刚启动时会加载bootfs文件系统, 在Docker镜像的最底层是bootfs.
这一层与我们典型的Linux/Unix系统是一样的, 包含boot加载器和内核.
当boot加载完成之后整个内核就都在内存中了, 此时内存的使用权已由bootfs转交给内核,
此时系统也会卸载bootfs.
rootfs
root file system.在bootfs之上.包含的就是典型 Linux 系统中的 /dev, /proc, /bin,
/etc 等标准目录和文件.rootfs就是各种不同的操作系统发行版, 比如Ubuntu, Centos等等.
对于一个精简的OS, rootfs可以很小, 只需要包括最基本的命令、工具和程序库就可以了,
因为底层直接用Host的kernel, 自己只需要提供 rootfs 就行了.
由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别,
因此不同的发行版可以公用bootfs.
- Commit 创建自定义镜像
docker commit [OPTIONS] CONTAINER_ID NEW_IMAGE:[TAG]
OPTIONS:
-m="附加说明信息"
-a="作者"
docker commit -m "add vim" -a="zk" f8c8c578d3c1 zk/ubuntu:1.0
docker commit [OPTIONS] CONTAINER_ID [REPOSITORY[:TAG]]
二、 镜像仓库
- 阿里云镜像仓库
登陆
docker login --username=XXX registry.cn-hangzhou.aliyuncs.com
拉取
docker pull registry.cn-hangzhou.aliyuncs. com/ns-2023/lib-2023:[镜像版本号]
推送
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/ns-2023/lib-2023:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/ns-2023/lib-2023:[镜像版本号]
- 搭建自己的镜像仓库
# 拉取镜像
docker pull registry
# 启动registry容器
docker run -d -p 5000:5000 -v /registry:/tmp/registry[:rw/ro 读写挂载/只读挂载] --privileged=true registry
# 将改动的容器转为镜像
docker commit -m="add vim" -a="zk" 4d69fa4a6400 mycentos:1.0
# 查看本地私有仓库
curl -XGET http://127.0.0.1:5000/v2/_catalog
# 配置文件添加 insecure-registries 支持http
cat /etc/docker/daemon.json
{
"registry-mirrors":[
"https://bhtknto5.mirror.aliyuncs.com",
"https://yo3sdl2l.mirror.aliyuncs.com",
"https://blkjc4x3.mirror.aliyuncs.com",
"https://gfmnzvu1.mirror.aliyuncs.com",
"https://yxzrazem.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": ["127.0.0.1:5000"]
}
# 推送
docker tag mycentos:1.0 127.0.0.1:5000/mycentos:1.0
docker push 127.0.0.1:5000/mycentos:1.0
# 查看
curl -XGET http://127.0.0.1:5000/v2/_catalog
{"repositories":["mycentos"]}
# 拉取
docker pull 127.0.0.1:5000/mycentos:1.0
- 快速继承其他容器的卷 --volumes-from CONTAINER_ID/CONTAINER_NAME
docker run -it --privileged=true --name centos1 -v /root/zk:/tmp/zk centos:7 /bin/bash
docker run -it --rm --privileged=true --name centos2 --volumes-from centos1 centos:7 /bin/bash
# 进入容器 centos 查看 /tmp/zk
标签:容器,CONTAINER,--,37,常用命令,镜像,docker,ID
From: https://www.cnblogs.com/ckh2023/p/18070143