1.介绍
Docker 是一个开源的容器化平台,旨在简化应用程序的开发、交付和运行。通过将应用程序及其所有依赖项打包到一个轻量级的容器中,Docker 使得软件在不同环境中的一致性和可移植性得以实现。
我们常用的软件如mysql、nginx等,都可以在docker内创建并运行
2.原理
Docker 是基于容器技术的,它通过将应用程序及其所有依赖项打包到一个独立的容器中,来实现轻量级的虚拟化。以下是一些关键概念和原理:
容器与镜像
镜像(Image):Docker 镜像是一个只读的模板,包含了应用程序及其运行所需的所有依赖项和配置。镜像可以通过 Dockerfile 文件构建,Dockerfile 是一个包含一系列指令的文本文件,定义了如何构建镜像。
容器(Container):容器是镜像的实例,是一个轻量级、可执行的独立环境。容器在运行时会使用镜像的文件系统,并且可以读写数据。每个容器都是隔离的,运行在自己的用户空间中。
docker和VM(虚拟机的区别)
docker和kvm都是虚拟化技术,它们的主要差别:
- Docker有着比虚拟机更少的抽象层
- docker利用的是宿主机的内核,VM需要的是Guest OS
3.基本指令
1.系统指令
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
2.操作指令
# 查看运行的容器
docker ps
# 查看所有镜像
docker images
# 创建并运行容器
docker run
# 运行容器
docker start
# 查看输出日志
docker logs -f nginx
# 进入容器
docker exec -it nginx bash
# 查看容器详细信息
docker inspect nginx
# 保存镜像到本地并压缩
docker save -o mysql.tar.gz mysql:latest
# 加载保存的镜像
docker load -i mysql.tar.gz
# 删除镜像 -f强制
docker rm mysql:latest -f
# 清理任何悬空资源(镜像、容器、数据卷和网络)。
docker system prune
3.删除指令
#停止容器
docker stop $(docker ps -a -q)
#删除容器
docker rm $(docker ps -a -q)
#删除镜像
docker image rm $(docker image ls -a -q)
#删除数据卷:
docker volume rm $(docker volume ls -q)
#删除 network:
docker network rm $(docker network ls -q)
#删除 artisan 镜像创建的所有容器
docker rm $(docker ps -a |grep artisan | awk ‘{print $1}’)
#最直接并全面清理的的就是以下命令
$docker stop $(docker ps -a -q) && docker system prune --all --force
docker rm $(docker container ls -f ‘status=exited’ -aq) -> 按过滤条件’status=exited’,批量删除container
4.参数解读
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia\Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
docker run
创建并运行一个容器,-d
是让容器在后台运行
--name mysql
容器名字,必须唯一
-p 3306:3306
设置端口映射,宿主端口: 容器端口
-e
设置环境变量
mysql:镜像名: 版本号,可指定版本(mysql: 5.7),不指定默认最新