Docker 安装常用环境

Posted by JJput on 10-29,2021

Docker

Docker基础知识通俗解释

镜像

就像我们装系统一下,需要iso镜像文件,此镜像你可以照搬理解,也是用于安装对应软件。
同一软件可以同时存在多个版本的镜像。比如mysql,我本地可以同时存在5.7版本和8.0版本,安装容器的时候指定版本即可。

容器

我们用镜像安装并成功运行的对象,称之为容器。
而且同一镜像可以同时安装很多个容器,这样就可以很方便的模拟出分布式架构,学习和实践都方便。

常用命令

查看正在运行的容器

docker ps	

查看所有已经创建的容器

docker ps -a	

列出镜像列表

docker images	

启动、停止、重启容器

docker start xxxx
docker stop xxxx
docker restart xxxx

强制删除容器

docker rm -f xxxx

删除镜像

docker images rm xxxx

配置docker镜像与容器安装路径

Docker 版本 >= v17.05.0

停止docker

sudo systemctl stop docker.socket
sudo systemctl stop docker.service

创建docker配置

vim /etc/docker/daemon.json

加入

{
    "data-root": "/你要改的路径/docker",
    "storage-driver": "overlay2" # 这个是 Docker 是默认设置,这里也可以不用加
}

重启docker

sudo systemctl restart docker.service

MySQL

拉取最新版mysql

docker pull mysql:latest

ARM架构,M1芯片拉去最新版mysql

docker pull mysql/mysql-server:latest

指定版本

docker pull mysql:版本号

验证是否安装mysql镜像

docker images

会看到有mysql的镜像(TAG为你下载时的版本)
image.png

安装运行容器

docker run -itd --name mysql -p 8000:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

解释:

  • run -itd一般写法,详情查看菜鸟
  • --name mysql指定容器名称为mysql
  • -p 8000:3306将内部3306端口映射出去为8000,实际连接时也应上8000
  • -e MYSQL_ROOT_PASSWORD=123456设置默认root密码为123456
  • 尾部的mysql代表该容器的镜像,如果本地存在多个镜像需要指定版本,如mysql:5.7

这样还没完,mysql默认root是不允许外部连接的,我们需要进入修改。

docker desktop的同学进入容器命令行很方便:

image.png

也可以通过命令进入

docker exec -i 69d1 bash

其中69d1是容器的id,前4位即可
查看容器id

docker ps

mysql的用户操作可以看这篇文章MySQL用户操作

Redis

拉取

docker pull redis:latest

安装并运行

docker run -itd --name redis -p 6379:6379 redis

设置默认密码

docker run -itd --name redis -p 6379:6379 redis --requirepass "mypassword"

RabbitMQ

拉取,这里注意一下rabbitmq:management是带后台管理界面的,rabbitmq:latest是不带的。

docker pull rabbitmq:management

安装并运行

docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management

MongoDB

拉取

docker pull mongo:latest

安装并运行

docker run -itd --name mongo -p 27017:27017 mongo --auth

进入容器后配置连接账号密码

进入容器后输入下面指令进入
mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')

Elasticsearch & Kibana

创建es专属网络

docker network create es-net

版本较高时,安装Kibana的时候需要和ElasticSearch在同一网段内,我也也推荐这么做。

创建es

docker run -d \
	--name elasticsearch \
    -e "discovery.type=single-node" \
    -v /data/es/data:/usr/share/elasticsearch/data \
    -v /data/es/logs:/usr/share/elasticsearch/logs \
    -v /data/es/plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 19200:9200 \
    -p 19201:9300 \
elasticsearch:7.1.1

-e “cluster.name=es-docker-cluster”:设置集群名称
-e “http.host=0.0.0.0”:监听的地址,可以外网访问
-e “ES_JAVA_OPTS=-Xms512m -Xmx512m”:内存大小
-e “discovery.type=single-node”:非集群模式
-v /data/es/data:/usr/share/elasticsearch/data:本地/data/es/data绑定elasticsearch的数据目录
-v /data/es/logs:/usr/share/elasticsearch/logs:本地/data/es/logs绑定elasticsearch的日志目录
-v /data/es/plugins:/usr/share/elasticsearch/plugins:本地/data/es/plugins绑定elasticsearch的插件目录
–privileged:授予逻辑卷访问权
–network es-net :加入一个名为es-net的网络中
-p 19200:9200:端口映射配置

创建Kibana

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.1.221:19200 \
--network es-net \
-p 19202:5601  \
kibana:7.1.1

设置服务自启

# docker update --restart=always 容器名或容器ID
docker update --restart=always <CONTAINER ID>
# 例如将tomcat设为自启动
docker update --restart=always tomcat