1.背景
类似于电脑,要在朋友的电脑上跑你写的Java程序,就得检查他电脑有没有安装Java环境.
类似的,要想在别的电脑上跑你写的Python程序,又得检查那台电脑有没有装python.
如何让自己写的程序换到别的电脑上后,可以便捷的运行起来?
将程序和程序的环境打包迁移,是一种解决方案.
- 为啥不用虚拟机?
虚拟机安装太麻烦,就好比一个完整的操作系统,启动起来很费时间.
2.安装
服务器版本:CentOS 8.2 64位
2.1 安装yum-utils
yum install -y yum-utils
2.2 配置国内源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3 解决problem with installed package podman-1.6.4-10.的报错
yum erase podman buildah
2.4 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io --nobest
2.5 查看Docker版本
# 简单信息
docker -v
# 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker version
# 查看系统(docker)层面信息,包括管理的images, containers数等
docker info
3.Docker服务相关
3.1 启动
# 启动
systemctl start docker
# 开机自启
systemctl enable docker
3.2 停止
systemctl stop docker
3.3 重启
systemctl restart docker
3.4 查看docker状态
systemctl status docker
4.仓库、镜像和容器
4.1 Docker容器三个主要概念
-
镜像
Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。
-
镜像仓库
Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。
-
容器
Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。
4.2 一个简单的流程
4.2.1 首先开发者在开发环境机器上开发应用并制作镜像。
Docker执行命令,构建镜像并存储在机器上。
4.2.2 开发者发送上传镜像命令。
Docker收到命令后,将本地镜像上传到镜像仓库。
4.2.3 开发者向生产环境机器发送运行镜像命令。
生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器。
5.镜像相关命令
5.1 查看镜像
docker images
5.2 搜索镜像
docker search 镜像名称
5.3 拉取镜像
docker pull 镜像名称:版本号
5.4 删除镜像
docker rmi 镜像名称:版本号
6.容器相关命令
6.1 查看容器
# 查看正在运行的容器
docker ps
# 查看所有容器
daocker ps -a
6.2 创建容器
docker run -it --name=centos centos:latest /bin/bash
# 参数信息
-i:保持容器运行
-t:为容器重新分配一个伪输入终端
-d:以守护进程模式运行容器,退出后容器不会停止
-it:创建一个交互式容器,推出后容器容器停止运行
-id:创建一个守护容器;退出后容器不停止运行
–name:为创建的容器命名
6.3 进入容器
docker exec -it 容器名称 /bin/bash
6.4 启动容器
docker start 容器名称
6.5 停止容器
docker stop 容器名称
6.6 删除容器
docker rm 容器名称
#删除所有容器
docker rm `docker ps -aq`
6.7 查看容器信息
docker inspect 容器名称