栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker 安装使用全教程,安装/ 命令大全 / DockerFile镜像制作/ Docker容器编排以及一键安装Nginx+Redis+Mysql/ 可视化工具Portainer (2022版)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker 安装使用全教程,安装/ 命令大全 / DockerFile镜像制作/ Docker容器编排以及一键安装Nginx+Redis+Mysql/ 可视化工具Portainer (2022版)


官网: https://docs.docker.com/
官网: https://www.docker.com/
docker 镜像市场: https://hub.docker.com/

一、docker 说明 1.1、docker 核心

1、Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源,Docker 是一个 CS 架构软件。
2、Docker 是一个虚拟化轻量级linux服务器,可以解决我们在开发环境中运行配置问题
3.、Docker的主要目标是‘build ,ship and run any app,anywhere’,一次封装,到处运行
4、容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

1.2、docker 版本问题

.Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

1.3、docker 架构( 3大核心)

· 1、Images 镜像 (等于软件)
· 2、Registry 仓库 (等于软件市场)
· 3、Containers 容器 (等于win系统, 可以下载并运行软件)

1.4、制作运行镜像流程

如: 部署一个springboot 项目到docker

1、第一步 制作并上传镜像 到 docker仓库2、第二步 拉取镜像并创建一个独立的docker容器3、第三步 运行容器,启动服务
二、安装docker 2.1、安装

注意事项

系统内核需要在 3.1 以上系统版本需要在 7.1 以上(7.0)lsb 命令 需先安装 : yum install -y redhat-lsb

## 查看系统内核 及 系统版本
uname -r
lsb_release -a

## 卸载旧版本(如果安装过旧版本的话
yum remove docker docker-common docker-selinux docker-engine

## 安装需要的软件包, yum-util 提供yum-config-manager功能,
## 另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2

## 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

## 查看所有 docker 版本
yum list docker-ce --showduplicates | sort -r

## 指定版本进行安装
yum install -y docker-ce-18.03.1.ce-1.el7.centos

## 启动
systemctl start docker

## 加入开机启动
systemctl enable docker

## 查询 docker进程
ps aux |  grep 'docker'

## 查询 docker版本
docker -v
2.2、配置Docker镜像地址

阿里云镜像地址(可跳过):
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

执行下方命令配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://076hklze.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

查看是否配置成功,使用命令: docker info

三、镜像

docker 镜像市场: https://hub.docker.com/

3.1、docker search 命令

docker search -s 30 mysql 只列出点赞数超过30以上镜像 latest 表示为最新的镜像文件 3.2、docker pull 命令

如 docker pull nginx 默认为 docker pull nginx:latest (拉取最新版本)拉取时 nginx:版本号 , 版本号可以使用 docker search 命令搜索获取 3.3、docker images 命令

查询镜像展示内容说明

REPOSITORY 存储库名称Tag 镜像的标签 不写版本号码 默认下载最新latest镜像IMAGE ID 镜像idCREATED 创建时间SIZE 大小 3.4、其他镜像相关命令

查看 五、docker 命令大全

四、容器 4.1、docker run 创建容器常用命令说明

-name 为容器设置名称, 在后续查日志和操作容器可直接使用该命名 (不在使用自动分配的容器 id)-v 表示宿主机的 /docker/xijia 目录为容器中的 /data 的挂载目录-p 指定端口映射,格式为:主机(宿主)端口:容器端口-d 后台运行,不直接进入容器-i 以交互模式运行容器,通常与 -t 同时使用-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;-m :设置容器使用内存最大值; 4.2、docker run 命令示例

## 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest

## 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest

## 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest

## 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

## 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/# 

后台启动的docker 容器可以使用以下命令输出实时日志

docker logs -f      

更多项见: https://www.runoob.com/docker/docker-run-command.html

五、docker 命令大全 5.1、docker 基础相关命令
docker logs             查看container的日志,也就是执行命令的一些输出
docker inspect    查看image或container的底层信息
docker version                     查看docker的版本号,包括客户端、服务端、依赖的Go等
docker info                        查看系统(docker)层面信息,包括管理的images, containers数等

systemctl start docker           启动  
sudo systemctl daemon-reload     守护进程重启 
systemctl restart  docker        重启docker服务  
sudo service docker restart      重启docker服务
service docker stop              关闭docker
systemctl stop docker            关闭docker

5.2、images 镜像相关命令
## 搜索下载
docker search       在镜像仓库中 搜索 image (同 https://hub.docker.com/ 内容)
docker pull         从镜像仓库 下载 image

## 查询本地镜像
docker images -a           列出所有本地 images
docker images -q           列出所有本地: 只显示镜像的id
docker images --digests    列出所有本地: 显示镜像的摘要信息
docker images --no-trunc   列出所有本地: 显示完整镜像信息

## 删除镜像
docker rmi       删除一个或多个image
docker rmi -f    强制删除一个或多个image
5.3、container 容器相关命令
## 创建容器
docker run          使用image创建container并执行相应命令,然后停止
docker run -i -t  /bin/bash  使用image创建container并进入交互模式, login shell是/bin/bash
docker run -i -t -p   将container的端口映射到宿主机的端口
docker attach            attach一个运行中的container

## 启动/停止/重启 容器
docker start       开启container(运行后会自动关闭容器)
docker start -i    启动一个container并进入交互模式(运行后容器一直处于运行状态)
docker stop        停止container
docker restart     重启container

## 查询容器
docker ps         默认显示正在运行中的container(容器)
docker ps -l      显示最后一次创建的container,包括未运行的
docker ps -a      显示所有的container,包括未运行的

## 删除容器
docker rm            删除一个或多个container  -f强制删除
docker rm `docker ps -a -q`        删除所有的container
docker ps -a -q | xargs docker rm  同上, 删除所有的container

## 进入容器内部
docker exec -it  f871701b9add  bash   进入容器,f871701b9add  为容器id(docker ps 查看)
docker exec -it  f871701b9add  sh     进入容器方式2, 方式1 可能会遇到错误
exit                                  容器内退出容器
5.4、docker 容器里的服务宕机自动重启
1、在创建容器时(docker run)加入参数
--restart=always
      
2、如果容器已经在创建,则使用docker update 加上自动重启的参数:  
docker update --restart=always    

3、查看是否成功
docker inspect 

查看是否成功

5.5、制作镜像 相关命令

tag = 版本号
path = linux 文件路径
Dockerfile = 配置文件

docker commit  [repo:tag]  将一个 container容器 打成一个新的 image镜像,后面的repo:tag可选, 让其自带修改容器后的内容
docker build                    寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image
docker build -t repo[:tag]            同上,可以指定repo和可选的tag
docker build - <          使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
docker port      查看本地哪个端口映射到container的指定端口,其实用docker ps
5.6、 删除所有容器和继续
## 删除所有的容器
docker rm $(docker ps -aq)
docker stop $(docker ps -q) & docker rm $(docker ps -aq) 

## 删除所有的镜像
docker rmi $(docker images -q)
六、Docker 安装相关服务 6.1、安装 nginx 静态文件服务器

镜像查看地址: https://hub.docker.com/search?q=nginx&type=image

1、创建挂载目录
mkdir -p /data/nginx/{conf,conf.d,html,logs}
2、创建启动 nginx 容器
docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html nginx

启动命令说明:

-name 给容器命令-d 后台启动-p 指定端口, 外部访问 81 映射到 容器内 nginx 的80端口-v 挂载, 容器内的 /usr/share/nginx/html 目录挂载到主目录:/data/nginx/html 下 3、在挂载目录 /data/nginx/html (宿主机目录, 非容器内目录)创建 index.html

## 进入目录
cd /data/nginx/html

## 创建index,html文件
touch index.html

## 编辑(自行使用vim命令进行编辑或远程编辑)
vim index.html
4、 访问Nginx

打开电脑的浏览器服务 ip:81, 如: http://192.168.43.230:81/
后面部署静态文件 直接放到挂载目录就可以了,无需重启Nginx服务

七、DockerFile 使用 7.1、DockerFile 文件说明

dockerfile 是镜像的配置文件
在需要制作镜像的 dockerfile文件目录执行 docker build 打包成一个镜像文件
在使用 docker run 镜像文件名称运行自己制作的镜像即可

DockerFile编写规范

A.#描述注释
B.指令必须要大写,后面至少需要带至少一个参数;
C.指令是按照从上到下,顺序执行;

DockerFile 文件中的指令

1.FROM 指定父镜像: 基于哪个镜像image构建 指定基础镜像,必须为第一个命令2.MAINTAINER :维护者3.RUN: 容器创建的时候执行一段命令 构建镜像时执行的命令4.ADD: 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget5.COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源6.CMD:构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件7.ENV: 设置环境变量8.EXPOSE: 指定于外界交互的端口9.VOLUME 用于指定持久化目录10.WORKDIR 设置进入容器时的路径 7.2、制作一个自定义 Centos 镜像系统

需求: hub仓库中的 centos 系统没有vim 命令, 自己扩展一个有 vim 插件的 centos 系统的镜像
1、创建镜像文件 Dockerfile 并编写内容

## 依赖镜像
FROM  centos
## 作者
MAINTAINER xiaoer
## 配置环境变量
ENV  MYPATH /usr
## 进入容器中默认访问到的目录 (环境变量配置的目录)
WORKDIR $MYPATH
## 容器执行时执行安装 vim 的命令
RUN yum -y install vim
## 暴露外部访问端口
EXPOSE 80
## 启动启用默认执行, 启动默认进入容器
CMD /bin/bash

2、制作镜像并 启用容器

##  运行命令制作镜像 (需要在Dockerfile 文件目录)
docker build -f Dockerfile -t xijia:1.0.0
## 创建容器并启用
docker run -it xijia:1.0.0
7.3、springboot 项目打镜像并运行 7.3.1、创建Dockerfile 文件

在 /docker/xijia-tool-app/server 目录中创建 Dockerfile 文件
如何是自己的目录 和 jar 包记得切换下方对应的内容

## 依赖环境
FROM openjdk:8-jdk-alpine
# 作者
MAINTAINER xijia-xiaoer
## 拷贝/复制文件
ADD xijia-tool-app-server-pro.jar /data/xijia-tool-app-server-pro.jar
## 指定容器目录 /data 挂载到 /var/lib/docker/volumes/随机名, run 命令可更改指定容器目录 /data 挂载位置
VOLUME /data
## run容器后的执行命令
ENTRYPOINT ["java","-jar","-Xms256m","-Xmx512m","-Dspring.profiles.active=pro","/data/xijia-tool-app-server-pro.jar"]
#暴露9062端口
EXPOSE 9062
7.3.2、上传 jar

7.3.3、执行命令
## 创建镜像
docker build -t xijia-tool-app-server:v1 .

## 创建并启动容器
docker run --name xijia-tool-app-server -v /docker/xijia-tool-app/server:/data -p 9062:9062 -d -it xijia-tool-app-server:v1 /bin/bash

## 查看启动状态,输出实时日志(启动容器后执行)
docker logs -f xijia-tool-app-server

更多操作详见另外一篇 spring-boot项目配置自动部署文章: https://blog.csdn.net/qq_41463655/article/details/121486210

八、Docker Compose 容器编排 8.1、容器编排作用

容器编排 主要作用与环境的一键安装, 比如微服务需要, Mysql,Redis,Nocos,Nginx,Kafka, ES 等诸多环境,使用容器编排技术可以一次性安装所有的相关环境, 并且可以根据自己的需求对安装顺序做配置, 比如 Nocos 需要 Mysql 的支持, 可以先安装 Redis, 在安装 Nocos
8.2、安装 Docker Compose 组件

ginhub 地址: https://github.com/docker/compose/releases

当前使用的的镜像地址(速度快): http://get.daocloud.io/#install-compose

## 拉取镜像,当前我下载的2.2.3 最新版本
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

## 修改文件为可执行
chmod +x /usr/local/bin/docker-compose

## 查看版本
docker-compose --version

## 卸载
sudo rm  /usr/local/bin/docker-compose

版本yml编写规范: https://docs.docker.com/compose/compose-file/compose-versioning/

8.3、Docker Compose 常用命令
docker-compose -h                           # 查看帮助

docker-compose up                           # 创建并运行所有容器
docker-compose up -d                        # 创建并后台运行所有容器
docker-compose -f docker-compose.yml up -d  # 指定模板
docker-compose down                         # 停止并删除容器、网络、卷、镜像。

docker-compose ps         # 列出项目中所有的容器
docker-compose logs       # 查看容器输出日志
docker-compose pull       # 拉取依赖镜像
dokcer-compose config     # 检查配置
dokcer-compose config -q  # 检查配置,有问题才有输出

docker-compose restart    # 重启服务
docker-compose start      # 启动服务
docker-compose stop       # 停止服务
8.4、使用容器编排同时安装 Nginx+Redis+Mysql

docker-compose文档地址: https://docs.docker.com/compose/reference/

1、创建文件: docker-compose.yml 并添加内容
version: "3.6"
services:
  ## 安装nginx
  nginx:
    # 远程仓库镜像与版本
    image: "nginx:1.21.6"
    # 自定义的容器名称
    container_name: "nginx-1.21.6"
    # 环境变量
    environment:
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
    # 挂载数据卷(注意, 需要提前创建 nginx.conf 配置文件并进行配置, 默认创建的是文件夹)
    volumes:
      - "./nginx/nginx1.21.6/data:/data"
      - "./nginx/nginx1.21.6/conf/nginx.conf:/etc/nginx/nginx.conf:ro"
    # 端口映射
    ports:
      - "80:80"
      - "443:443"

  ## 安装redis
  redis:
    image: redis:6.2.6
    container_name: redis-6.2.6
    # 服务宕机自动重启
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6379:6379
    volumes:
      - ./redis/redis-6.2.6/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/redis-6.2.6/data/:/data
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]

  ## 安装mysql
  mysql:
    image: "mysql:5.7.16"
    container_name: "mysql5.7.16"
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    volumes:
      - "./mysql/mysql5.7/data:/data/mysql"
      - "./mysql/mysql5.7/conf/my.cnf:/etc/my.cnf"
    ports:
      - "3306:3306"
2、对应docker-compose.yml 中的数据卷配置文件

对应的 yml 配置中的 redis + nginx +mysql 的挂载的数据卷 目录及文件可通过下方地址下载
链接:https://pan.baidu.com/s/1lh8l3n1hJs7ehtOK8m67yQ
提取码:v06f

3、运行进行环境一键安装
## 运行
docker-compose up

等待安装即可

4、测试环境

测试 nginx,访问挂载目录下 /data/html/index.html 文件
挂载目录

访问

测试redis , 使用 redis.conf 507行配置文件配置的密码: 123456 连接

测试数据库, 使用 root yml 配置的 123456 进行连接

九、Docker 可视话工具 Portainer 9.1、安装 Portainer
## 创建并启动
docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
9.2、访问

http://192.168.43.230:9000/

首次进入创建密码
进入后选 Local , 也可以远程连其他主机的docker, 下面可以直接在控制台 进行相关容器管理
注意: 我是用了浏览器翻译插件,所以显示的中文

结尾

关注公众号【兮家】,不定时分享干货内容哦

个人开源项目(通用后台管理系统)–> https://gitee.com/wslxm/spring-boot-plus2 , 喜欢的可以看看

本文到此结束,如果觉得有用,动动小手点赞或关注一下呗,将不定时持续更新更多的内容…,感谢大家的观看!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748741.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号