一、Docker搭建

1.Docker安装

  • yum包更新到最新

    1. sudo yum update
  • 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

    1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置yum源为阿里云

    1. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装docker ce为社区版本

    1. sudo yum install docker-ce
  • 安装后查看docker版本

    1. docker -v

2.设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

  • 编辑该文件

    1. vi /etc/docker/daemon.json

    注意: 我下载了docker之后,在etc下没有找到docker这个目录,所以先在etc下进行创建

  • 在该文件中输入如下内容:

    1. {
    2. "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    3. }

2.Docker常用命令

  • docker的启动与停止(systemctl命令是系统服务管理器指令)

    1. systemctl start docker #启动docker
    2. systemctl stop docker #停止dokcer
    3. systemctl restart docker #重启docker
    4. systemctl status docker #查看docker状态
    5. systemctl enable docker #开机自启动docker
    6. docker info #docker概要信息
    7. docker --help #查看docker帮助文档
  • 镜像命令 ```bash docker images #查看镜像

    REPOSITORY:镜像名称

    TAG:镜像标签

    CREATED:镜像的创建日期(不是获取该镜像的日期);

    SIZE:镜像大小

    (这些镜像都是存储在Docker宿主机的/var/lib/docker目录下)

docker search 镜像名称 #搜索镜像

NAME:仓库名称

DESCRIPTION:镜像描述

STARS:用户评价,反应一个镜像的受欢迎程度

OFFICIAL:是否官方

AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

docker pull centos:7 #拉取镜像 镜像name:镜像tag

docker rmi 镜像ID #删除镜像按ID docker rmi docker images -q #删除所有镜像

  1. - 容器相关命令
  2. ```bash
  3. docker ps #查看正在运行的容器
  4. docker ps –a #查看所有容器
  5. docker ps –l #查看最后一次运行的容器
  6. docker ps -f status=exited #查看停止运行的容器
  7. docker run -it --name=容器名称 镜像名称:标签 /bin/bash
  8. # -i:表示运行容器
  9. # -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  10. # --name :为创建的容器命名。
  11. # -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  12. # -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
  13. # -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
  14. # -v: 文件目录挂载 -v参数后边为 宿主机目录:容器目录
  15. exit #退出当前容器
  16. docker exec -it 容器名称 (或者容器ID) /bin/bash #登陆守护式容器
  17. docker stop 容器名称(或者容器ID) #停止容器
  18. docker start 容器名称(或者容器ID) #启动容器
  19. docker cp 需要拷贝的文件或目录 容器名称:容器目录 #docker文件复制
  20. docker cp 容器名称:容器目录 需要拷贝的文件或目录 #docker文件复制
  21. docker inspect container_name| grep IPAddress #查看容器的ip container_name 为容器名称或IP

3.迁移与备份

  • 相关命令
    1. docker commit mynginx mynginx_i #将容器保存为镜像
    2. docker save -o mynginx.tar mynginx_i #将镜像保存为tar文件
    3. docker load -i mynginx.tar #将tar文件恢复为镜像

4.Dockerfile构建

  • 创建文件Dockerfile vi Dockerfile

    1. #依赖镜像名称和tag 定义了使用哪个基础镜像启动构建流程
    2. FROM centos:7
    3. #指定镜像创建者信息
    4. MAINTAINER PAN
    5. #设置工作目录
    6. WORKDIR /usr
    7. #是Dockerfile的核心部分(可以写多条)
    8. RUN mkdir /usr/local/java
    9. #ADD 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
    10. ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
    11. #配置java环境变量
    12. ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
    13. ENV JRE_HOME $JAVA_HOME/jre
    14. ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    15. ENV PATH $JAVA_HOME/bin:$PATH
  • 执行命令构建镜像

    1. docker build -t='jdk1.8' . #文件末尾有个空格再有个点

5.Docker私有仓库

  • 拉取私有仓库镜像

    1. docker pull registry
  • 启动私有仓库容器

    1. docker run -di --name=registry -p 5000:5000 registry
  • 修改daemon.json

    1. vi /etc/docker/daemon.json
    2. # 添加一下内容
    3. {"insecure-registries":["192.168.184.141:5000"]}
  • 重启docker 服务

    1. systemctl restart docker #重启docker 所有的容器都会停止运行
    2. docker start registry #运行容器
  • 镜像上传至私有仓库

    1. docker tag jdk1.8 192.168.184.141:5000/jdk1.8 #tag 镜像名称 私服地址/名称
    2. docker push 192.168.184.141:5000/jdk1.8

二、nginx搭建(docker方式)

1.nginx安装

  • 拉取镜像

    1. docker pull nginx
  • 启动nginx容器

    1. docker run -di --name=mynginx -p 80:80 nginx
  • bash: vi: command not found

    1. apt-get update
    2. apt-get install vim

二、mysql搭建(docker方式)

1.mysql安装

  • 启动mysql

    1. docker run --name=mymysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
  • Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 ```bash docker exec -it pinyougou_mysql /bin/bash

容器中登录mysql,查看mysql的版本

mysql -u root -p mysql> status; #—— mysql Ver 8.0.11 for Linux on x86_64 —— mysql> GRANT ALL ON . TO ‘root’@’%’; #授权 mysql> flush privileges; #刷新权限 mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER; #更改加密规则; mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; #更新root用户名密码; mysql> flush privileges; ```