文章目录
- 五、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简介
- docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。 - 基本概念:
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用 - 使用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 在仓库中查找镜像
2.2 从仓库中拉取镜像(默认为最新版)
关于拉取镜像速度太慢的问题,访问我的另一个博客
:配置阿里云镜像加速器
2.3 查看本地镜像
2.4 从仓库中拉取指定镜像
镜像名称:tags
tags在网关可以看到:https://hub.docker.com/_/mysql?tab=tags
2.5 删除本地镜像
3. 容器操作
软件镜像(QQ安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的QQ);
更多命令参看:https://docs.docker.com/engine/reference/commandline/docker/
可以参考每一个镜像的文档
步骤:
1、搜索镜像
docker search tomcat
2、拉取镜像
docker pull tomcat
3、根据镜像启动容器
docker run --name mytomcat -d tomcat:latest
4、查看运行中的容器
docker ps
5、 停止运行中的容器
docker stop 容器的id
6、查看所有的容器
docker ps -a
7、启动容器
docker start 容器id
8、删除一个容器
docker rm 容器id
9、启动一个做了端口映射的tomcat
docker run -d -p 80:8080 tomcat
-d:后台运行
-p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
关于报错404的问题,请访问我的另一个博客:
404解决方法
10、一个镜像启动多个tomcat容器
前面我们已经启动了一个tomcat容器,映射主机端口为80
这里再启动一个tomcat容器,映射主机端口为8888
这样一个tomcat镜像就启动了两个tomcat容器
为了演示方便,这里先将防火墙关闭,如果不关闭防火墙的话,要先利用防火墙开启主机的特定窗口,然后再启动tomcat,因为不想再开启多余端口,因此直接关闭比防火墙,演示使用一个tomcat镜像启动多个tomcat容器:
11、查看容器的日志
docker logs container-name/container-id
4. 使用docker安装mysql
先开启防火墙,安装成功后再关闭防火墙,即可
问题:
- 最新版的mysql会报错2058,解决方法见我的另一个博客:
docker安装最新版mysql报错2058解决方法 - 刚才是关闭防火墙,如果想开启防火墙,并开放一个3306端口,可以这样做:
- 其他高级操作:
把主机的/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 ~]#