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

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

相关推荐
大道归简15 分钟前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
zeruns8021 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~1 小时前
Docker
docker·容器
福大大架构师每日一题1 小时前
23.1 k8s监控中标签relabel的应用和原理
java·容器·kubernetes
程序那点事儿1 小时前
k8s 之动态创建pv失败(踩坑)
云原生·容器·kubernetes
疯狂的大狗2 小时前
docker进入正在运行的容器,exit后的比较
运维·docker·容器
长天一色2 小时前
【Docker从入门到进阶】01.介绍 & 02.基础使用
运维·docker·容器
伊玛目的门徒2 小时前
docker 搭建minimalist-web-notepad
运维·docker·notepad
theo.wu4 小时前
使用Buildpacks构建Docker镜像
运维·docker·容器
唐大爹13 小时前
项目实战:k8s部署考试系统
云原生·容器·kubernetes