一:使用Docker命令
1.镜像命令
命令解析:docker --help
通过该命令可以查询到所有的docker操作命令,
通过docker 命令 --help可以查看某个命令的详细信息
案例:从DockerHub中拉取一个nginx镜像并查看
- 步骤一:访问dockerHub的官方网址:https://hub.docker.com/
- 步骤二:搜索nginx,根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
如果pull后面不增加版本号,默认拉去最新的版本 - 步骤三:通过命令:docker images查看已安装的镜像
利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
- 步骤一:利用docker xx --help命令查看docker save和docker load的语法
- 步骤二:使用docker save导出镜像到磁盘
- 步骤三:,先使用docker rmi删除nginx使用docker load加载镜像
2.Docker镜像命令联系
2.容器命令
容器相关命令
- docker exec 进入容器执行命令
- docker logs 查看容器运行日志
- docker ps 查看所有运行的容器及状态
- docker rm 删除指定容器
创建运行一个Nginx容器
- 步骤一:去docker hub查看Nginx的容器运行命令
docker run --name containerName -p 80:80 -d nginx
使用该命令生成用于标识容器的唯一id
- 步骤二:使用docker ps查看容器状态,在游览器上访问服务器ip+80,出现下面界面代表成功。
警告:如果游览器访问失败,请注意
:我的是阿里云服务器+CenOS8
方法一:查看防火墙是否关闭
systemctl使用
systemctl unmask firewalld #执行命令,即可实现取消服务的锁定
systemctl mask firewalld # 下次需要锁定该服务时执行
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
systemctl reloadt firewalld.service #重载配置
systemctl restart firewalld.service #重启服务
systemctl status firewalld.service #显示服务的状态
systemctl enable firewalld.service #在开机时启用服务
systemctl disable firewalld.service #在开机时禁用服务
systemctl is-enabled firewalld.service #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
方法二:配置服务器的安全组
进入阿里云,选择云服务器ECS
- 步骤三:游览器访问成功后,通过docker logs nginx查看日志
docker exec -it mn bash
cd /usr/share/nginx/html
sed -i 's#Welcome to nginx#传智教育欢迎您#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
案例:
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
3.容器卷命令
数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作:
- docker volume prune
4.容器卷命令案例(创建一个MySQL容器)
- 步骤一:拉取mysql镜像:
docker pull mysql:8.0
- 步骤二:创建目录/tmp/mysql/data,/tmp/mysql/conf,将我提供的hmy.cng文件上传到/tmp/mysql/conf
- 步骤三:去DockerHub查阅资料,创建并运行MySQL容器,要求:
在这里插入图片描述
docker run \
--name mysql \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=12345 \
-d mysql:8.0
二:使用Docker自定义镜像
1.镜像结构
2.自定义镜像
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
自定义镜像文件包:
链接:https://pan.baidu.com/s/128FRCwlL5NZnZ08zqLIEhQ?pwd=t8xs
提取码:t8xs
Dockerfile的内容如下:
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
将以上文件下载下来,放置到temp/cloud-demo文件夹内
运行该命令创建镜像:docker build -t javaweb:1.0 .
查看并基于镜像运行容器
访问项目测试 : 通过ip+端口+接口路径访问项目
简便版本:
将Dockefile文件内容改成:
# 指定基础镜像
FROM java:8-alpine
# 拷贝jdk和java项目的包
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
使用该命令启动:docker build -t javaweb:2.0 .
在使用该命令运行容器:docker run --name web -p 8090:8090 -d javaweb:2.0
3.DockerCompose
作用:帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。
安装请看这里:
链接:https://pan.baidu.com/s/14llDeYp8LqmttuMv9NKdyg?pwd=7ef3
提取码:7ef3
三:部署微服务集群
nacos启动过于慢,建议先部署nacos,或者启动其他服务
docker-compose restart userservice gateway orderservice
四:配置自己的镜像仓库
1.简化版镜像仓库
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:
sh docker run -d \ --restart=always \ --name registry \ -p 5000:5000 \ -v registry-data:/var/lib/registry \ registry
命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。
访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像
2.带有图形化界面版本:
由于我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
vi /etc/docker/daemon.json
添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
重加载:systemctl daemon-reload
重启docker:systemctl restart docker
在tmp目录下新建registry-ui目录,新建一个docker-compose.yml文件夹,修改该文件
version: '3.0'
services:
registry:
image: registry
volumes:
- ./registry-data:/var/lib/registry
ui:
image: joxit/docker-registry-ui:static
ports:
- 8080:80
environment:
- REGISTRY_TITLE=传智教育私有仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
使用以下命令启动:docker-compose up -d
访问:http://47.92.165.116/8080
上传镜像