目录
镜像操作实践
下载镜像
语法:docker pull 镜像名
docker pull hello-world
浏览镜像文件
语法:docker images
docker images
查看镜像详情
语法:docker inspect
docker inspect hello-world
查看镜像历史
语法:docker history hello-world
docker history hello-world
导出镜像文件
语法:docker save hello-world | gzip > hello-world.tar.gz
docker save hello-world | gzip > hello-world.tar.gz
删除镜像文件
语法:docker image rm 镜像名或者镜像id
docker image rm hello-world
导入镜像操作
语法:docker load < hello-world.tar.gz
注:要在hello-world.tar.gz文件所在目录下执行
docker load < hello-world.tar.gz
运行镜像文件
语法:docker run hello-world
docker run hello-world
镜像安装
一、安装Mysql
1.进入docker官网hub.docker.com搜索mysql镜像
1.1也可以选择导入别人的镜像
2.下载需要版本的mysql,冒号左侧为版本号,不写为最新版
docker pull mysql:8.0.23
3.查看是否加载镜像成功
docker images
4.启动运行mysql镜像(docker run 用于启动一个容器,虚拟机用户为root时sudo可以省略,如果安装失败,查看容器中是否已经存在->>docker ps -a,如果存在删除重新安装)
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.23
5.登录
5.1进入容器(退出容器exit)
sudo docekr exec -it mysql bash
5.2登录,默认密码为root,一定要先进入mysql容器
mysql -uroot -proot
5.3直接登录
sudo docker exec -it mysql mysql -uroot -proot
6查看mysql启动时日志,
docker container logs mysql
7开机自启
docker update mysql --restart=always
二、安装Redis
1.下载镜像文件
docekr pull redis
2.准备配置文件
注:创建redis配置文件目录
mkdir -p /usr/local/docker/redis1/conf
注:在配置文件目录下创建redis.con配置文件(不创建会导致我们进行目录挂载时默认生成目录)
touch /usr/local/docker/redis1/conf/redis.conf
3.创建redis实例并启动
sudo docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
4.查看正在运行的进程内
docker ps
5.控制台直接连接redis测试
docker exec -it redis1 bash
6.检测redis版本
redis-server -v
redis-cli -v
7.登录redis(默认不需要密码)
redis-cli
8.停止redis
docker stop redis1
9.启动redis
docker start redis1
10.重启redis
docker restart redis1
三、Nginx
1.下载镜像文件
docekr pull nginx
2.查看镜像文件
docker images
3.创建数据卷
docker volume create nginx-vol
3.1查看数据卷对相应的目录
docker inspect nginx-vol
4.启动nginx服务
docker run --name nginx -p 80:80 -v nginx-vol:/etc/nginx -d nginx
其中:/etc/nginx为nginx容器启动时,nginx镜像文件默认的解压目录
假如想修改nginx配置,进入nginx-vol数据卷对应的目录修改
nginx默认端口为80,打开浏览器输入localhost:80 ,:80可以省略,如果页面显示Welcome to nginx!表示启动成果
5.停止nginx服务
docker stop nginx
6.启动nginx服务
docker start nginx
7.重启nginx服务
docker restart nginx
四、安装Nacos组件
1.拉取nacos(hub.docker.com)
docker pull nacos/nacos-server:1.4.1
2.mysql中执行nacos的sql脚本文件
2.1将此文件nacos-mysql.sql(这个文件可从code服务器下载)拷贝到mysql容器的宿主机对应的挂载目录(可通过docker inspect mysql查看mysql的挂载目录)
2.2启动mysql容器并登录mysql
docekr exec -it mysql mysql -uroot -proot
3.通过指令运行容器目录下的sql文件
source /etc/mysql/nacos-mysql.sql
4.创建并启动nacos容器(拷贝下面内容时,账号和密码要用自己宿主机ip,自己数据库的账号密码)
docker run \
-e TZ="Asia/Shanghai" \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_DATABASE_NUM=1 \
-e MYSQL_SERVICE_HOST=192.168.126.129 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--name nacos \
--restart=always \
-d nacos/nacos-server:1.4.1
参数说明
单节点模式
MODE=standalone
数据库地址
MYSQL_SERVICE_HOST
数据库用户名
MYSQL_SERVICE_USER
数据库密码
MYSQL_SERVICE_PASSWORD
需连接的数据库名称
MYSQL_SERVICE_DB_NAME
端口映射
-p 8848:8848
5.任意时候重启容器,开机就能自动启动容器(需设置docker为开机自启)
--restart=always
6.检查nacos服务
docker ps
7.假如启动失败,检查日志(日志在/home/nacos/logs/start.out)
docker container logs nacos
8.停止和/启动/重启nacos服务
docker stop/start/restart nacos
容器操作实践
1.下载镜像(官方镜像仓库https://hub.docker.com/)
docker pull centos:7
2.查看镜像文件
docker images
创建并启动容器
1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。
docker run -it xxxx bash
停止(stop)重启(Restart)容器
docker container stop/restart 容器id #其中操作容器时container可以省略
查看容器Container
docker ps -a
查看容器(logs)信息
docker container logs 容器id
进入(exec)指定容器
docker exec -it 容器id bash #容器id可以用容器名替代
从容器中退出
exit
删除(rm)容器
如果容器正在运行使用-f进行强制删除
docker rm 容器id
docker rm -f 容器id
数据管理实践
概述
在容器中管理数据主要有两种方式:
- 数据卷(Volumes)
- 挂载主机目录(Bind mounts)
数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
创建数据卷
docker volume create container-vol
查看所有数据卷
docker volume ls
查看指定数据卷
docker volume inspect container-vol
启动挂载数据卷的容器
docker run -it --mount source=container-vol,target=/root centos:7 bash
#简写docker run -it -v container-vol:/root centos:7 bash
删除数据卷
docker volume rm container-vol
清理无主数据卷
docker volume prune
挂在主机目录
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
docker run -it -v /usr/app:/opt/app centos:7 bash
查看挂载点目录信息
docker inspect 容器id
容器互联实践
概述
Docker 中存在多个容器时,容器与容器之间经常需要进行通讯,例如nacos访问mysql,redis集群中各个节点之间的通讯。
解决方案
Docker 中容器与容器之间进行通讯的解决方案一般有两种:
第一种:两个容器通过宿主机进行通讯(容器中的端口会映射到宿主机上)
第二种:两个容器之间直接通过虚拟网络进行连接,但是需要我们在docker中创建网络。
新建网络
docker network create -d bridge f-net
查看网络信息
docker network ls #列出所有网络
dockers inspect 容器id #查看网络信息
创建容器
打开终端,基于centos:7这个镜像启动容器,并假如到f-net这个网络
docker run -it --name app1 --network f-net centos:7
新开终端执行,基于centos:7这个镜像再启动容器,同时也加入到t-net网络
docker run -it --name app2 --network f-net centos:7
测试网络互通
在两个终端分别执行:
ping app1
ping app2