文章目录
1. Docker安装
1.1 Docker的基本组成
镜像(image):
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像------>run------->tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container):
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的
启动,停止,删除,基本命令
目前可以把容器理解为一个简易的Linux系统
仓库(repository):
仓库就是存放镜像的地方
仓库分为公有仓库和私有仓库
Docker Hub
阿里云等等都有容器服务器(默认在国外,配置镜像加速)
1.2 安装Dokcer
环境准备
- 需要linux基础
- Centos7
- 使用软件进行远程连接
环境查看
# 系统内核是3.10以上的
unmae -r
# 系统版本
cat /etc/os-release
安装
帮助文档
# 1.卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2.需要的安装包
yum install -y yum-utils
# 3.设置镜像的仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo # 默认是国外的,需要换成国内的
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引
yum makecache fast
# 4. 安装docker相关的 docker-ce 社区版 ee企业版
yum install docker-ce docker-ce-cli containerd.io
# 5.启动docker
systemctl start docker
# 6.使用docker version测试是否安装成功
docker version
# 7.hello-word
docker run hello-word
# 8.查看下载的这个hello-word镜像
docker images
1.3 卸载docker
# 1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2.删除资源
rm -rf /var/lib/docker
#/var/lib/docker docker的默认工作路径
1.4 阿里云镜像加速
-
登录阿里云找到容器服务
-
找到镜像加速的地址
-
配置应用
mkdir -p /etc/docker # 编辑daemon.json tee /etc/docker/daemon.json <<-'EOF' # 设置加速器地址 { "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] } EOF # 最后重新加载和重启docker: systemctl daemon-reload systemctl restart docker
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://me0kxh75.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
1.5 run流程
1.6 底层原理
docker是怎么工作的?
Docker 是一个client-server 结构的系统,Docker的守护进程运行在主机上,通告Socker从客户端访问
Dokcer server 接收到Docker-client 的指令,就会执行这个命令
Docker为什么比虚拟机快
- Docker有着比虚拟机更少的抽象层
- Docker 利用的是宿主机的内核,VM需要Guest OS
- 所以,新建一个容器的时候,Docker不需要虚拟机一样重新加载一个操作系统的内核,避免引导。虚拟机是加载Guest OS,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级
2. Docker常用命令
2.1 帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令
2.2 镜像命令
2.2.1 docker images查看所有本地的主机上的镜像
docker images
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a # 列出所有的镜像
-q # 只显示镜像的ID
2.2.2 docker search 搜索镜像
docker search mysql
# 可选项
--filter=STARS=3000 #搜索出来的镜像是STARS大于3000的
2.2.3 docker pull 下载镜像
# 下载镜像
docker pull 镜像名[:tag]
如果不写tag,默认就是latest
分层下载,docker image的核心,联合文件系统
Digest #签名
docker.io/library/mysql:latest #真实地址
#等价于他
docker pull mysql
docker pull docker.io/library/mysql:latest
# 指定版本下载
docker pull mysql:5.7
2.2.4 docker rmi 删除镜像
docket rmi -f 镜像id #删除指定镜像
docket rmi -f 镜像id 镜像id #删除多个镜像
docket rmi -f $(docker images -aq) #递归删除所有镜像
2.3 容器命令
说明:我们有了镜像才可以创建容器,Linux,下载一个centos 镜像来测试学习
docker pull centos
2.3.1 新建容器并启动 run
docker run [可选参数] image
# 参数说明
--name="Name" # 容器名字 tomcat01 tomcat02,用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-p # 随机指定端口
# 测试
docker run -it centos /bin/bash # 启动并进入容器
exit # 从容器中退回到主机
2.3.2 docker ps 列出所有运行的容器
docker ps # 列出当前正在运行的容器
-a # 列出当前正在运行的容器+历史运行过的容器
-n=? # 显示最近创建的容器,例如-n=1,显示最近创建的一个容器
-q # 只显示容器的编号
2.3.3 退出容器
exit # 直接容器停止并退出
ctrl+p+q #容器不停止退出
2.3.4 删除容器 rm
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果想要强制删除 rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
2.3.5 启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
2.4 常用其他命令
2.4.1 后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos
# 问题 docker ps 发现centos停止了
# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
2.4.2 查看日志
docker logs
# 显示日志
-tf #显示全部日志
--tail number #显示指定数量的日志
docker logs -f -t --tail 容器id # 没有日志
#自己编写一段shell脚本
docker run -d centos /bin/bash -c "while true;do echo zjc;sleep 1;done"
docker logs -tf --tail 10 容器id
2.4.3 查看容器中进程信息 ps
# 命令 docker top容器id
2.4.4 查看镜像的元数据 inspect
docker inspect 容器id
2.4.5 进入当前正在运行的容器 exec attach
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
#命令
# 方式一
docker exec -it 容器id /bin/bash
# 方式二xi
docker attach 容器id