一、Docker搭建
1.Docker安装
yum包更新到最新
sudo yum update
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker ce为社区版本
sudo yum install docker-ce
安装后查看docker版本
docker -v
2.设置ustc的镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
编辑该文件
vi /etc/docker/daemon.json
注意: 我下载了docker之后,在etc下没有找到docker这个目录,所以先在etc下进行创建
在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
2.Docker常用命令
docker的启动与停止(systemctl命令是系统服务管理器指令)
systemctl start docker #启动docker
systemctl stop docker #停止dokcer
systemctl restart docker #重启docker
systemctl status docker #查看docker状态
systemctl enable docker #开机自启动docker
docker info #docker概要信息
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
#删除所有镜像
- 容器相关命令
```bash
docker ps #查看正在运行的容器
docker ps –a #查看所有容器
docker ps –l #查看最后一次运行的容器
docker ps -f status=exited #查看停止运行的容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
# -i:表示运行容器
# -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
# --name :为创建的容器命名。
# -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
# -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
# -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
# -v: 文件目录挂载 -v参数后边为 宿主机目录:容器目录
exit #退出当前容器
docker exec -it 容器名称 (或者容器ID) /bin/bash #登陆守护式容器
docker stop 容器名称(或者容器ID) #停止容器
docker start 容器名称(或者容器ID) #启动容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录 #docker文件复制
docker cp 容器名称:容器目录 需要拷贝的文件或目录 #docker文件复制
docker inspect container_name| grep IPAddress #查看容器的ip container_name 为容器名称或IP
3.迁移与备份
- 相关命令
docker commit mynginx mynginx_i #将容器保存为镜像
docker save -o mynginx.tar mynginx_i #将镜像保存为tar文件
docker load -i mynginx.tar #将tar文件恢复为镜像
4.Dockerfile构建
创建文件Dockerfile vi Dockerfile
#依赖镜像名称和tag 定义了使用哪个基础镜像启动构建流程
FROM centos:7
#指定镜像创建者信息
MAINTAINER PAN
#设置工作目录
WORKDIR /usr
#是Dockerfile的核心部分(可以写多条)
RUN mkdir /usr/local/java
#ADD 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
执行命令构建镜像
docker build -t='jdk1.8' . #文件末尾有个空格再有个点
5.Docker私有仓库
拉取私有仓库镜像
docker pull registry
启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
修改daemon.json
vi /etc/docker/daemon.json
# 添加一下内容
{"insecure-registries":["192.168.184.141:5000"]}
重启docker 服务
systemctl restart docker #重启docker 所有的容器都会停止运行
docker start registry #运行容器
镜像上传至私有仓库
docker tag jdk1.8 192.168.184.141:5000/jdk1.8 #tag 镜像名称 私服地址/名称
docker push 192.168.184.141:5000/jdk1.8
二、nginx搭建(docker方式)
1.nginx安装
拉取镜像
docker pull nginx
启动nginx容器
docker run -di --name=mynginx -p 80:80 nginx
bash: vi: command not found
apt-get update
apt-get install vim
二、mysql搭建(docker方式)
1.mysql安装
启动mysql
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; ```