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
相关推荐
西岸行者9 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意9 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码9 天前
嵌入式学习路线
学习
毛小茛9 天前
计算机系统概论——校验码
学习
babe小鑫9 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms9 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下9 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。9 天前
2026.2.25监控学习
学习
im_AMBER9 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J9 天前
从“Hello World“ 开始 C++
c语言·c++·学习