文章目录

  • 五、Docker
  • 1. docker简介
  • 2. 镜像操作
  • 2.1 在仓库中查找镜像
  • 2.2 从仓库中拉取镜像(默认为最新版)
  • 2.3 查看本地镜像
  • 2.4 从仓库中拉取指定镜像
  • 2.5 删除本地镜像
  • 3. 容器操作
  • 1、搜索镜像
  • 2、拉取镜像
  • 3、根据镜像启动容器
  • 4、查看运行中的容器
  • 5、 停止运行中的容器
  • 6、查看所有的容器
  • 7、启动容器
  • 8、删除一个容器
  • 9、启动一个做了端口映射的tomcat
  • 10、一个镜像启动多个tomcat容器
  • 11、查看容器的日志
  • 4. 使用docker安装mysql
  • 5. 安装mysql全过程


五、Docker

1. docker简介

  1. docker是一个开源的应用容器引擎;是一个轻量级容器技术;
    Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
    运行中的这个镜像称为容器,容器启动是非常快速的。
  2. 基本概念:
    docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
    docker客户端(Client):连接docker主机进行操作;
    docker仓库(Registry):用来保存各种打包好的软件镜像;
    docker镜像(Images):软件打包好的镜像;放在docker仓库中;
    docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
  3. 使用Docker的步骤:
    1、安装Docker
    关于CentOS 7安装docker,访问我的另一个博客:centos 7安装docker 2、去Docker仓库找到这个软件对应的镜像;
    3、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
    4、对容器的启动停止就是对软件的启动停止;

2. 镜像操作

操作

命令

说明

检索

docker search 关键字 eg:docker search redis

我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。

拉取

docker pull 镜像名:tag

:tag是可选的,tag表示标签,多为软件的版本,默认是latest

列表

docker images

查看所有本地镜像

删除

docker rmi image-id

删除指定的本地镜像

docker镜像官网:https://hub.docker.com/(类似于maven的中央仓库)

2.1 在仓库中查找镜像

idea右键maven没有运行_idea右键maven没有运行

2.2 从仓库中拉取镜像(默认为最新版)

idea右键maven没有运行_tomcat_02


关于拉取镜像速度太慢的问题,访问我的另一个博客配置阿里云镜像加速器

2.3 查看本地镜像

idea右键maven没有运行_idea右键maven没有运行_03

2.4 从仓库中拉取指定镜像

镜像名称:tags

tags在网关可以看到:https://hub.docker.com/_/mysql?tab=tags

idea右键maven没有运行_mysql_04


idea右键maven没有运行_docker_05


idea右键maven没有运行_mysql_06

2.5 删除本地镜像

idea右键maven没有运行_mysql_07


idea右键maven没有运行_mysql_08


idea右键maven没有运行_tomcat_09

3. 容器操作

软件镜像(QQ安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的QQ);

idea右键maven没有运行_docker_10


更多命令参看:https://docs.docker.com/engine/reference/commandline/docker/

可以参考每一个镜像的文档

步骤:

1、搜索镜像
docker search tomcat

idea右键maven没有运行_idea右键maven没有运行_11

2、拉取镜像
docker pull tomcat

idea右键maven没有运行_idea右键maven没有运行_12

3、根据镜像启动容器
docker run --name mytomcat -d tomcat:latest

idea右键maven没有运行_idea右键maven没有运行_13

4、查看运行中的容器
docker ps

idea右键maven没有运行_idea右键maven没有运行_14

5、 停止运行中的容器
docker stop  容器的id

idea右键maven没有运行_mysql_15

6、查看所有的容器
docker ps -a

idea右键maven没有运行_mysql_16

7、启动容器
docker start 容器id

idea右键maven没有运行_tomcat_17

8、删除一个容器
docker rm 容器id

idea右键maven没有运行_idea右键maven没有运行_18

9、启动一个做了端口映射的tomcat
docker run -d -p 80:8080 tomcat
-d:后台运行
-p: 将主机的端口映射到容器的一个端口    主机端口:容器内部的端口

关于报错404的问题,请访问我的另一个博客:404解决方法

10、一个镜像启动多个tomcat容器

前面我们已经启动了一个tomcat容器,映射主机端口为80
这里再启动一个tomcat容器,映射主机端口为8888
这样一个tomcat镜像就启动了两个tomcat容器

为了演示方便,这里先将防火墙关闭,如果不关闭防火墙的话,要先利用防火墙开启主机的特定窗口,然后再启动tomcat,因为不想再开启多余端口,因此直接关闭比防火墙,演示使用一个tomcat镜像启动多个tomcat容器:

idea右键maven没有运行_mysql_19


idea右键maven没有运行_idea右键maven没有运行_20

11、查看容器的日志
docker logs container-name/container-id

idea右键maven没有运行_mysql_21

4. 使用docker安装mysql

idea右键maven没有运行_idea右键maven没有运行_22


idea右键maven没有运行_docker_23


idea右键maven没有运行_docker_24


idea右键maven没有运行_idea右键maven没有运行_25


idea右键maven没有运行_idea右键maven没有运行_26


idea右键maven没有运行_idea右键maven没有运行_27


先开启防火墙,安装成功后再关闭防火墙,即可

idea右键maven没有运行_tomcat_28


idea右键maven没有运行_mysql_29


问题:

  1. 最新版的mysql会报错2058,解决方法见我的另一个博客:
    docker安装最新版mysql报错2058解决方法
  2. 刚才是关闭防火墙,如果想开启防火墙,并开放一个3306端口,可以这样做:
  3. idea右键maven没有运行_mysql_30

  4. 其他高级操作:
    把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
    改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)
docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

指定mysql的一些配置参数:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

5. 安装mysql全过程

[root@192 ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
6d28e14ab8c8: Pull complete 
dda15103a86a: Pull complete 
55971d75ab8c: Pull complete 
f1d4ea32020b: Pull complete 
61420072af91: Pull complete 
05c10e6ccca5: Pull complete 
7e0306b13322: Pull complete 
900b113c001e: Pull complete 
06cd07c30bf4: Pull complete 
df0d65aee5aa: Pull complete 
108d207bdce2: Pull complete 
b33faea3a1af: Pull complete 
Digest: sha256:230d501a0c971221aef647661b331c56587fc5bd4a465dfa132c4d2b45835163
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
[root@192 ~]# docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql
3710065dcc7ec07d3d8209554e1d5fa4aba42641767d689ab9b8158f4a54f894
[root@192 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3710065dcc7e        mysql               "docker-entrypoint.s…"   14 seconds ago      Up 11 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql01
d2ea265daf5d        tomcat              "catalina.sh run"        22 minutes ago      Up 22 minutes       0.0.0.0:80->8080/tcp                awesome_shamir
[root@192 ~]# firewall-cmd --state
running
[root@192 ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@192 ~]# firewall-cmd --list-ports
80/tcp
[root@192 ~]# systemctl restart firewalld.service
[root@192 ~]# firewall-cmd --list-ports
80/tcp 3306/tcp
[root@192 ~]# docker exec -it 0243ca08f957 /bin/bash
Error: No such container: 0243ca08f957
[root@192 ~]# docker exec -it 3710065dcc7e /bin/bash
root@3710065dcc7e:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 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> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.12 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
[root@192 ~]#