1:什么是docker
2:Docker历史
3:Docker的作用
1:更方便的交付、部署项目
传统:按照帮助文档,逐步部署项目
Docker:打包镜像发布测试,一键运行
2:更方便的升级、扩容项目
将项目打包成镜像,扩展到不同的服务器
3:更简单的运维项目
使用docker,我们的开发测试环境高度一致
4:Docker的基本组成
5:linux安装Docker
官方文档:CentOS | Docker Docs
5.1:安装要求
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS7
Matlab
#查看linux内核版本
uname -r
#查看linux系统版本
cat /etc/os-release
5.2:卸载
如果之前安装过旧版本的Docker,可以使用下面命令卸载:
Matlab
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
5.3:安装Docker
Matlab
使用rpm存储库进行安装
#1:安装yum-utils软件包
sudo yum install -y yum-utils
#2.1:设置镜像的仓库 这个地址是国外的十分慢 我们可以使用阿里云镜像
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#2.2:使用阿里云镜像 快点
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#3:安装docker,ce就是社区版和cli客户端
sudo systemctl stop firewalld
yum install docker-ce docker-ce-cli containerd.io
#4:Docker启动关闭
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
#5:查看版本
docker version
截图如下:
运行docker测试:
docker run hello-world //远程拉取
docker inages //查看下载的镜像文件
5.4:Docker配置阿里云加速
阿里云配置地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
5.4:Docker-run命令的流程
首先本地查找镜像,不存在远程仓库查找
5.5:docker搜索镜像
1:docker-hub搜索:
就像我们以前的maven搜索依赖一样,在docker-hub官网所有各种软件的镜像image,然后用命令拉取软件。
2:docker命令搜索:docker search
而docker search
报错,可能是因为docker search
功能在新版本的Docker中已被移除。从Docker 1.13版本开始,搜索功能已不再内置于Docker Engine,而是迁移到了Docker Hub的网页搜索功能
5.5:docker的基本命令
详细查看官网说明:
Matlab
#查看版本
docker -v
#查看详细信息
docker info
#docker帮助,查看所有命令
docker --help
#docker查看镜像信息
docker images
5.5:docker镜像操作命令(拉取不同版本、删除)
Matlab
#拉取镜像mysql tomcat 等等软件的镜像,不指定版本,就是最新
docker pull mysql
#拉取指定版本镜像mysql8.0
docker pull mysql:8.0
#拉取指定版本镜像mysql8.0和9.0版本
docker pull mysql:8.0
docker pull mysql:9.0
#查看镜像
docker images
#删除镜像id根据docker images的id删除
docker rmi id
#删除全部
docker rmi -f $(docker images -a)
5.6:容器命令
有了镜像,才可以创建容器
1:运行容器
Groovy
#拉取centos最新版
docker pull centos
#查看镜像
docker images
#运行容器centos, docker run
docker run -it centos /bin/bash
#退出容器,就停止,control +p +q 退出不停止
exit
2:查看运行的容器
Groovy
#查看正在容器运行
docker ps
#查看曾经的运行的所有容器-a 就是-all
docker ps -a
3:停止容器
Groovy
#查看运行的容器
docker ps
#根据id 停止容器
docker stop 2a684d9f8b79
#根据id 重启容器
docker start 0d087eb1d8e0
#根据id kill容器
docker kill 0da21648e14e
#进入指定容器 id
docker exec -it f28661074b18 /bin/bash
#进入指定容器 id
docker attach f28661074b18
4:删除容器
Groovy
#查看运行所有容器,run过的容器
docker ps -a
#查看运行所有容器,run过的容器id
docker ps -aq
#根据id删除容器
docker rm id
#删除所有容器
docker rm -f $( docker ps -aq)
5.7:其他命令
Groovy
#将容器f28661074b18的文件copy到本地
docker cp f28661074b18:/home/test1.java /hu/test1/
#将本地文件copy到docker容器f28661074b18
docker cp /hu/test1/a.txt f28661074b18:/home/
6:docker实战运行容器
6.1:docker运行nginx
Groovy
#搜索镜像
docker search nginx
#拉取镜像
docker pull nginx
#查看镜像
docker images
#启动nginx
#--name 名字
#-d 后台启动
#-p: 3344:80 端口号80映射到公网的3344
docker run -d --name nginx01 -p 3344:80 nginx
#查看容器
docker ps
#进入nginx目录 根据id
docker exec -it 66e2740955df /bin/bash
#停止nginx 根据id
docker stop 66e2740955df
截图显示:
6.2:docker运行Tomcat
Groovy
#--rm 下载容器 启动 就会删除 将本机8888端口 映射到容器的8080
docker run -it --rm -p 8888:8080 tomcat:9.0
#查询不到
docker ps -a
#拉取最新的镜像
docker pull tomcat
#查询镜像 可以有多个tomcat
docker images
#启动镜像,开启容器 根据tomcat的id启动 后台
docker run --name tomcat1 -it -d -p 8888:8080 228690642041
#根据id进入tomcat
docker exec -it d4ad3ea563f9 /bin/bash
#进入tomcat的目录 没有默认页面,是个最小的可运行环境
cd webapps
#将webapps.dist目录下的文件复制到 webapps
#然后浏览器访问http://172.16.35.142:8888/ 就没问题了
cp -r webapps.dist/* webapps
6.3:docker运行ES
Groovy
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
#1:dcoker 启动es单节点 命令来自docker-hub
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.15.3
7:docker可视化工具安装
1:docker命令
TypeScript
#1:拉取镜像
docker pull portainer/portainer-ce:latest
#2:运行镜像
docker run -d \
--name portainer \
-p 8088:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
--privileged=true \
portainer/portainer-ce:latest
#3:命令解释
docker run -d \ # 以后台方式运行一个 Docker 容器
--name portainer \ # 将容器命名为portainer
-p 8088:9000 \ # 将主机的8088端口(左)映射到容器的9000端口(右)
--restart=always \ # 自动重启容器,包括Docker启动以及运行失败时
-v /var/run/docker.sock:/var/run/docker.sock \ # 将主机上的/var/run/docker.sock文件挂载到容器的/var/run/docker.sock文件。这样可以使得容器能够与主机上的Docker守护进程进行通信
-v portainer_data:/data \ # 将名为portainer_data的卷挂载到容器的/data目录。这样可以在容器内部持久化保存Portainer的数据
--privileged=true \ # 将容器设置为具有特权访问(portainer用不到)
portainer/portainer-ce:latest # 指定要运行的Docker镜像为portainer/portainer-ce,并使用最新的版本
2:控制台访问
先设置登录密码,然后登陆
账户是:admin
密码是:admin12345678
8:提交commit自己Tomcat的镜像
#因为tomcat的webapp没有文件,所以启动容器后是空白页面404
#我们把文件复制到webapps然后提交,image 以后再起启动容器就有了管理页面了
TypeScript
#因为tomcat的webapp没有文件,所以启动容器后是空白页面
#我们把文件复制到webapps然后提交,image 以后再起启动容器就有了管理页面了
cp -r ../webapps.dist/* ../webapps
#-a="" 作者
#-m="" 描述
#d4ad3ea563f9 提交的id
#tomcat2 (image名字): 1.0(版本)
docker commit -a="hyj" -m="add webapps 页面" d4ad3ea563f9 tomcat2:1.0
#重新查看image,看到了打包的tomcat
docker images
#重新启动tomcat 包含webapps文件的镜像
docker run -d --name tomcat8082 -p 8082:8080 dbd3f6b358b6