docker(四)安装常用镜像

常用命令

  • 获取镜像

docker pull [软件名][:版本号]

docker pull ubuntu	#拉取ubuntu镜像
  • docker镜像的查看
docker images | grep mongo	#查看mongo的镜像

docker images | grep ubuntu #查看ubuntu镜像
  • 启动容器

docker run [选项] 镜像名 命令 [参数]

  • 选项说明:
    -d: 后台运行容器(守护进程) 并返回容器ID
    -i: 以交互模式运行容器,通常与-t同时使用
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -p: 指定端口映射,格式:主机(宿主)端口:容器端口
    -P: 随机端口映射,容器内部端口随机映射到主机的端口
    -v:绑定一个数据卷
    -h “mars”: 指定容器的hostname;
    -e username=“ritchie”: 设置环境变量;
    -m :设置容器使用内存最大值和最小值,一般设置成一样;
    –env-file=[]: 从指定文件读入环境变量;
    –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
    –volume: 和-v一样,绑定一个数据卷
    –name=mongo-lb: 为容器指定一个名称
    –privileged=true 提升容器内权限,可读可写
    –restart=always 开机自启动
# 以后台方式启动mongodb容器,并且端口映射到本地27017
docker run -itd --name mongo -p 27017:27017 mongo:latest

# 主机的目录~/dockerdata/mysql映射到容器的/data
docker run -d --name mysql57 -p 3309:3309 -v ~/dockerdata/mysql:/data mysql:5.7

# 使用镜像 nginx:latest,以后台模式启动一个容器,绑定容器的8080端口,并将其映射到本地主机127.0.0.1的80端口上,主机的目录~/dockerdata/nginx 映射到容器的 /data;权限设置为可读可写。
docker run -p  127.0.0.1:80:8080/tcp -v ~/dockerdata/nginx:/data -d nginx:latest --privilege
  • 更新容器的配置

docker update [选项] [容器1] [容器2] [容器3]

# 更新mongodb容器的配置,设置为开机自启动

#查看mongo容器的id
docker ps | grep mongo

docker update --restart always 0e61865a256a cda1f1c347ba mongodb redis
  • 查看docker某个容器的日志记录
docker logs -f kibana7
  • 重名容器名

docker rename [原容器名] [新容器名]

docker rename redis-new redis-slave
  • 列出容器
docker ps -a	#列出所有容器

docker ps -l	#显示最近的容器

安装portainer

docker管理平台

docker run -d -p 19000:9000 --name=portainer \
--restart=always --privileged=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/portainer/data:/data \
portainer/portainer-ce:latest

安装busybox

busybox其实是一个小型的 unix 环境,完整的发行版包含近 400 个最常用的命令。因为一般的容器的linux命令不全,所以常将它来做linux基础版本,做一些测试使用

  • 安装
docker run -it --name my-busybox --restart=always -d busybox:latest
  • 使用
    进入my-busybox容器的shell,注意这里不能使用/bin/bash,只能用sh,也就是/bin/sh的缩写
docker exec -it my-busybox sh

安装nginx

数据卷采用bind mounts模式

docker run -itd --name nginx -p 80:80 \
-v ~/dockerdatas/nginx/www:/usr/share/nginx/html -v ~/dockerdatas/nginx/conf/conf.d:/etc/nginx/conf.d \
--privileged=true --restart=always nginx:latest

安装redis

–privileged=true //给容器内root权限
–restart=always //随docker自启动
–requirepass “123456” //redis设置密码为123456
–appendonly yes //表示开启持久化

数据存宿主机模式:

通过配置文件启动,可以在宿主机修改配置文件

docker run -itd -p 6379:6379 --name=redis --privileged=true --restart=always \
-v ~/dockerdata/redis/redis.conf:/etc/redis/redis.conf \
-v ~/dockerdata/redis/data:/data \
-e LANG=C.UTF-8 redis:latest redis-server /etc/redis/redis.conf

数据存数据卷模式

在运行容器时,带上密码

docker run -itd  -p 6379:6379/tcp --name=redis --privileged=true --restart always \
-v redis-data:/data \
-v redis-conf:/etc/redis redis:latest -e LANG=C.UTF-8 \
--appendonly yes --requirepass "123456"

安装rabbitmq

方式一:外网不能访问的安装
户和密码都是通过默认的guest访问,这种只能在局域网内访问,远程不能被访问,并手动启动rabbitmq_management

# 启动一个容器,没有镜像就去拉取
docker run -itd -p 15672:15672 -p 5672:5672 --name=rabbitmq \
--restart=always --privileged=true \
-v ~/dockerdatas/rabbitmq-data:/var/lib/rabbitmq \
rabbitmq:latest

能在浏览器上访问需要启动插件

docker exec -it 容器id /bin/bssh

rabbitmq-plugins enable rabbitmq_management

服务随服务器自启动

docker container update --restart=always [容器id]

方式二:基于指定用户名密码的安装
通过环境变量添加用户和密码,并基于rabbitmq-management镜像启动,不需要去手动再启动浏览器插件

# 镜像不存在就自动拉取
docker run -itd -p 15672:15672 -p 5672:5672 --name=rabbitmq \
--restart=always --privileged=true \
-v ~/dockerdatas/rabbitmq-data:/var/lib/rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=Admin123 \
rabbitmq:3-management

给远程访问的用户名授权

# 进入容器内
docker exec -it [容器id] /bin/bash

# 添加用户名:admin,密码:Admin123,上面已经指定了,这步省略
# rabbitmqctl add_user admin Admin123

# 给admin设置管理员角色
rabbitmqctl set_user_tags admin administrator

# 给admin用户设置所有权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

安装mysql

# "\"之后不能有空格,不然就会报错
docker run -itd --name=mysql-3306 -p 3306:3306 \
-v mysql-config:/etc/mysql/conf.d -v mysql-log:/logs -v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="CxfC3Q7wTY" -e LANG=C.UTF-8 \
--privileged=true --restart=always mysql:latest

安装mongodb

docker run -it --name=mongo \
-v mongo-data:/data/db -v mongo-config:/data/configdb \
--restart=always --privileged=true -p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD="123456" \
-d mongo:latest --auth

修改密码

  • 方法一:

由于密码都是在数据库中了,所以先把现有容器删除,然后建立一个不带–auth 的临时容器来作为数据容器,再从新连接上 mongodb

1.删除现有容器,保留数据卷

docker stop 现有容器id && docker rm 现有容器id

2.再建立一个免登陆的容器,数据卷一定要之前创建的数据卷,因为之前的密码都是存在数据库中去了,数据库文件在数据卷中的

docker run -it --name=mongo-27019 \
-v mongo-data27019:/data/db -v mongo-config27019:/data/configdb \
--restart=always --privileged=true -p 27019:27017 \
-d mongo:latest

3.修改密码

db.changeUserPassword('用户名','新密码');

4.再把免登陆的容器删除,再重新创建新容器,带上–auth 参数

docker stop 免登陆容器id && docker rm 免登陆容器id

docker run -it --name=mongo-27019 \
-v mongo-data27019:/data/db -v mongo-config27019:/data/configdb \
--restart=always --privileged=true -p 27019:27017 \
-d mongo:latest --auth
  • 方法二:

基于mongodb6.0系列,使用的是mongosh,低版本使用mongo

# 进入容器的命令行
docker exec -it [mongo容器的名字或id] bash

# 进入bin目录
cd /usr/bin

# 连接mongodb,低版本是mongo
mongosh -u 用户名 -p 密码 --authenticationDatabase admin

# 切换到admin数据库
use admin

# 创建超级用户,在admin数据库中,我们需要创建一个具有管理员权限的超级用户。可以使用以下命令:
db.createUser({
    user: "admin",
    pwd: "密码",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

# 修改密码,完成超级用户的创建后,我们可以使用以下命令修改MongoDB的密码:
db.updateUser("admin", {pwd: "newpassword"})

# 退出
exit

# 最后一步,重启,我们需要重启MongoDB容器以应用密码修改。可以使用以下命令:
docker restart mongo

安装elasticsearch+kibana工具

使用镜像7.x系列,安装kibana之前,先安装elasticsearch

# 下载ES镜像,这里选择7.11.2版本,elasticsearch:7.11.2
docker pull elasticsearch:7.11.2

# 下载kibana镜像,版本和ES要一致
docker pull kibana:7.11.2

创建网络,方便ES7和kibana7进行连接
docker network create --subnet=172.18.0.0.0/16 [网络名]

docker network create --subnet=172.18.0.0/16 elastic

先启动ES7的容器,再启动kibana容器不然会报错

  • 创建一个名字为ES7容器,以后台模式启动一个容器,绑定容器的web端口9200,服务端口9300,并且将其内存设置为1G,采用单点模式
docker run -d --name ES7 --net elastic --ip=172.18.0.2 \
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" -e "discovery.type=single-node" \
-p 9200:9200 -p 9300:9300 -d elasticsearch:7.11.2
  • 创建一个名字为kibana7的容器,以后台模式启动一个容器,绑定容器的端口为5601,网络组和ES7容器一样并连接ES7来进行启动
docker run -p 5601:5601 --name kibana7 --net elastic -e "elasticsearch_url=http://172.18.0.2:9200" -d kibana:7.11.2 

#这个时候去访问
http://127.0.0.1:5601/会出现连接失败的错误

# 那么进入kibana7容器终端,修改配置,修改成如图2所示
docker exec -it kibana7 /bin/bash	#以/bin/bash的方式进入kiban7,去执行命令

vi /opt/kibana/config/kibana.yml

# 修改完成后,重启kibana容器
docker restart cda1f1c347ba

在这里插入图片描述

  • 安装logstash
docker pull docker.elastic.co/logstash/logstash:7.11.2

docker run -it -d --name logstash --net elastic -p 5044:5044 docker.elastic.co/logstash/logstash:7.11.2
  • 安装ES的管理工具elastic head

在启动elastich-Head的时候,如果elasticsearch设置了网络,那么它也要加入网络中去

docker pull mobz/elasticsearch-head:5

docker run -d -p 9100:9100 --name ES7hd --link 2b741f5a8ba8:ES7hd --net elastic  docker.io/mobz/elasticsearch-head:5
  • 对ES7容器的开始|停止|重启

docker [选项] 容器名|容器id

docker start dce25ddcc2d0

docker stop dce25ddcc2d0

docker restart nginx:latest

docker restart dce25ddcc2d0 #重启容器id为38f26a0d9394的服务
docker stats mongo	#查看状态
  • 从容器中拷贝文件到宿主机

在docker中如果因为配置修改错误引起服务启动不了,那么需要拷贝到宿主机,

# 将docker中把ES的配置拷贝到宿主机
docker cp ES7:/usr/share/elasticsearch/config/elasticsearch.yml ~/dockerdata/

# 在宿主机修改完,cp回docker
docker cp ~/dockerdata/elasticsearch.yml ES7:/usr/share/elasticsearch/config/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值