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】