简介
docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中.
docker思想
集装箱
没有集装箱之前运输货物,东西零散容易丢失,有了集装箱之后货物不容易丢失,我们可以把货物想象成程序,目前我们要把程序部署到一台新的机器上,可能会启动不起来,比如少一些配置文件什么的或者少了什么数据,有了docker的集装箱可以保证我们的程序不管运行在哪不会缺东西.
运输方式
docker运输东西有一个超级码头,任何地方需要货物都由鲸鱼先送到超级码头,然后再由鲸鱼从超级码头把货物送到目的地去.对应的技术来说,比如我们要把台式机的应用部署到笔记本上,我们可能选择用QQ发过去或者用U盘拷过去,docker就标准化了这个过程,我们只需在台式机上执行一个docker命令,把鲸鱼派过来,把程序送到超级码头去,再在笔记本上执行一个docker命令,然后由鲸鱼把程序从超级码头送到笔记本上去.
docker解决的问题
系统环境不一致
开发:我本地没问题.运维:服务器没问题. 这个问题就变成了皮球.
如果一个应用要正常的启动起来需要什么?比如java web应用.
需要一个操作系统,操作系统之上要jdk,tomcat,我们的代码,配置文件.
操作系统的改变可能会导致我们的应用开不起来,比如我们调用了某些系统命令.
jdk版本也可能导致程序的运行失败.比如class文件需要1.7编译,我们装了个1.6的jdk.
tomcat版本也能导致失败,比如旧的版本一些配置在新版本中不再支持.
代码的话就比如应用了C盘,D盘的一个文件,或者是用了系统的一些环境编码.
配置的话我们可能少了某个配置文件等等.
下面docker来了,它把操作系统,jdk,tomcat,代码,配置全部放到集装箱里.再打包放到鲸鱼上,由鲸鱼给我们送到服务器上,在我的机器上怎么运行,在别的机器上也怎么运行.不会有任何的问题.一句话就是docker解决了运行环境不一致所带来的问题.
1、Linux安装Docker
# 移除旧版本docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 配置docker yum源。
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动& 开机启动docker; enable + start 二合一
systemctl enable docker --now
# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
了解docker容器的使用场景和优缺点更有利于对docker容器的理解。
从使用上来讲,传统的部署方式,环境和项目分开搭建部署,环境离散,不方便迁移。
docker容器实现了将环境和项目统一化部署,方便迁移,方便管理。——类似一个容器,集中式管理。
2、Docker初体验
1、基本命令
-
拉取镜像(下载)
#不指定版本下载默认最新的 docker pull nginx #指定版本下载 docker pull nginx:1.26.0
-
查看镜像
docker images
-
运行镜像
docker run hello-world #参数详解 -d:后台运行 --name:应用名称 -p:端口映射 外部param1 80对应docker容器param2 80 param4 镜像[TAG:镜像名称] docker run -d --name mynginx -p 80:80 nginx
-
搜索镜像
docker search nginx
带ok标识符的表示官方的
-
某个命令更多的其他命令
docker xxx --help 如docker run --help
-
启动、重启、关闭
docker stop 容器名称或容器id docker start 容器名称或容器id docker restart 容器名称或容器id
-
查看正在运行的docker
# -a 可选 加入-a 查看关闭的容器 docker ps [-a]
status: Up启动状态,Exited关闭状态
-
删除容器\镜像
#-f 可选:强制删除 docker rm [-f] 容器名称或容器id docker rm -f d32 #批量删除容器 $(docker ps -aq) docker rm $(docker ps -aq) #删除镜像 docker rmi 镜像id
-
提交容器
# -m:提交信息 param2: 容器名称或者容器id param3:镜像 docker commit -m "update nginx" mynginx mynginx:v1.0
-
保存镜像
#-o 打成tar包 param2:镜像
docker save -o mynginx.tar myngix:v1.0
-
加载镜像
模拟同事机器什么环境都没有,加载镜像并且启动镜像
docker load -i 包名 docker load -i mynginx.tar