12.docker常用安装

 

1,安装步骤梳理

  1. 搜索镜像 docker search mysql
  2. 拉取镜像  docker pull 
  3. 查看镜像  docker images 
  4. 启动镜像   docker run 
  5. 停止容器   docker stop 容器ID
  6. 移除容器  docker rm -f 容器ID

2,安装tomcat

docker hub上查找tomcat镜像  docker search tomcat

从docker hub上拉取tomcat镜像到本地  docker pull tomcat

使用docker images查看是否有拉取到tomcat

使用tomcat镜像运行镜像成为容器:

docker run -it -p 8080:8080 tomcat

1
2
3
4
-p 主机端口:容器端口
-P 随机分配端口
-i  交互
-t 终端

-P: 随机分配宿主机对外端口

1
2
[root@localhost my_war_project]# docker run -it -d -P mytomcat02:1.0
6f93d2a73e53651572c301143d46a70f1b1c46548766b9710123adb344256870

宿主机对外端口为32700

1
2
3
[root@localhost my_war_project]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f93d2a73e53 mytomcat02:1.0 "/bin/sh -c 'bin/s..." 2 minutes ago Up 2 minutes 0.0.0.0:32770->8080/tcp hardcore_lichterman

打开浏览器,访问http://192.168.168.130:32770/

3,安装mysql

docker hub上查找mysql镜像  docker search mysql

docker hub上拉取mysql镜像到本地  docker pull mysql:5.7

1
2
[root@localhost my_war_project]# docker run -d -p 3306:3306 --name mysql-5.7 -e MYSQL_ROOT_PASSWORD=123456 ae0658fdbad5
0adc13b5b8de253a6abbea96b90cb81590b96165f6c51a0851f255d514bed248
1
2
3
[root@localhost my_war_project]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0adc13b5b8de ae0658fdbad5 "docker-entrypoint..." 10 seconds ago Up 10 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-5.7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@localhost my_war_project]# docker exec -it 0adc13b5b8de /bin/bash
root@0adc13b5b8de:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.32 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

mysql>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 使用mysql5.7镜像创建容器运行存在问题

# 这是因为mysql镜像一启动中在加设置用户名和密码
# 修改成下面的命令
#  
# docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

# 发现启动起来了

# 如果是5.7的数据库不会报错
# 发现报错,这是因为docker 的mysql里面的localhost  -root 的密码是启动时设置的是123456现%-root的没有设置
# 下面是解决方法
#  
# 1, 进入mysql的docker 容器
# docker exec -it mysql /bin/bash
# 2,登陆mysql
# mysql -u root -p
# 输入密码
# 3,使用mysql数据库
# use mysql
# 4,执行修改密码的命令
# update user set password=password(123456) where host='%'
# 5,重启mysql的docker 容器
# exit退出
# exit退出mysql容器
# docker restart mysql
# 再就可以进行远程连接了哦

# 如果出现使用宿主机IP无法访问的情况 在宿主机里面执行如下命令
# 请顺序运行以下命令:

# nmcli connection modify docker0 connection.zone trusted
# systemctl stop NetworkManager.service
# firewall-cmd --permanent --zone=trusted --change-interface=docker0
# systemctl start NetworkManager.service
# nmcli connection modify docker0 connection.zone trusted
# systemctl restart docker.service
# 再重启mysql和tomcat的容器

5,相关文件地址配置 

可以在运行容器时设置:

1
docker run -p 3306:3306 --name mysql -v ${PWD}/conf:/etc/mysql/conf.d -v ${PWD}/logs:/logs -v ${PWD}/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql

但要求对应路径对应文件已存在,才能成功挂载相内容到对应位置。

1
2
[root@localhost mysql]# ls
conf data logs

命令说明:

1
2
3
4
5
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v ${PWD}/conf:/etc/mysql/conf.d:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
-v ${PWD}/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs
-v ${PWD}/data:/mysql_data:将主机当前目录下的data目录挂载到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码