Bootstrap

linux 安装docker以及docker 下安装mysql\mysql , activeMQ , rabbitMQ, redis、nacos、tomcat等

常用命令:

删除镜像: docker rm 容器id

进入镜像: docker exec -it 容器名称 bash

镜像与本地间复制文件:

1. $: docker cp mymysql:/root/.bashrc /home/soft/ 从镜像拿文件 mymysql:/root 镜像名称: 镜像下的路径

2. $: docker cp /home/soft/要复制的文件 mymysql:/root 往镜像里传文件

环境变量的配置以及安装对应的mysql , activeMQ , rabbitMQ, redis 等

一、linux 安装docker步骤:

源文件路径: https://www.cnblogs.com/lienhua34/p/4916000.html

1. 操作系统默认的apt源有docker包,我们可以直接使用下面的apt-get命令安装docker,

6.$ sudo apt-get install -y docker.io

2. 验证

。1.$  doceker -v  查看版本

3. $ sudo docker run hello-world  验证以下docker的功能。官方的Docker Hub提供了hello-world的镜 (启动不起来,原因服务器在国外,需要接着配置阿里云的地址)

4.进入到etc/docker目录下,生成对应模板阿里云镜像位置

dreamcatcher@dreamcatcher826:/etc/docker$ sudo touch daemon.json

5.  该镜像加速器是在阿里云里注册申请的 ,免费,每人一个专属的加速器

{

      "registry-mirrors": ["https://q1gezwvw.mirror.aliyuncs.com"]

}

6. 重启 docker

                $ systemctl daemon-reload

                $ service docker restart

7. 关闭 $ service docker stop

二、Docker安装mysql

1. 查找本地镜像 docker search mysql

2.安装指定版本,版本查找路径: https://hub.docker.com/_/mysql/

$ sudo docker pull mysql:5.7.31

3. T通过镜像启动mysql 执行之前需求进入到linux的保存mysql的文件路径下(如/home/soft/mysql/)

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/library/mysql:5.7.31

· 

注意:

-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。

-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。

-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。

-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

特别注意:1.以上的脚本的是根据指定的版本设置的,更新最新版本用下条命令

docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

注意:如果安装多个mysql的话,需要不同的容器名称 就是 --name 后的名称不能一样

2. 若是需要在指定目录下执行该命令,会在当前目录下生成 conf、data

、logs  目录

4. 查看正在运行的容器

$: sudo docker ps -a

dreamcatcher@dreamcatcher826:~/桌面$ sudo docker ps -a

CONTAINER ID        IMAGE            NAMES

cf4b3928ca71        mysql:latest           mysql

11affe9ffcc1        hello-world             pedantic_mahavira

5. 根据容器的id 进入到容器:

$:  sudo docker exec -it cf4b39 bash

进入到mysql:  mysql -uroot -p -h localhost

5.如果发现容器停了,is not running

则需要执行步骤4的命令,找到指定容器id: CONTAINER ID

然后执行: $ sudo docker start e686adc013b2

6.连接docker下mysql

注意:mysql 5.7 以下 与 8.0驱动不一致,客户端需要对应的驱动jar包

问题与解决方案:

1.出现:

dreamcatcher@dream826:~$ sudo systemctl status docker

[sudo] password for dreamcatcher:

Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.

● docker.service - Docker Application Container Engine

Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)

Active: failed (Result: exit-code) since Sat 2020-11-21 19:16:26 CST; 54min ago

TriggeredBy: ● docker.socket

Docs: https://docs.docker.com

Process: 47355 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)

Main PID: 47355 (code=exited, status=1/FAILURE)

11月 21 19:16:26 dream826 systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.

11月 21 19:16:26 dream826 systemd[1]: Stopped Docker Application Container Engine.

11月 21 19:16:26 dream826 systemd[1]: docker.service: Start request repeated too quickly.

11月 21 19:16:26 dream826 systemd[1]: docker.service: Failed with result 'exit-code'.

11月 21 19:16:26 dream826 systemd[1]: Failed to start Docker Application Container Engine.

原因:  在 docker 的启动入口文件中配置了 host 相关的信息, 而在 docker 的配置文件中也配置了 host 的信息, 所以发生了冲突. 解决办法, 建议将 docker 启动入口文件中的 

-H fd:// 删除, 再重启 docker 服务即可

解决方法:

方案1:

> vim /lib/systemd/system/docker.service # Ubuntu的路径; CentOS 的路径为: /usr/lib/systemd/system/docker.service#

...省略#

关键行ExecStart=/usr/bin/dockerd -H fd:

//# ...省略 -H fd:

改为

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

ExecStart=/usr/bin/dockerd

从上面可以看出, 在 docker 的启动入口文件中配置了 host 相关的信息, 而在 docker 的配置文件中也配置了 host 的信息, 所以发生了冲突. 解决办法, 建议将 docker 启动入口文件中的 -H fd:// 删除, 再重启 docker 服务即可

方案2:

在 docker 启动入口中设置

当然你也可以在启动入口配置监听的端口和本地 socket 信息

> vim /lib/systemd/system/docker.service # Ubuntu的路径; CentOS 的路径为: /usr/lib/systemd/system/docker.service

# ExecStart=/usr/bin/dockerd -H fd:

//ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

# ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

三、docker 安装activeMQ

1.搜索 ActiveMQ 镜像

sudo docker search activemq

2.获取 ActiveMQ 镜像

docker pull webcenter/activemq

3.查看本地镜像

docker image

4. docker 启动 ActiveMQ 命令

docker run -d --name activemq -p 61617:61616 -p 8162:8161 webcenter/activemq

* 61616是 activemq 的容器使用端口(映射为61617) * 8161是 web 页面管理端口(对外映射为8162)

四、docker 安装安装redis

1.安装最新版的redis,并设置映射端口6380 映射docker的6379的端口

$ docker pull redis

2.安装与启动/etc/redis

docker run -p 6380:6379 --name myredis -v $PWD/conf:/etc/redis/redis.conf -v $PWD/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass "123456"

解释:

命令解释说明:

-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。

--name myredis  指定该容器名称,查看和进行操作都比较方便。

-v 挂载目录,规则与端口映射相同。

为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。

-d redis 表示后台启动redis

redis-server /etc/redis/redis.conf  以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf

--requirepass "123456" 设置密码, 不加则没有密码

五、docker 安装安装rebbitMQ

1.拉镜像

$ docker pull rebittmq

2. 查看docker的镜像

$ : docker images

3.镜像的创建与启动

docker run -d --name rabbitmq -p 5673:5672 -p 15673:15672 -v $PWD/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin f50f482879b3

解释:

  • -d 后台运行容器;
  • --name 指定容器名;
  • -p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
  • -v 映射目录或文件;
  • --hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
  • -e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)

4.启动rabbitmq_management

docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management

rabbitmq 为镜像的应用名称

5.开启防火墙15672端口

firewall-cmd --zone=public --add-port=15672/tcp --permanent         firewall-cmd --reload

6.验证

浏览器打开web管理端:http://ip:1573

六、docker的几个简单的用法

1.从docker镜像容器中获取文件

$: docker cp mymysql:/root/.bashrc /home/soft/

2.往镜像里传文件 镜像的目录获取方式: (镜像名称:镜像里目录路或文件路径)

$: docker cp /home/soft/要复制的文件 mymysql:/root 

七、docker 安装tomcat 以及应用部署 

1.安装

docker pull tomcat docker run -p 8080:8080 --name mytomcat tomcat:latest # 提取镜像,生成容器,并命名容器为:mytomcat

2.安装jdk

将jdk安装到镜像

docker cp jdk-8u271-linux-x64.tar.gz mytomcat:/root

进入镜像

docker exec -it mytomcat bash

2.解压jdk 并配置环境变量

tar -zxvf jdk-8u271-linux-x64.tar.gz

3.安装 vi

apt-get update

apt-get install vim

4.进入 根目录 cd 配置环境变量

cd

vi .bashrc

5. 添加jdk的环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_271/

export PATH=$JAVA_HOME/bin:$PATH

注意:是冒号“:”

7. 环境配置生效

source .bashrc

8.验证jdk是否生效

java -version

八、 docker 安装nacos服务:

准备

docker run \

--name nacos -d \

-p 8848:8848 \

--privileged=true \

--restart=always \

-e JVM_XMS=256m \

-e JVM_XMX=256m \

-e MODE=standalone \

-e PREFER_HOST_MODE=hostname \

-v /mydata/nacos/logs:/home/nacos/logs \

-v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \

nacos/nacos-server

;