zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Docker基础实战

2023-02-18 16:23:33 时间

·Docker入门·

Docker简介:

随着云计算及云原生的发展,Docker基本上成了事实上的部署方式,Docker其实并不是什么虚拟化技术,它只是提供了一组工具,可以方便的生成和管理镜像,启动虚拟化的容器等。所以,这些的虚拟化也不再叫虚拟机,而叫容器。就是说,在一个Linux操作系统上,可以跑很多不同的容器,不同的容器之间的资源(如CPU、进程、内存、网络、硬盘空间等)都是隔离的,不同容器里的内容可以使用不同的内容,不同版本的应用序、或依赖库等,彼此独立运行,很方便,但它们实际上是共用内核,因而只适用于Linux。也就是说,宿主机和服务器必须都是Linux。

Docker的基本组成:

  • 镜像(image)

docker镜像就类似一个镜像模板,可以通过这个模板来创建容器服务。通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

  • 容器(container)

Docker利用容器技术,独立运行一个或者一个组应用通过镜像来创建之后形成容器,容器之间是相互隔离的。容器的基本命令有启动,停止,删除等。目前就可以把这个容器理解为就是极简版的linux系统

  • 仓库(repository)

仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库,Docker hub(默认是国外的,)阿里云也有容器服务器。

Docker入门命令:

  • 帮助命令:
docker version # 显示docker的基本信息
docker info # 系统信息,镜像和容器的数量
docker 命令 --help # 全部信息
mac@macdeMBP ~ % docker version
Client:
 Cloud integration: 1.0.17
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:20 2021
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true
mac@macdeMBP ~ % docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Build with BuildKit (Docker Inc., v0.6.3)
  compose: Docker Compose (Docker Inc., v2.0.0)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Containers: 13
  Running: 8
  Paused: 0
  Stopped: 5
 Images: 472
 Server Version: 20.10.8
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
  • 镜像命令
docker images 查看所有本地主机上的镜像,相当于获取本机所有镜像列表
docker search 搜索仓库中的镜像,除了命令搜索外,也可以到Docker hub上面搜索,Docker hub类似Github是众所周知的代码仓库聚集地,Docker hub就是Docker镜像的聚集地。除Docker Hub外,其他云厂商也提供镜像服务,如xswitch-free镜像就存储在腾讯云上。
docker pull 下载镜像,用法和git pull类似,拉去远程仓库的镜像文件
docker rmi remove image删除本机的镜像
  • 容器命令
  • 新建容器并启动
docker run [可选参数] image
  • 参数说明
--name=“Name” # 容器名字,用于区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 如-p 8080::8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
  • 启动退出容器
# 进入
docker run -it centos /bin/bash 
# 查看目录
ls
# 退出
exit
  • 查看运行的容器
# 查看正在运行的容器
docker ps
# 查看曾经运行的容器
docker ps -a
# 只显示容器的编号
docker ps -aq
  • 退出容器
# 容器停止退出
exit
  • 删除容器
# 删除指定容器 不能删除正在运行的容器,如果强制删除 rm -f
docker rm 容器id
# 删除所有容器
docker rm -f $(docker ps -aq)
# 删除所有容器
docker ps -a -q|xargs docker rm
  • 启动和停止容器的操作
docker start
docker restart
docker stop
docker kill
docker kill $(docker ps -q)  # 停止所有容器
# 开机自启动的容器
docker update –restart=always <CONTAINER ID>
#取消开机自启动容器
docker update –restart=no <CONTAINER ID>
  • 查看日志
docker logs
docker logs -tf -t --tail n 【id】

·Docker实战安装mysql·

  • 通过search命令查看远程Docker hub仓库中mysql镜像信息:

通过Docker hub文档也可以查看更多的镜像信息,文档地址:https://hub.docker.com/

docker search mysql
mac@macdeMBP ~ % docker search mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   13210     [OK]
  • 通过pull命令拉取远程dockerhub仓库中mysql镜像,下载到本地,如果不指定版本,将下载最新版本
docker pull mysql
mac@macdeMBP ~ % docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
  • 启动mysql容器,指定数据存放目录,指定端口,配置账户密码
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

--name指定容器名称 -p指定容器端口号映射 -e指定容器环境变量,这里配置mysql密码 -d指定后台运行容器

  • 查看容器状态,显示启动成功
docker ps

查看当前机器正在运行的容器状态