1、简介
-
Docker
-
是一个容器运行载体或称之为管理引擎
-
把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件
-
只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
-
镜像
-
只读的模板(类似java中的类模板)
-
用来创建Docker容器
-
相当于一个root文件系统
-
一个镜像可创建多个容器
-
容器
-
用镜像创建的运行实例(类似java中new出来的实例对象)
-
可看作一个简易版的Linux环境(只包含最内核的Linux文件)和运行在其中的应用程序
-
一个容器运行一种服务,需要的时候,可通过docker客户端创建一个运行实例,即容器
-
仓库
-
用于集中存放镜像文件,类似Maven仓库,存放各种jar包
-
把镜像发布到仓库中,需要的时候从仓库拉下来即可
2、安装
-
yum安装gcc
-
yum -y install gcc
-
yum -y install gcc-c++
-
安装软件包
-
yum install -y yum-utils
-
安装镜像仓库
-
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新yum软件包索引
-
yum makecache fast
-
安装Docker CE
-
yum -y install docker-ce docker-ce-cli containerd.io
-
启动Docker
-
systemctl start docker
-
测试
-
docker run hello-world
-
查看docker版本
-
docker version
-
配置阿里云镜像加速器
-
mkdir -p /etc/docker
-
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://gl3il9fr.mirror.aliyuncs.com"] } EOF
-
systemctl daemon-reload
-
systemctl restart docker
-
卸载
-
systemctl stop docker
-
yum remove docker-ce docker-ce-cli containerd.io
-
rm -rf /var/lib/docker
-
rm -rf /var/lib/containerd
3、执行流程
4、启动类命令
-
启动docker:systemctl start docker
-
停止docker:systemctl stop docker
-
重启docker:systemctl restart docker
-
查看docker状态:systemctl status socker
-
设置开机启动:systemctl enable docker
-
查看docker概要信息:docker info
-
查看docker帮助:docker --help
-
查看docker命令帮助文档:docker 命令 --help
5、镜像命令
-
列出本地主机上的镜像:docker images
-
镜像仓库名 镜像标签版本号 镜像ID 镜像创建时间 镜像大小
-
-a:列出本地所有镜像,包含历史映像层
-
-q:只显示镜像ID
-
同一仓库源可有多个版本(比如mysql有5.7和8.0),若不指定版本,默认使用最新版本
-
查找镜像:docker search 镜像名
-
镜像名 镜像说明 点赞数 是否官方 是否自动构建
-
--limit N:只列出前N个镜像
-
下载镜像:docker pull 镜像名 [版本号]
-
若不指定版本,默认使用最新版本
-
删除镜像:docker rmi [-f] 镜像名1/镜像ID1 镜像名2/镜像ID2
-
-f:强制删除
-
删除全部镜像:docker rmi -f $(docker images -qa)
-
查看镜像/容器/数据卷所占空间:docker system df
-
提交容器副本成为新的镜像:docker commit -m="描述信息" -a="作者" 容器ID要创建的目标镜像名:[标签名]
6、容器命令
-
新建并启动容器:docker run [OPTIONS] 镜像名 [:版本号]
-
--name="容器名":为容器指定名称
-
-d:后台运行容器并返回容器ID,也即启动守护式容器(后台运行),常用
-
-i:以交互式模式运行容器,通常与-t同时使用
-
-t:为容器重新分配一个伪输入终端,也即启动交互式容器(前台有伪终端,等待交互),通常与-i同时使用
-
-P:随机端口映射
-
-p:指定端口映射
-
在镜像名后使用 /bin/bash,表示使用交互式Shell
-
列出所有正在运行的容器:docker ps [OPTIONS]
-
-a:列出当前所有正在运行的容器+历史运行过的
-
-l:列出最近创建的容器
-
-n N:列出最近N个创建的容器
-
-q:静默模式,只显示容器编号
-
退出容器:exit容器停止,ctrl+p+q不停止
-
启动已停止的容器:docker start 容器ID/容器名
-
重启容器:docker restart 容器ID/容器名
-
停止容器:docker stop 容器ID/容器名
-
强制停止容器:docker kill 容器ID/容器名
-
删除已停止的容器:docker rm 容器ID
-
删除所有容器:docker rm -f $(docker ps -a -q)
-
查看容器日志:docker logs 容器ID
-
查看容器内运行的进程:docker top 容器ID
-
查看容器内部细节:docker inspect 容器ID
-
重新进入容器
-
docker exec -it 容器ID /bin/bash
-
在容器中打开新的终端,并可以启动新的进程退出
-
用exit退出,不会导致容器停止(推荐)
-
docker attach 容器ID /bin/bash
-
直接进入容器启动命令的终端,不会启动新的进程
-
用exit退出,会导致容器停止
-
从容器拷贝文件到主机:docker cp 容器ID:容器内路径 目的主机路径
-
导入容器:cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
-
导出容器:docker export 容器ID > 文件名.tar
7、容器数据卷
-
开启数据卷
-
主要命令:--privileged=true
-
开启redis并开启数据卷:docker run -p 6379:6379 --name redis1 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data: /data -d redis:6.0.8 redis-server /etc/redis/redis.conf
-
修改/app/redis/redis.conf会自动同步到/etc/redis/redis.conf中
-
修改/app/redis/data会自动同步到/data中
-
数据卷可在容器间共享或重用数据
-
卷中的更改可实时生效
-
数据卷中的更改不会包含在镜像的更新中
-
数据卷的声明周期一直持续到没有容器使用它为止