·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 # 全部信息
代码语言:javascript复制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
代码语言:javascript复制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镜像信息:
代码语言:javascript复制通过Docker hub文档也可以查看更多的镜像信息,文档地址:https://hub.docker.com/
docker search mysql
代码语言:javascript复制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
代码语言:javascript复制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
查看当前机器正在运行的容器状态