Docker基本讲解及演示

Docker安装教程

Docker安装教程

1、Docker介绍

Docker是一个开源的应用容器引擎,允许开发者将应用程序及其依赖项打包成一个轻量级、可移植的容器,然后发布到任何支持 Docker 的环境中运行,无论是开发机、测试机还是生产环境。

Docker基于沙箱技术,每个容器都有自己的独立运行环境,包括操作系统、库文件、配置等,实现了资源隔离和轻量级迁移。

2、Docker三要素

  • 镜像(image):镜像就是一个只读的模板,包含了运行容器所需的文件系统、配置参数、库和运行时环境等。
  • 容器(container):容器是代码的隔离环境,可以理解为一台独立的服务器
  • 仓库(repository):仓库中存储了一堆镜像,可以拉取或向其推送镜像

3、Docker常用命令

一:docker本身相关命令

  • 启动 docker
shell 复制代码
systemctl start docker
  • 关闭 docker
shell 复制代码
systemctl stop docker
  • 重新启动 docker
shell 复制代码
systemctl restart docker
  • 查看 docker 运行状态
shell 复制代码
systemctl status docker
  • 查看 docker 版本
shell 复制代码
docker -v

二:镜像(image)

1.镜像的查看、搜索、拉取、删除
  • 列出本地所有镜像【查看】
shell 复制代码
docker images
结果展示:
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    nginx        latest    605c77e624dd   2 years ago   141MB
    mysql        latest    3218b38490ce   2 years ago   516MB
    ...
  • 搜索镜像
shell 复制代码
docker search 镜像名	  		# 搜索与【镜像名】匹配的镜像
如:docker search nginx
  • 拉取镜像
shell 复制代码
docker pull 镜像名:版本号
如:docker pull nginx		# 不写版本默认为最新版
  • 删除镜像
shell 复制代码
docker rmi 镜像名
如:docker rmi nginx	# 删除 ngnix 镜像
2.移植镜像
  • 保存镜像
shell 复制代码
docker save -o nginx.tar nginx  #将镜像nginx导出,形成本地文件nginx.tar.tar
注意:移植到其他服务器记得给tar包加上可读权限
  • 加载镜像
shell 复制代码
docker load -i nginx.tar	#将镜像nginx从本地文件nginx.tar中加载出来

三:容器(container)

1.容器的查看、创建、启动、关闭、重启、删除
  • 查看容器
shell 复制代码
docker ps 		# 查看已安装并正在运行的容器
docker ps -a	# 查看所有容器
  • 创建容器并运行
shell 复制代码
docker run 配置 别名
常用配置:
	--name=NAME   		# 为容器指定名字为NAME,不使用的话系统自动为容器命名【容器名】
	--restart=always	# 容器退出后自动重新启动,保证容器服务的可靠性和持续可用性。
	--privileged=true	# 授予容器内进程访问宿主机上所有设备的权限
	-p 容器端口号:主机端口号		# 指定端口映射
	-v	文件夹:文件夹		# 目录的映射【docker容器与虚拟机共享同一个目录】
	-d	IMAGE_ID		# 后台运行容器并返回容器ID,即启动守护式容器(后台运行)
 
# 创建并允许 Nginx 容器
docker run --name nginx -p 80:80 -d 605c77e624dd nginx
  • 启动容器
shell 复制代码
docker start 容器名
如:docker start nginx
  • 关闭容器
shell 复制代码
docker stop 容器名
如:docker stop nginx
  • 重启容器
shell 复制代码
docker restart 容器名
如:docker restart nginx
  • 删除容器
shell 复制代码
docker rm 容器名
如:docker rm nginx
2.查看容器日志
shell 复制代码
docker logs 容器名
如:docker logs ngnix
3.容器重命名
shell 复制代码
docker rename 原来的容器名 新的容器名
4.进入与退出指定容器
shell 复制代码
# 进入指定容器
docker exec -it 【IMAGE_ID|容器名】 /bin/bash
如:docker exec -it 3218b38490ce /bin/bash	【进入mysql】

# 退出容器【从容器回到虚拟机】
exit

4、Docker的实际演示

一:mysql安装

shell 复制代码
docker search mysql 		# 找到合适的mysql镜像
docker pull mysql			# 下载镜像(默认最新版本)

# 安装mysql容器并运行
docker run \
    --name mysql8 \	
    --restart=always \
    --privileged=true \
    -e MYSQL_ROOT_PASSWORD='123456' \
    -p 3306:3306 \
    -v /opt/software/mysql_docker_3308:/mysql_share \
    -d  3218b38490ce

docker ps								# 查看已安装并正在运行容器
docker exec -it mysql8 /bin/bash		# 进入mysql容器
exit									# 退出mysql容器

主要参数讲解

--name mysql8:给容器取名为mysql8

--restart=always:每当docker启动时总能启动mysql8容器

-e MYSQL_ROOT_PASSWORD:mysql密码

-p 3308:3306:映射容器的3306端口到宿主机的3308端口,外部主机可以直接通过宿主机ip:3308访问到容器的mysql8服务。

-d 3218b38490ce:后台模式下运行指定容器【-d 镜像ID】

Docker中的Mysql与外网连接测试

二:Redis安装

shell 复制代码
docker search redis				# 找到合适的redis镜像
docker pull redis				# 下载redis镜像(默认最新版本)

# 安装redis容器并运行
docker run \
    --name Redis \
    --restart=always \
    --privileged=true \
    -e MY_REDIS_PASSWORD='123456' \
    -p 6379:6379 \
    -d  7614ae9453d1
   
docker ps								# 查看正在运行的容器
docker exec -it mysql8 /bin/bash		# 进入redis容器
exit									# 退出redis容器

主要参数讲解

--name Redis:给容器取名为Redis

--restart=always:每当docker启动时总能启动Redis容器

-e MY_REDIS_PASSWORD:设置Redis的访问密码为123456

-p 6379:6379:映射容器的6379端口到宿主机的6379端口,外部主机可以直接通过宿主机ip:6379访问到容器的Redis服务。

-d 7614ae9453d1:后台模式下运行指定容器【-d 镜像ID】

相关推荐
ZHOU西口3 分钟前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
想进大厂的小王3 小时前
Spring-cloud 微服务 服务注册_服务发现-Eureka
微服务·eureka·服务发现
景天科技苑3 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
wclass-zhengge3 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇4 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
川石课堂软件测试6 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
昌sit!12 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
追风林13 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
A ?Charis14 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
城南vision15 小时前
Docker学习—Docker核心概念总结
java·学习·docker