docker 简单快速开始

  • 1.在Linux系统中安装docker引擎
  • 2.启动docker引擎
  • 3.快速发布我们的应用
  • 4.docker的简单操作
  • 1.拉取镜像
  • 2.删除镜像
  • 3.删除容器
  • 4..查看镜像
  • 5.查看所有容器
  • 6.删除所有镜像
  • 7.删除所有容器
  • 8.容器的启停操作
  • 5.Mysql服务器搭建
  • 1.拉取mysql镜像
  • 2.启动mysql镜像
  • 3.进入mysql容器内查看配置是否成功
  • 6.Redis服务器搭建
  • 1.首先需要我们拉取redis镜像
  • 2.创建redis数据卷目录
  • 3. 启动redis镜像


1.在Linux系统中安装docker引擎

docker 常驻启动 docker启动时间_容器

在centos中这样子安装,其他版本的Linux可以参考官网

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
这里面的网址最好修改成阿里云的镜像网址,这样的话速度会比较快一点
docker阿里云镜像网址:  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.启动docker引擎

在启动docker容器之前我们可以给docker配置一个下载镜像的阿里云或者网易的网址,也可以不配(但是下载镜像速度会慢一点)

  • 配置docker镜像地址
  • 创建docker目录
mkdir -p /etc/docker
  • 修改/etc/docker目录中的damen.json文件
vim daemon.json

输入: {"registry-mirrors":["http://hub-mirror.c.163.com"]}

docker 常驻启动 docker启动时间_docker_02

这里的国内加速网址是网易的,如果用阿里云的话还要登录,太麻烦了,所以就选择使用网易的.

配置完成docker的国内加速网址后,启动docker容器; 如果已经启动那么重启docker容器

启动docker容器

systemctl start docker

重启docker容器

systemctl restart docker

3.快速发布我们的应用

  1. 首先需要我们一个可以正确运行的jar包(这里基于java语言)
    这里需要注意jdk的版本,这里javac用什么版本编译,然后到我们编写Dockerfile文件的时候基础镜像openjdk就需要使用相应的版本
  2. 将打包好的jar包传输到Linux中
  3. 编写DockerFile文件
FROM openjdk:17-alpine3.14		# 这里注意版本需要和jar包编译的javac版本一致
ENV workdir=/root/springcloud/eureka-server			#设置一个变量
COPY . ${workdir}		#将当前文件夹的jar包复制到workdir目录下
WORKDIR ${workdir}		#进入这个jar包里面的文件夹
EXPOSE 8761		#对外暴露的端口号,没什么用的,给人看的;实际上的暴露端口在启动镜像的时候指定
CMD ["java","-jar","复制到workdir目录下的文件名"]
  1. 进入存放DockerFile文件的所在目录,执行构建镜像操作
docker build -t <Reposity>:<tag> .
  • : 自定义镜像名称和版本号
  • 这里面的"."代表的是当前文件夹,也就是存放Dockerfile的文件夹,主要目的是为了找到Dockerfile文件

注意:这里面的jar包和Dockerfile文件需要放在同一个目录,这样可以避免麻烦

docker 常驻启动 docker启动时间_redis_03

构建镜像成功:

docker 常驻启动 docker启动时间_容器_04

  1. 启动我们自己构建的镜像,这里需要注意如果jar中有什么重要的文件(比如日志)我们最好使用数据卷将数据备份.
docker run --name myspring3 -dp 8080:8080 myspring:3.0
  • -d: 后台启动
  • -p:内部映射对外暴露的端口号

docker 常驻启动 docker启动时间_运维_05

  1. 查看自己的容器是否上线成功
docker ps

docker 常驻启动 docker启动时间_容器_06

  1. 访问自己的java程序,自己的代码怎么写的就怎样访问进行了.

docker 常驻启动 docker启动时间_容器_07

4.docker的简单操作

1.拉取镜像

docker pull 镜像名称:tag
  • 注意:这里如果没有tag默认是latest

2.删除镜像

docker rmi -f 镜像名称:tag|image Id
  • -f : 表示强制删除镜像,也就是这个镜像在容器中是上线状态的也强制删除
  • 注意:这里如果没有tag默认是latest
  • rmi 表示的英文单词: remove image

3.删除容器

docker rm -f 容器名称|容器id
  • -f : 表示强制删除容器,就是up状态下的容器也直接强制删除

4…查看镜像

docker images

注意:这里面有很多参数,这里就不一一说明,可以通过docker images --help指令来查看帮助文档

5.查看所有容器

docker ps -a

6.删除所有镜像

docker rmi -f $(docker images -aq)

7.删除所有容器

docker rm -f $(docker ps -aq)

8.容器的启停操作

开启容器: docker start 容器名称|容器id
停止容器: docker stop 容器名称|容器id

5.Mysql服务器搭建

1.拉取mysql镜像

docker pull mysql:5.7

2.启动mysql镜像

docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/log:/var/log/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-dp 3306:3306 \
mysql:5.7


# 这里面指定了三个数据卷
-v /root/mysql/log:/var/log/mysql		存储数据库中的日志
-v /root/mysql/data:/var/lib/mysql		存储数据库中的数据
-v /root/mysql/conf:/etc/mysql/conf.d		存储配置文件
  • 注意/root/mysql/conf:/etc/mysql/conf.d , 我们需要在/root/mysql/conf目录下创建my.cnf
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

这样可以解决我们的中文数据插入的问题.

3.进入mysql容器内查看配置是否成功

docker exec -it mysql /bin/bash

docker 常驻启动 docker启动时间_docker 常驻启动_08

进入mysql服务输入:

show variables like 'character%';

docker 常驻启动 docker启动时间_redis_09

docker 常驻启动 docker启动时间_docker_10

这里可以通过官网来查看帮助文档

以上:mysql的生产安装就完成了,MySQL集群搭建自行百度,此处只做简单使用

6.Redis服务器搭建

1.首先需要我们拉取redis镜像

docker pull redis:7.0

2.创建redis数据卷目录

注意 : 这里面的redis.conf文件我们可以在redis中去复制过来 ; 就是说我们可以先随便启动一个redis镜像然后进到容器里面复制redis.conf文件中的内容 ;

  • 我们可以在任意目录下创建redis.conf文件 , 此处创建文件目录为/root/redis/redis.cof
  • 修改redis.conf文件中的内容
  • 解除IP绑定
  • 将 bind 行注释掉,以解除 Redis 对访问者 IP 的绑定。

docker 常驻启动 docker启动时间_docker 常驻启动_11

  • 关闭保护模式
  • 关闭保护模式,否则只能本机访问自己

docker 常驻启动 docker启动时间_docker 常驻启动_12

  • 关闭守护模式
  • 关闭守护模式对于 Redis 容器安装来说非常重要。由于 docker 本身就是以分离模式运行 的,如果 Redis 再以该模式运行,则 Redis 无法启动。

docker 常驻启动 docker启动时间_redis_13

  • 指定持久化目录
  • 这里要指定 RDB 或 AOF 的持久化目录为/data,这样无论是哪种持久化文件,均会保存 到该目录。后面会指定容器中的/data 目录为数据卷挂载点目录

3. 启动redis镜像

docker run --name myredis \
-v /root/redis/redis.conf:/etc/redis/redis.conf \
-v /root/redis/data:/data \
-dp 6379:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf

# 这里我们是已有配置文件来启动redis服务的
  • 这里指定了两个数据卷,其中一个是文件,一个是目录:  -v /root/redis/redis.conf:/etc/redis/redis.conf  -v /root/redis/data:/data
  1. 启动redis镜像
docker run --name myredis \
-v /root/redis/redis.conf:/etc/redis/redis.conf \
-v /root/redis/data:/data \
-dp 6379:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf

# 这里我们是已有配置文件来启动redis服务的
  • 这里指定了两个数据卷,其中一个是文件,一个是目录:
  • -v /root/redis/redis.conf:/etc/redis/redis.conf
  • -v /root/redis/data:/data