docker从零开始

一.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 

获取镜像

获取地址:

hub.docker.com/

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的一些开源镜像资源,可以直接使用

prclub.notion.site/Docker-827e...

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文件的目录中才可以使用

详细的编排语法请自行查阅学习,这里就不一一解释说明了

相关推荐
功德+n7 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭8 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿8 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher9 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家11 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR11 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆11 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w61001046612 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin9999912 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊13 小时前
Docker 入门之网络基础
网络·docker·php