Docker学习(第一章节基础命令)

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的基本命令

详细查看官网说明:

docker images | Docker Docs

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
相关推荐
红中马喽11 分钟前
JS学习日记(webAPI—DOM)
开发语言·前端·javascript·笔记·vscode·学习
尘浮生2 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
Young_202202022 小时前
学习笔记——KMP
笔记·学习
行然梦实3 小时前
学习日记_20241110_聚类方法(K-Means)
学习·kmeans·聚类
马船长3 小时前
制作图片木马
学习
秀儿还能再秀3 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
WCF向光而行3 小时前
Getting accurate time estimates from your tea(从您的团队获得准确的时间估计)
笔记·学习
wang09073 小时前
工作和学习遇到的技术问题
学习
Li_0304065 小时前
Java第十四天(实训学习整理资料(十三)Java网络编程)
java·网络·笔记·学习·计算机网络
心怀梦想的咸鱼5 小时前
ue5 蓝图学习(一)结构体的使用
学习·ue5