一、docker 介绍
Docker 是一个应用打包,分发,部署的工具。
可以理解成一个轻量虚拟机, 它只虚拟你软件需要的运行环境,多余的一点都不要。
打包 | 把软件所需的依赖,第三方库,软件打包到一起,变成一个安装包 |
分发 | 把打包好的安装包上传到一个镜像仓库,其他人可以非常方便的获取和安装 |
部署 | 拿到安装包就可以一个命令运行你的应用,自动模拟出一模一样的运行环境, 不管在win/linux/mac; 确保了不同机器上跑都是一致的环境 |
Docker 用来做什么
- 应用分发,部署,方便传播给他人。 特别是开源软件和提供私有部署的应用
- 快速安装测试/学习软件, 用完就丢,不把时间浪费在安装软件上
- 多个版本软件共存,不污染系统
- windows 上体验学习各种linux 系统
概念
镜像 | 可以理解为虚拟机的快照;包含你要部署的应用软件以及它所关联的所有库。 方便进行传播和安装 |
容器 | 通过镜像可以创建很多个容器; 容器就像一台台运行起来的虚拟机,里面运行了你的应用程序, 容器之间互不影响 |
Dockerfile | 自动化脚本 主要被用来创建镜像。 这个过程好比我们在虚拟机中安装操作系统和软件一样; |
二、 docker 安装
#1 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
#2 更新
sudo apt update
#3 依赖工具
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
#4 更新
sudo apt upate
#5 添加docker 官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#6 下载仓库文件
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#7
sudo apt update
#8
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
#9 安装后,默认docker service 已经启动了
ps aux | grep docker
service docker status
service docker start
systemctrl start docker
#10 测试运行
docker run hello-world
三、 如何运行
docker run hello_world
# -p 将容器上的端口映射(5000)到本地主机上(80), 这样才能主机上访问容器中web应用
# -d --detached 让容器在后台运行, 不在终端输出
# hello-world 镜像名字
# --name 重新映射启动docker容器的名字
docker run -p 80:5000 -d hello-world
四、镜像命令
docker images -a
docker images -aq
docker rmi image-id
五、容器命令
docker ps
docker ps -a
docker rm contrainer-id
docker run -it image-id /bin/bash
docker exec contrainer-id
//
docker run 操作的对象是镜像, 根据镜像创建一个容器,并运行一个命令
docker run [OPTIONS] IMAGE COMMAND [ARG...]
docker run --name ubuntu_bash --rm -it ubuntu bash
# -it 交互运行,并启动一个伪终端
# bash 镜像名 之后的部分,比如此处的bash, 是我们输入要运行的命令
# --rm 在容器退出时,删除容器
docker exec 操作的对象是容器,在运行的容器中执行命令
docker run -i 交互模式运行容器,通常和t 搭配使用
-t 为容器重新分配一个伪输入终端,
--name="" 为容器指定一个名字
-d 后台运行容器,并返回容器ID
docker exec -d 分离模式, 在后台运行
-t 分配一个伪终端, 最后一般需要给定一个bash
-w 后跟目录或者路径,,说明在哪个工作目录中执行命令
docker exec -it 721eb23901ce /bin/bash