Docker

一、Docker简介

Docker是直接安装在操作系统之上。

一.核心概念

1、Docker镜像(images)

类似于WINDOWS镜像

2、Docker容器(Container)

类似于虚拟机,轻量级虚拟机

3、Docker客户端(CLIENT)

客户端通过命令行或者其他工具来使用DOCKER

4、Docker主机(HOST)

一个物理或者虚拟的主机,用于执行DOCKER守护进程和容器

5、Docker仓库(Registry)

存放DOCKER镜像的地方

二.Docker的安装(CENTOS7)

1、检查内核版本

Linux安装DOCKER需要内核版本大于3

[root@VM-0-11-centos /]# uname -r
3.10.0-1127.13.1.el7.x86_64

1、检查内核版本

2、yum安装docker依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

3、修改docker仓库为阿里云(下载会快一丢丢)

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、查看阿里云docker最新版本
yum list docker-ce --showduplicates | sort -r

在这里插入图片描述

5、安装指定版本(建议安装最新版本)

有两种方式,指定ce,指定ce+cli
如果使用第一种不指定cli,cli会默认使用最新版本,无需求,第一种即可。

yum install docker-ce-<VERSION_STRING>
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

yum install -y docker-ce-20.10.8-3.el7
6、确认安装成功
 docker -v
7、启动docker
systemctl start docker
8、设置开机启动
systemctl enable docker
9、停止docker
systemctl stop docker
10、停止开机启动
systemctl disable docker

三.Docker的使用

1、搜索镜像(docker search xxx)

docker search mysql

2、下载镜像

下载默认版本

docker pull mysql

下载指定版本

docker pull mysql:版本号

3、查看下载的镜像

docker images

4、删除(必须没有生成的容器,无论容器是否运行)

docker rmi imageid

5、启动

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 运行tomcat镜像的lastest版本,命名为mytomcat
docker run --name mytomcat -d tomcat:lastest

OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

–name=“nginx-lb”: 为容器指定一个名称;

–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h “mars”: 指定容器的hostname;

-e username=“ritchie”: 设置环境变量;

–env-file=[]: 从指定文件读入环境变量;

–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

–link=[]: 添加链接到另一个容器;

–expose=[]: 开放一个端口或一组端口;

–volume , -v: 绑定一个卷

6、停止

docker stop ID OR NAME
docker stop mytomcat

7、查看所有的容器(包括已经停止的)

docker ps -a

8、删除容器(容器必须为停止状态)

docker rm id or name

9、重启停止了的容器

docker start id or name

10、端口映射

将服务器端口和docker内的端口进行映射

# 9000为服务器端口,6379为docker容器端口
-p 9000:6379 

启动做了端口映射的容器

docker run -d --name tomcattest -p 9000:8080 tomcat:latest

11、查看日志

docker logs id or name

持续输出日志

docker logs 容器id -f

12、挂载

-v 【本机目录:容器目录】

13、进入容器(退出不停止)

docker exec -it  CONTAINER_ID OR CONTAINER_NAME  bash

-it的意思

 exec:                                     Run a command in a running container(在运行的容器中运行命令)
exec -i:  --interactive(相互作用的)       Keep STDIN open even if not attached(即使没有连接,也要保持STDIN打开)
exec -t:   --tty                          Allocate a pseudo-TTY(分配一个 冒充的终端设备)

三.Docker环境搭建

1、mysql

如果只这么执行会无法启动

docker run -d --name dockermysql -p 13306:3306 mysql:latest

查看无法启动原因

docker logs dockermysql 

未配置数据库密码,必须指定或者设置为无密码。

2021-06-09 11:59:05+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
    You need to specify one of the following:
    - MYSQL_ROOT_PASSWORD
    - MYSQL_ALLOW_EMPTY_PASSWORD
    - MYSQL_RANDOM_ROOT_PASSWORD

如果顺序不同可能会启动失败,这个顺序亲测成功。

docker run -p 13306:3306  --name dockermysql  -e MYSQL_ROOT_PASSWORD=pwd-d bingozhou/mysql5.7

连接navicat报错,需要进入docker容器

docker exec -it dockermysql bash

再进入数据库

mysql -u root -p
# 使用MYSQL库
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  ### 123456 mysql的登录密码
#刷新
flush privileges;

2、redis

docker run -p 16379:6379  --name dockerredis   -d redis:latest

3、rabbitmq

4、elasticsearch

5、Nacos

1.下载
docker pull nacos/nacos-server
2.启动(单机模式)
docker run \
  --name nacos \
  --restart=always \
  -d \
  -e MYSQL_MASTER_SERVICE_HOST=127.0.0.1 \
  -e MYSQL_MASTER_SERVICE_PORT=3306 \
  -e MYSQL_MASTER_SERVICE_DB_NAME=nacos_config \
  -e MYSQL_MASTER_SERVICE_USER=root \
  -e MYSQL_MASTER_SERVICE_PASSWORD=123456\
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_DATABASE_NUM=1 \
  -e NACOS_USER=nacos\
  -e NACOS_PASSWORD=nacos\
  -e JVM_XMS=512m \
  -e JVM_XMX=512m \
  -e JVM_XMN=256m \
  -e JVM_MS=32m \
  -e JVM_MMS=80m \
  -p 8848:8848 \
  nacos/nacos-server:latest
3.启动(集群模式)

指定几个就启动几个

docker run -d \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS="119.91.99.85:8848 119.91.99.85:8847 119.91.99.85:8846" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_DATABASE_NUM=1 \
-e MYSQL_SERVICE_HOST=139.155.49.250 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=xxxx\
-e MYSQL_SERVICE_DB_NAME=nacos_config \
  -e NACOS_USER=nacos \
  -e NACOS_PASSWORD=nacos \
-e NACOS_SERVER_IP=119.91.99.85 \
  -e JVM_XMS=512m \
  -e JVM_XMX=512m \
  -e JVM_XMN=256m \
  -e JVM_MS=32m \
  -e JVM_MMS=80m \
-p 8848:8848 \
--name nacos-8848 \

6、sentinel

1.下载
docker pull docker.io/bladex/sentinel-dashboard 
2.安装
docker run --name sentinel --restart=always  -d -p 8858:8858 -d bladex/sentinel-dashboard

7、Nginx

1.下载
docker pull nginx
2.随便启动起来,为的是获取配置文件。
docker run --name nginx-test -p 7777:80 -d nginx
3.获取配置文件

先创建好准备存放配置文件的路径

mkdir /usr/local/nginx -p

将配置文件复制出来
CP 容器名称或ID:/文件目录 目标目录

docker cp nginx-test:/etc/nginx/nginx.conf /usr/local/nginx 
4.修改配置文件
upstream nacosserver{
server 119.91.99.85:8846;
server 119.91.99.85:8847;
server 119.91.99.85:8848;
}

server {
  listen 8849;
server_name localhost;
 location /nacos/ {
proxy_pass http://nacosserver/nacos/;
}
5.删除之前的临时容器,并重新启动一个新的容器
docker run -p 80:80 --net host --name nginx -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf --privileged=true -d nginx

8、elasticsearch

9、logstash

10、kibana

docker pull kibana:7.14.2
docker run -d --restart=always --name kibana  -p 5601:5601 kibana:7.14.2

四.Docker部署jar包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值