Docker系列-第八篇Docker常用安装

一、总体步骤

1.搜索镜像

2.拉取镜像

3.查看镜像

4.启动镜像

5.停止容器

6.移除容器

二、安装Tomcat

2.1 docker push方式安装tomcat

https://hub.docker.com/_/tomcat docker hub上每个镜像怎么使用,都有对应的说明,这个说明对于每个镜像的安装和使用都很有帮助

2.1.1.docker hub上面查找tomcat镜像

2.1.2.从docker hub上拉取tomcat镜像到本地
2.1.3.docker images查看是否有拉取到的tomcat
2.1.4.使用tomcat镜像创建容器(也叫运行镜像)
  • docker run -it -p 8080:8080 tomcat

-p 主机端口:docker容器端口

  • -P 随机分配端口

[[email protected] ~]# docker run -P  -d --name tomcat7 tomcat:7.0.96
6e33b8cadd102f890a6ade67ee70165a637b338d7684daa948d4f0c4eb6b753e
[[email protected] ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
6e33b8cadd10        tomcat:7.0.96       "catalina.sh run"   10 seconds ago      Up 7 seconds        0.0.0.0:32768->8080/tcp   tomcat7

映射到宿主机上的端口是32768

  • i:交互
  • t:终端

2.2通过Dockerfile方式安装

《Docker系列-第六篇DockerFile解析》已经写了自定义tomcat镜像

三、安装MySQL

3.1docker pull 方式安装MySQL

1.docker hub上面查找MySQL镜像
[[email protected] ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   8723                [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   3053                [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   645                                     [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   63
centurylink/mysql                 Image containing mysql. Optimized to be link…   61                                      [OK]
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   54
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                                      [OK]
bitnami/mysql                     Bitnami MySQL Docker Image                      36                                      [OK]
tutum/mysql                       Base docker image to run a MySQL database se…   34
schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   28                                      [OK]
prom/mysqld-exporter                                                              23                                      [OK]
linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   22
centos/mysql-56-centos7           MySQL 5.6 SQL database server                   16
circleci/mysql                    MySQL is a widely used, open-source relation…   15
mysql/mysql-router                MySQL Router provides transparent routing be…   13
arey/mysql-client                 Run a MySQL client from a docker container      11                                      [OK]
imega/mysql-client                Size: 36 MB, alpine:3.5, Mysql client: 10.1.…   8                                       [OK]
openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6
yloeffler/mysql-backup            This image runs mysqldump to backup data usi…   6                                       [OK]
fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   4                                       [OK]
ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                                       [OK]
genschsa/mysql-employees          MySQL Employee Sample Database                  2                                       [OK]
jelastic/mysql                    An image of the MySQL database server mainta…   1
monasca/mysql-init                A minimal decoupled init container for mysql    0
widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   0                                       [OK]
2.从docker hub上(阿里云加速器)拉取MySQL镜像到本地标签为5.6
 docker pull mysql:5.6
3.使用MySQL5.6镜像创建容器(也叫运行镜像)===开启MySQL服务实例
docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
  • --name 容器名
  • -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
  • -d 后台运行容器,并返回容器ID
  • -p 设置对外映射对端.如果不设置,客户端工具可能无法连接,因为没有映射端口

    赋予远程连接权限

    GRANT ALL PRIVILEGES ON . TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;
    flush privileges;

4.进入容器进行操作
#进入容器
docker exec -it some-mysql /bin/bash

#登录mysql
mysql -u root -p
###然后可以进行自己想要的mysql操作了

mysql 配置是存放在 /etc/mysql目录下的

5.用自定义的MySQL配置文件

MySQL的默认配置可以在/etc/mysql/my.cnf中找到,该目录中还包含其他文件,例如/etc/mysql/conf.d或/etc/mysql/mysql.conf.d。 请检查mysql映像本身中的相关文件和目录,以获取更多详细信息。

如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则可以像如下方式启动mysql容器(请注意,此命令仅使用自定义配置文件的目录路径):

docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1234656 -d mysql:5.6

这将启动一个新的容器some-mysql,其中MySQL实例使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf中的组合启动设置,其中后者的设置优先 。

6.增加配置不通过cnf文件增加方式

可以将许多配置选项作为标志传递给mysqld。 可以灵活地自定义容器,而无需cnf文件。 例如,如果要更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4),则运行以下命令:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

如果想查看可用选项的完整列表,可运行如下:

docker run -it --rm mysql:5.6 --verbose --help
7.环境变量

启动mysql映像时,可以通过在docker run命令行上传递一个或多个环境变量来调整MySQL实例的配置。 请注意,如果您使用已经包含数据库的数据目录启动容器,则以下任何变量都将无效:容器启动时,任何现有数据库都将保持不变。

MYSQL_ROOT_PASSWORD

该变量是必需变量,它指定将为MySQL根超级用户帐户设置的密码

MYSQL_DATABASE

此变量是可选的,允许您指定在映像启动时要创建的数据库的名称。 如果提供了用户/密码,则将授予该用户对该数据库的超级用户访问权限(对应于GRANT ALL)。

MYSQL_USER, MYSQL_PASSWORD

这些变量是可选的,与创建新用户和设置该用户的密码一起使用。 将为该用户授予MYSQL_DATABASE变量指定的数据库的超级用户权限。 这两个变量都是创建用户所必需的。

请注意,无需使用此机制来创建根超级用户,该用户默认情况下是使用MYSQL_ROOT_PASSWORD变量指定的密码创建的。

MYSQL_ALLOW_EMPTY_PASSWORD

这是一个可选变量。 设置为yes允许容器以root用户的空白密码启动。 注意:除非您真的知道自己在做什么,否则不建议将此变量设置为yes,因为这将使您的MySQL实例完全不受保护,从而使任何人都可以获得完全的超级用户访问权限。

MYSQL_RANDOM_ROOT_PASSWORD

这是一个可选变量。 设置为yes可以为root用户生成一个随机的初始密码(使用pwgen)。 生成的root密码将被打印到stdout(GENROTED ROOT PASSWORD:.....)。

MYSQL_ONETIME_PASSWORD

初始化完成后,将root用户(不是MYSQL_USER中指定的用户!)设置为过期用户,从而在首次登录时强制更改密码。 注意:仅MySQL 5.6+支持此功能。 在MySQL 5.5上使用此选项将在初始化期间引发适当的错误。

8.Docker秘密

作为通过环境变量传递敏感信息的替代方法,可以将_FILE附加到先前列出的环境变量中,从而使初始化脚本从容器中存在的文件中加载那些变量的值。 特别是,它可以用来从存储在/ run / secrets / 中的Docker机密加载密码。

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:5.6

当前仅支持如下变量:

MYSQL_ROOT_PASSWORD, MYSQL_ROOT_HOST, MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD.

9.数据存储位置

重要说明:有几种方法可以存储在Docker容器中运行的应用程序使用的数据。鼓励对mysql熟悉的用户使用。

让Docker通过使用自己的内部卷管理将数据库文件写入主机系统上的磁盘,从而管理数据库数据的存储。这是默认设置,对用户来说是简单且相当透明的。不利之处在于,对于直接在主机系统(即外部容器)上运行的工具和应用程序而言,文件可能难以定位。

在主机系统上(容器外部)创建一个数据目录,并将其安装到从容器内部可见的目录中。这会将数据库文件放置在主机系统上的已知位置,并使主机系统上的工具和应用程序易于访问文件。缺点是用户需要确保目录存在,例如主机系统上的目录权限和其他安全机制已正确设置。

? 第二种方式:

  • step1 在宿主机上创建合适的目录 如 /my/own/datadir
  • step2 启动mysql容器
docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.6

/var/lib/mysql 这是msyql容器默认的存储数据的文件目录

10.数据库数据备份

大多数普通工具都可以使用,尽管在某些情况下它们的使用可能会有些麻烦,以确保它们可以访问mysqld服务器。 确保这一点的一种简单方法是使用docker exec并从同一容器运行该工具,类似于以下内容:

备份所有数据库:

docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /tmp/all-databases.sql

备份指定的数据库:

docker exec some-mysql sh -c 'exec mysqldump  -uroot -p"$MYSQL_ROOT_PASSWORD" meeting' > /tmp/all-databases1.sql

meeting 为指定的数据库

11.数据库数据恢复

用于还原数据。 您可以将docker exec命令与-i标志一起使用,类似于以下内容:

docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /tmp/all-databases1.sql

三、安装Redis

3.1docker pull 方式安装Redis

3..1.1docker hub上查找redis镜像
3.1.2拉取指定标签镜像
docker pull redis:4.0

等待下载完成后,在本地查找标签为4.0的redis镜像

[[email protected] data]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               4.0                 e187e861db44        2 weeks ago         89.2MB
3.1.3启动Redis实例
 docker run -p 6379:6379  --name meeting-redis -d redis:4.0
3.1.4启动并开启持久化
 docker run -p 6379:6379  --name meeting-redis -d redis:4.0 redis-server --appendonly yes

如果启用了持久性,则数据存储在容器中的/data目录下,可以设置数据卷将文件夹映射到宿主机上

-v $PWD:/data

3.1.5通过redis-cli连接
docker exec -it 容器名/容器ID redis-cli
3.1.6用自定义的MySQL配置文件

MySQL的默认配置可以在/etc/mysql/my.cnf中找到,该文件可能包含附加目录,例如/etc/mysql/conf.d或/etc/mysql/mysql.conf.d。 请检查mysql映像本身中的相关文件和目录,以获取更多详细信息。

如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则可以像这样启动mysql容器(请注意,此命令仅使用自定义配置文件的目录路径):

 docker run -p 3306:3306 --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

这将启动一个新的容器some-mysql,其中MySQL实例使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf中的组合启动设置,其中后者的设置优先 。

3.2如果想使用自己的redis.conf

可以创建自己的Dockerfile,将redis.conf从上下文添加到/data/中,具体Dockerfile内容

FROM redis:4.0
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

另外,可以使用docker run选项沿着相同的行指定一些内容。

docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis:4.0 redis-server /usr/local/etc/redis/redis.conf

其中/myredis/conf/是包含redis.conf文件的本地目录。使用此方法意味着不需要创建Dockerfil生成镜像

微信公众号


JAVA程序猿成长之路
分享资源,记录程序猿成长点滴。专注于Java,Spring,SpringBoot,SpringCloud,分布式,微服务。

原文地址:https://www.cnblogs.com/niugang0920/p/12187051.html

时间: 2024-10-11 20:25:57

Docker系列-第八篇Docker常用安装的相关文章

Docker系列-第七篇Docker构建SpringBoot应用

1.基于Dockerfile构建SpringBoot镜像 1.1准备工作 将SpringBoot项目通过maven打成jar包 mvn clean package #使用maven打包项目 1.2使用Dockerfile构建镜像 step1 在存放jar所在目录下创建Dockerfile文件 touch Dockerfile step2 编辑Dockerfile增加以下内容 FROM java:8 MAINTAINER niugang<[email protected]> RUN mkdir

Docker系列-第四篇Docker镜像

1.镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 1.1UnionFS(联合文件系统) UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层.轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single

Docker系列-第五篇Docker容器数据卷

1.是什么 在生产环境中使用 Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作 . 容器中的管理数据主要有两种方式 : 数据卷 ( Data Volumes ) : 容器内数据直接映射到本地主机环境: 数据卷容器( Data Volume Containers ) : 使用特定容器维护数据卷. 一句话:有点类似我们Redis里面的rdb和aof文件 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的

【Docker系列教程之三】Docker容器是如何工作的

在上一篇的文章中,我给大家主要介绍了一下 Docker 环境的搭建,简单的讲解了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像.本篇我们将剖析一下 Docker 容器是如何工作的,学习好Docker容器工作的原理,我们就可以自己去管理我们的容器了. Docker架构 在上一篇文章的学习中,我们简单地讲解了Docker的基本架构.了解到了 Docker 使用的是 C/S 结构,即客户端/服务器体系结构.明白了 Docker 客户端与 Docker

Docker系列:入门篇-安装docker

Docker 提供了两个版本:社区版 (CE) 和企业版 (EE). Docker 社区版 (CE) 是开发人员和小型团队开始使用 Docker 并尝试使用基于容器的应用的理想之选,所以这里我们来说一下Docker社区版的安装 操作系统要求 64位 CentOS 这里只说明centos上的安装方法 卸载旧版本 Docker 的早期版本称为 docker 或 docker-engine.如果安装了这些版本,请卸载它们及关联的依赖资源. $ sudo yum remove docker docker

Docker 系列一(概念原理和安装)

一.概念原理 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口.—— 百度百科 之前一直有一个误区,老听人说 Docker 是一个容器,应用程序打包好镜像,然后在这个容器中运行,以此达到 "一次封装,处处运行"(Build,Ship and Run Any App,Anywhere)的目的.其实不然,Docker 只是一个应用程序引擎(

Docker系列-第六篇DockerFile解析

1.手动编写一个dockerfile文件,当然必须要符合file的规则 2.有了这个文件,直接docker build命令执行,获得一个自定义的镜像 3.run 1.是什么 Dockerfle 是一个文本格式的配置文件, 用户可以使用 Dockerfle 来快速创建自定义的镜像. Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 1.1三步骤 编写Dockerfile文件 docker build docker run 2.DockerFile构建过程解

docker系列之一:初见docker

什么是docker? docker是目前linux最流行的容器技术,Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就会生成一个虚拟容器.程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 优点:占用资源小,启动快,体积也小 docker容器与虚拟机有什么区别? 虚拟机(virtual machine)就是带环境安装的一种解决方案,本质上是一个文件夹 虚拟机运行的时候独占系统资源,因为它运行的环境是一个完整的操作系统,我们在运行之前会给虚拟机提前配置相应的物理机的

【Docker系列】认识ELK,docker安装ELK和IK分词器

1.ELK简介 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具. Elasticsearch是个开源分布式搜索引擎,提供搜集.分析.存储数据三大功能.它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据