版权声明:看什么?6,你和我,走一波! https://blog.csdn.net/qq_31323797/article/details/84875837
1 镜像操作
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 eg:docker search redis | hub.docker.com上检索镜像的详细信息,如镜像的TAG。 |
拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
1.1 检索
[root@gp6 ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relati... 7503 [OK]
mariadb MariaDB is a community-developed fork of M... 2415 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Crea... 560 [OK]
zabbix/zabbix-server-mysql Zabbix Server with MySQL database support 150 [OK]
hypriot/rpi-mysql RPi-compatible Docker Image with Mysql 102
zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 80 [OK]
......
- NAME : 名称
- DESCRIPTION : 描述
- STARS : 关注数
- OFFICIAL : 是否为官方镜像
- AUTOMATED : 是否自动构建
1.2 拉取
[root@gp6 ~]# docker pull mysql
latest: Pulling from mysql
......
默认下载标签为latest的版本
1.2.1 指定版本拉取
docker pull mysql:5.6
1.3 列表
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mysql latest 4eabe6a48367 3 weeks ago 485.5 MB
- REPOSITORY : 镜像来源
- TAG : 版本标签
- IMAGE ID : 镜像id
- CREATED : 创建时间
- VIRTUAL SIZE : 镜像大小
2 容器操作
2.1 步骤
软件镜像(eg:QQ安装包)----> 运行镜像(安装QQ)----产生一个容器(正在运行的软件,运行的QQ)
2.2 具体命令(以Tomcat为例)
2.2.1 搜索镜像
# tomcat : 镜像名称
[root@gp6 ~]# docker search tomcat
2.2.2 拉取镜像
# tomcat : 镜像名称
[root@localhost ~]# docker pull tomcat
2.2.3 根据镜像启动容器
# mytomcat : 自定义名称
# tomcat : 镜像名称
# latest : 镜像版本
[root@gp6 ~]# docker run --name mytomcat -d tomcat:latest
a7def3456d106f185818654cf85d0c0236c13f7e4bdfa63b180c3d639870c5fb
2.2.4 查看运行中的容器
[root@gp6 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7def3456d10 tomcat:latest "catalina.sh run" 15 seconds ago Up 13 seconds 8080/tcp mytomcat
2.2.5 停止运行中的容器
# a7def3456d10 : 容器id
[root@gp6 ~]# docker stop a7def3456d10
a7def3456d10
2.2.6 查看所有的容器
# a7def3456d10 : 容器id
[root@gp6 ~]# docker ps -a
2.2.7 启动容器
# a7def3456d10 : 容器id
[root@gp6 ~]# docker start a7def3456d10
a7def3456d10
2.2.8 删除一个容器
# a7def3456d10 : 容器id
[root@gp6 ~]# docker rm a7def3456d10
a7def3456d10
2.2.9 启动端口映射的tomcat
# -d:后台运行
# -p: 将主机的端口映射到容器的一个端口 主机端口(8888):容器内部的端口(8080)
# 访问: ip:8888
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
2.2.10 查看容器的日志
# 46c93fd0a543 : 容器id
[root@gp6 ~]# docker logs 46c93fd0a543
2.3 开启多个tomcat,一个镜像开启多个容器
# -d:后台运行
# -p: 将主机的端口映射到容器的一个端口 主机端口(8888):容器内部的端口(8080)
# 访问: ip:8888
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
[root@localhost ~]# docker run -d -p 8889:8080 tomcat
3 Docker安装MySQL
3.1 检索和拉取
[root@gp6 ~]# docker search mysql
[root@gp6 ~]# docker pull mysql
3.2 启动
3.2.1 启动
[root@gp6 ~]# docker run --name mysql3306 -d mysql
bb5fa052d1a97def8b0e7490c8d41a5893c898e4b51f225b2a77ef8b1f15e15d
3.2.2 查看mysql容器是否启动
# 发现MySQL容器未启动
[root@gp6 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46c93fd0a543 tomcat "catalina.sh run" 21 minutes ago Up 21 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.2.3 查看所有容器
# MySQL的状态是 Exited (1) 23 seconds ago
[root@gp6 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb5fa052d1a9 mysql "docker-entrypoint.s 26 seconds ago Exited (1) 23 seconds ago mysql3306
46c93fd0a543 tomcat "catalina.sh run" 21 minutes ago Up 21 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.2.4 查看MySQL日志,查找未启动原因
[root@gp6 ~]# docker logs bb5fa052d1a9
# 数据库没有初始化,密码未指定
error: database is uninitialized and password option is not specified
# 必须指定下面3个中的一个
# MYSQL_ROOT_PASSWORD : root用户的密码
# MYSQL_ALLOW_EMPTY_PASSWORD : 允许空密码
# MYSQL_RANDOM_ROOT_PASSWORD : 随机密码
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
3.2.5 指定密码启动
# 删除刚刚安装的MySQL
[root@gp6 ~]# docker rm bb5fa052d1a9
bb5fa052d1a9
# 指定密码启动
[root@gp6 ~]# docker run --name mysql3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
de7ab7fb702e8fcc8934e4fab5b3a86969e2770c93d28808ecf9b6a0032fb44f
# 查看正在运行的容器
[root@gp6 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de7ab7fb702e mysql "docker-entrypoint.s 8 seconds ago Up 7 seconds 3306/tcp, 33060/tcp mysql3306
46c93fd0a543 tomcat "catalina.sh run" 31 minutes ago Up 31 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.2.6 端口映射
# 停止
[root@gp6 ~]# docker stop de7ab7fb702e
de7ab7fb702e
# 删除
[root@gp6 ~]# docker rm de7ab7fb702e
de7ab7fb702e
# 启动
[root@gp6 ~]# docker run -p 3306:3306 --name mysql3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
933f531b447658e749a7da32aafb9b42e8b07c36df0038615b9b4195f973a42a
# 查看正在运行的容器
[root@gp6 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
933f531b4476 mysql "docker-entrypoint.s 41 seconds ago Up 40 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql3306
46c93fd0a543 tomcat "catalina.sh run" 35 minutes ago Up 35 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.3 客户端连接
3.3.1 连接失败
3.3.2 失败原因
- 服务端版本高
- 客户端版本低
3.3.3 解决方法
- 升级客户端
- 降级服务端
3.3.4 解决步骤
# 列表
[root@gp6 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tomcat latest 9a5cb5ecdb4e 2 weeks ago 462.7 MB
mysql latest 4eabe6a48367 3 weeks ago 485.5 MB
# 将mysql移除
[root@gp6 ~]# docker rmi 4eabe6a48367
# 下载5.6版本
[root@gp6 ~]# docker pull mysql:5.6
# 启动
[root@gp6 ~]# docker run -p 3306:3306 --name mysql3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
f2949ffb03164381f477b34130e980bc12af77e527015bf7f87d88c166a2d80c