常用命令:
删除镜像: 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