二、docker的常用命令(持续补充img)

一、启动相关

1.设置容器开机启动

在我们使用镜像run一个容器的时候,希望这个容器随着docker的启动而启动(我的情况是虚拟机经常开关机,所以docker肯定会经常关闭再开启,所以我run的容器需要跟随docker的启动起来,不想手动一个个启动)

1)设置docker开机自启

systemctl enable docker

2)初次启动容器设置自启

添加如下参数

--restart=always 

举例

docker run  --restart=always  mysql:8.0.30

3)启动容器
如果某个容器停了,可以再次启动

docker restart 容器id

如果run的时候没有加这个参数,后期想让他开机启动,请跳转下方修改相关。


二、查询相关

1.查询所有容器(包括停止的)

docker ps -a

三、修改相关

1.指定容器开机自启动

docker update --restart=always  容器id

四、宿主机与容器交互相关

1.将指定容器内的文件复制到宿主机当前目录下

docker container cp nginx:/etc/nginx .

注意命令最后是空格跟上一个点
在这里插入图片描述

五、安装中间件相关

1.mysql

①创建mysql实例并运行

docker run -d -p 3306:3306 --privileged=true \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456  \
--name mysql mysql:5.7

参数说明
–name:表示为当前容器起一个名字
-p3306:3306:将容器的3306端口映射到主机的3306端口
-v/mydata/mysql/conf:/etc/mysgl:将配置文件夹挂载到主机
-v/mydata/mysql/log:/var/log/mysgl:将日志文件夹挂载到主机
-v/mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
-d 表示mysql以后台方式运行

②配置mysql的配置文件

cd /mydata/mysql/conf/
vim my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

重启mysql

docker restart mysql

2.安装redis

①下载redis镜像

docker pull redis:5.0.5

②在宿主中创建目录

mkdir -p /app/redis

③宿主机下初始化redis.conf文件

touch /app/redis/redis.conf 

④运行一个redis实例

docker run --restart=always  -p 6379:6379 --name redis --privileged=true \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
-d redis:5.0.5 redis-server /etc/redis/redis.conf

–restart=always:表示每次docker重启后会自启动,其余参数参考上述mysql相关配置
⑤进入redis检查

docker exec -it redis /bin/bash
redis-cli

简单测试
在这里插入图片描述
⑥设置持久化策略(虚拟机可选)
这样数据就不是只在内存中了,会持久化到磁盘,防止每次重新启动虚拟机,缓存都没有了。
去宿主机修改对应配置
退出到宿主机

exit
exit

编辑redis.conf文件

vim /app/redis/redis.conf
appendonly yes

重启redis

docker restart redis

测试redis数据是不是会持久化到磁盘

前提是已经修改完配置文件并且已经重启redis实例,先进入redis进行随便一个数据的插入,然后退出到宿主机,重启redis,再次进入redis中发现数据还在则证明配置生效。

3.安装elasticsearch

1.下载es镜像

docker pull elasticsearch:7.4.2

2.在宿主机上创建目录

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
mkdir -p /mydata/elasticsearch/plugins

重新设置文件夹权限,任何用户任何组都有读写权限

chmod -R 777 /mydata/elasticsearch

3.创建elasticsearch.yml文件,并配置

echo "http.host: 0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml

4.启动一个实例

docker run --restart=always --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

-p 暴露两个端口
-e 指定一个参数
discovery.type=single-node:表示单节点运行
-Xms64m -Xmx128m:设置es内存初始内存占用64mb,最大占用128mb
-v 挂载,docker容器中的文件和宿主机对应关联上,在容器外部也就是在宿主机进行文件的修改,容器里边的es也会对应修改,不用每次都进入容器内进行操作。

5.验证是否安装成功
浏览器访问如下地址

http://你宿主机的ip地址:9200/

在这里插入图片描述

4.安装kibana

1.下载kibana镜像

docker pull kibana:7.4.2

2.运行一个实例

docker run --restart=always --name kibana \
-p 5601:5601 \
--link es容器名称(安装es时起的别名elasticsearch ) \
-e "ELASTICSEARCH_URL=http://宿主机ip地址:9200"  \
-d kibana:7.4.2

–link :同一个宿主主机上的多个docker容器之间如果需要进行通信,第一种最容易想到的方式就是使用容器自身的ip地址、宿主主机的ip+容器暴露出的端口号来通信,我们知道默认情况下docker重新run后,对应的IP地址就会改变,这样如果两个容器之间通信就会变得非常麻烦,每次都要修改通信的IP地址。这个时候 --link参数就派上大用场了,它会给要链接的容器设定一个通信的别名,即使重启后IP地址发生了改变,依然可以正常通信。
link 格式:
– link:目标容器名称:别名(别名可以不写)

3.验证是否运行成功

http://宿主机地址:5601/

如果是这个页面,先等一会再访问一下,看看是否启动成功
在这里插入图片描述
如果长时间还是这个页面,需要查询相关日志

docker logs 容器ID前三位

情况举例
在这里插入图片描述
在这里插入图片描述
启动成功页面
在这里插入图片描述

在这里插入图片描述

5.安装Nginx

1.前期准备
由于nginx要创建的配置多一些,这里先跑一个实例,把配置信息从容器中复制到宿主机。

如果没有Nginx1.10版本,docker会自动下载,这里就不docker pull了
①运行一个临时的Nginx容器

docker run -p 80:80 --name nginx -d nginx:1.10

②宿主机新建目录

mkdir /mydata/nginx
cd /mydata/nginx

③将容器内的配置文件拷贝到当前宿主机目录
cp 后跟的是容器的名称,最后是空格跟上点
格式:docker container cp 空格 容器名 冒号 容器内路径 空格 点

docker container cp nginx:/etc/nginx .

④修改宿主机文件夹名称

mv nginx conf

⑤再次创建nginx目录,并把conf整个移动到该目录下

mkdir /mydata/nginx
mv conf /mydata/nginx

⑥停止容器并删除

docker stop nginx
docker rm nginx

2.运行nginx实例

docker run --restart=always -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我柒月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值