一.docker的基本使用
官网教程: docs.docker.com/desktop/
1.前提
需要 CentOS 7 或 8 的维护版本
**centos-extras
**库必须启用
安装
bash
#卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#安装yum工具
sudo yum install -y yum-utils
#设置稳定存储库
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#查看docker版本列表
yum list docker-ce --showduplicates|sort -r
#安装 Docker指定版本
yum -y install docker-ce-23.0.3-1.el7
docker version # 查看Docker版本
systemctl start docker # 启动 docker 服务:
systemctl stop docker # 停止 docker 服务:
systemctl status docker # 查看 docker 服务状态
systemctl restart docker # 重启 docker 服务
systemctl enable docker #设置开机启动
删除docker
bash
#卸载Docker引擎
sudo yum remove docker-ce docker-ce-cli containerd.io
#清除所有数据 删除所有镜像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
获取镜像
获取地址:
bash
#搜索镜像(看有哪些版本)
docker search nginx
#拉取镜像
docker pull nginx (版本号)
docker pull mysql
docker pull openjdk
#查看镜像的版本
docker image inspect mysql:latest|grep -i version
#查看镜像
docker images
#界面字段说明
# REPOSITORY:镜像属于的仓库;
# TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
# IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
# CREATED:镜像创建时间;
# VIRTUAL SIZE:镜像大小
#删除镜像
docker rmi 仓库名称:标签
docker rmi 镜像ID号
#切换阿里云镜像源
touch /etc/docker/daemon.json
vi /etc/docker/daemon.json
# 添加如下内容,可以自己替换。默认地址是我的创建的
{
"registry-mirrors": ["https://mr63yffu.mirror.aliyuncs.com"]
}
#刷新系统
systemctl daemon-reload
安装,升级docker
1.卸载低版本的docekr
bash
yum list installed | grep docker
yum -y remove docker* y
2.添加国内镜像
bash
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装yum工具
bash
yum install -y yum-utils
4.查看镜像中的docker版本
bash
yum list docker-ce --showduplicates|sort -r
5.安装指定的版本
bash
#安装指定版本
yum -y install docker-ce-18.03.1.ce-1.el7.centos
yum -y install docker-ce-23.0.3-1.el7
#启动
systemctl start docker
#查看
docker --version
#重新启动docker
systemctl restart docker
docker外放端口配置
用于外部连接 1.编辑配置文件
bash
vi /etc/systemd/system/multi-user.target.wants/docker.service
2.修改文件
i 进入编辑模式
bash
-H tcp://0.0.0.0:1212 -H unix://var/run/docker.sock
esc之后保存:wq
3.配置安全组防火墙之后重启docker
bash
重载
systemctl daemon-reload
重启
systemctl restart docker
查看端口是否开启
netstat -ntlp
4.连接
shell
tcp://47.97.66.70:1212
安装mysql
bash
#拉取镜像
docker pull mysql:8.0.32-oracle
#启动mysql
sudo docker run -d --name=mysql -e MYSQL_ROOT_PASSWORD=root -p3306:3306 mysql:8.0.32-oracle
安装Redis
shell
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /opt/myredis/redis.conf:/etc/redis/redis.conf -v /opt/myredis/data:/data -d redis:7.0.4 redis-server /etc/redis/redis.conf --appendonly yes --requirepass root
安装rabbitMQ
1.拉取镜像
docker pull rabbitmq
2.启动
shell
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
3.开启管理界面插件
shell
进入rabbitmq内部
docker exec -it 容器id /bin/bash
启动rabbitmq界面插件
rabbitmq-plugins enable rabbitmq_management
访问
http://localhost-ip:15672
账号密码
guest
guest
退出容器
exit
安装nginx
shell
#拉取官方nginx镜像
docker pull nginx
docker run -di --name nginx -p 80:80 nginx
#创建Nginx容器,并将容器中的/etc/nginx目录和宿主机的/home/local/nginx/conf目录进行挂载
#将容器内的配置文件拷贝到指定目录
# 创建目录
mkdir -p /home/ruoyi/nginx
# 将容器内的配置文件拷贝到指定目录
docker cp nginx:/etc/nginx /home/local/nginx/conf
docker的一些开源镜像资源,可以直接使用
DockerFile的使用
1.常用命令说明
Docker
#1.指定基础镜像
FROM
#2.在容器执行的命令 可以安装一些容器中没有的东西,比如字体,一些curl工具等等
RUN
RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*&&fc-cache&&mkfontscale&&mkfontdir&&fc-list
#3.挂载在宿主机的目录
VOLUME
VOLUME /home/nsjz
#指定工作起始目录
WORKDIR
WORKDIR /home/nsjz
#复制到容器中 add 自动解压
COPY ./docker/tianzhi/modules/system/jar/tianzhi-modules-system.jar /home/tianzhi/tianzhi-modules-system.jar
#容器启动的时候要干什么 (一般就是启动一些东西)
ENTRYPOINT
ENTRYPOINT ["java","-jar","tianzhi-modules-system.jar"]
# 指定对外的端口 expose
EXPOSE
EXPOSE 8080
# 维护者 maintainer
MAINTAINER
MAINTAINER tianzhi
制作自己的镜像容器
mkdir /opt/docker-images/容器名
cd 容器名
创建Dockerfile
vim Dockerfile
3.Dockerfile
前段的编写
node环境
bash
FROM node:16.15.0
RUN git clone https://gitee.com/mirschao/webserver-vue.git
COPY ./ ./app
WORKDIR /app
WORKDIR webserver-vue
RUN npm install
EXPOSE 8080
CMD ["npm","run","serve"]
编写完成后进行构建
docker build -t tianzhi-web:v1.0 .
查看镜像
docker image ls
运行镜像
docker run -itd ----name tianzhijava -p 8090:8080 tianzhi:v1.0
查看镜像的运行状态
docker ps -a
webserve:名字
v1.0:版本
. 构造 当前目录的Dockerfile
nginx的多阶段构造
DockerFile
FROM node:16.15.0
COPY ./ ./app
WORKDIR /app
RUN npm install && npm run build
FROM nginx:1.21
RUN mkdir /app
COPY --from=0 /app/dist/app
COPY nginx.conf /etc/nginx/nginx.conf
编写完成后进行构建
docker build -t web-project:v1.0 .
docker -itd -name web-project -p 80:80 tianzhi-web:v1.0
后端的编写
Python
python
FROM python:alpine3.15
COPY ../webserverbacken
WORKDIR webserverbackend
RUN pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple -r requirements.txt
EXPOSE 8000
CMD ["python","manager.py","runserver","0.0.0.0:8080"]
编写完成后进行构建
docker build -t tianzhijava:v1.0 .
运行
docker run -itd ---name ``tianzhijava``-p 8090:8080 ``tianzhijava``:v1.0
Docker-Compose
Docker-Compose是一个用来定义和运行多个复杂应用的Docker编排工具。比如,多个微服务项目,通常由多个容器应用组成。一个个手动启动?假如有上百个微服务呢,显然不现实,那么就需要使用Docker Compose编排工具来批量启动容器
安装docker-compose
下载docker-compose文件 curl -L github.com/docker/comp... -s
-
uname -m` -o /usr/local/bin/docker-compose
将文件复制到/usr/local/bin环境变量下面mv docker-compose /usr/local/bin
给他一个执行权限chmod +x /usr/local/bin/docker-compose
查看是否安装成功docker-compose -version
使用docker-compose进行编排
1.创建docker-compose目录
mkdir usr/local/docker-compose
cd usr/local/docker-compose
编写docker-compose.yml文件
yml
version: "3"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
vote:
image: dockersamples/examplevotingapp_vote:before
ports:
- 5000:80
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: dockersamples/examplevotingapp_result:before
ports:
- 5001:80
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
frontend:
backend:
volumes:
db-data:
启动docker-compose文件,这样我们就可以一下子启动中间件及多个服务
docker-compose -f docker-compose.yaml up -d
-f调用文件。
-d:开启守护进程
docker-compose常用命令
命令 | 说明 |
---|---|
build | 重新构建服务 |
ps | 列出容器 |
up | 创建和启动容器 |
exec | 在容器里面执行命令 |
scale | 指定一个服务容器启动数量 |
top | 显示正在运行的容器进程 |
logs | 查看服务容器的输出 |
down | 删除容器、网络、数据卷和镜像 |
stop/start/restart | 停止/启动/重启服务 |
注意:必须要在含有docker-compose.yml文件的目录中才可以使用 |
详细的编排语法请自行查阅学习,这里就不一一解释说明了