2 Docker常用命令与操作

版权声明:看什么?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

猜你喜欢

转载自blog.csdn.net/qq_31323797/article/details/84875837
今日推荐