1掌握Docker的安装
1 安装docker
(1)yum 包更新到最新
yum update
(2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装docker【docker-ce: 社区版,免费; docker-ee:企业版,收费】
yum install docker-ce -y
(5)安装后查看docker版本
docker -v
2 设置ustc镜像源:
# 编辑该文件:
mkdir -p /etc/docker
vi /etc/docker/daemon.json
# 在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
# 配置多个如下:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"registry-mirrors": ["https://0wrdwnn6.mirror.aliyuncs.com"]
}
3 Docker的启动与停止
systemctl start docker 启动docker:
systemctl stop docker 停止docker:
systemctl restart docker 重启docker
systemctl status docker 查看docker状态
systemctl enable docker 开机启动
docker info 查看docker概要信息
docker --help 查看docker帮助文档
4 Docker镜像相关的命令
docker images 查看镜像
docker search 镜像名称 从网络中查找需要的镜像
docker pull 镜像名称 拉取镜像就是从中央仓库中下载镜像到本地
例如: #如果不指定版本号,下载最新版本
docker pull centos
docker pull centos:latest
删除镜像
docker rmi 镜像ID或者镜像名称
docker rmi `docker images -q` 删除所有镜像(谨慎操作)
2 Docker 容器操作命令
1.创建容器命令:
docker run 【参数】 镜像名称:标签 /bin/bash
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录:后者是映射到容器上的目录),
可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,
创建后就会自动进去容器)。
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD:密码 是root用户的登陆密码
-p:表示端口映射,(前者是宿主机端口:后者是容器内的映射端口。)可以使用多个-p做多个端口映射
1)交互式方式创建容器(==创建以后就马上进入到容器内部了,容器运行==)
docker run -it --name=自定义容器名称 镜像名称:标签id /bin/bash
这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态
退出当前容器 容器马上停止
exit
2)守护式方式创建容器:(守护式容器是一直运行的,退出容器都是exit,退出只是退出终端,它还是在后台运行)
docker run -di --name=自定义容器名称 镜像名称:标签id /bin/bash
例如
2、查看容器
docker ps -l 查看最后一次运行的容器
docker ps 查看运行容器
docker ps -a 查看所有容器
3.进入容器
docker exec -it 容器名称 (或者容器ID) /bin/bash
4 启动与停止容器
#开启 自动启动容器
docker update --restart=always 容器名称(或者容器ID)
#停止容器:
docker stop 容器名称(或者容器ID)
# 启动容器:
docker start 容器名称(或者容器ID)
#重启容器
docker restart 容器名称(或者容器ID)
#启动全部容器
docker start $(docker ps -aq)
#停用全部运行中的容器:
docker stop $(docker ps -q)
5. 删除容器
1.删除容器的时候,一定要先执行停止容器命令
# 删除指定的容器:
docker rm 容器名称或(容器ID)
强制删除
docker rm -f 容器名称或(容器ID)
# 比如
> docker stop mynginx2
> docker rm mynginx2
2.删除全部容器:
docker rm $(docker ps -aq)
3.一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
6 文件拷贝
注意细节:容器停止状态也可以进行文件的拷贝,可以拷进去,也可以拷出来
#1 将文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝的文件或目录 容器名称:容器目录
> docker cp hello.txt mynginx:/usr/local
#2 也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
> docker cp mynginx:/usr/local/hello.txt hello.txt
7. 目录(文件)挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,
这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器 添加-v参数 后边为 宿主机目录:容器目录
如:docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
查看容器的IP
docker inspect [容器名或者容器ID]
> docker inspect tomcat
> docker inspect nginx
8.Docker容器的备份与迁移
1、先把容器变成镜像:(主要的作用就是配置好的一些容器,可以得到复用,就不需要重新再次配置了)
docker commit 容器名称 自定义镜像的名称
docker commit mynginx mynginx_i 容器保存为镜像
2、导出镜像(备份): docker save -o 镜像保存的目录/镜像名称.tar 上一步保存的自定义镜像的名称
docker save -o mynginx.tar mynginx_i 注意是保存在当前执行命令的宿主机上的目录中
3、导入镜像(恢复): docker load -i 镜像保存的目录/镜像名称.tar
docker load -i mynginx.tar
9. Dockerfile构建镜像
使用脚本创建镜像
步骤:
(1)创建目录
mkdir –p /usr/local/dockerjdk8
下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录
(3)创建文件Dockerfile
vi Dockerfile
#把一下内容考进去
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#设置容器的工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
#将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
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 PATH $JAVA_HOME/bin:$PATH
(4)执行命令构建镜像
docker build -t='My-Jdk1.8' .
注意后边的空格和点,不要省略
(5)查看镜像是否建立完成
docker images
创建容器
docker run -di --name=myjdk1.8 My-Jdk1.8
10. Docker的registry私服
1、私有仓库搭建与配置
(1)拉取私有仓库镜像(此步省略)
docker pull registry
2)启动私有仓库容器
docker run -di --name=myregistry -p 5000:5000 registry
3)打开浏览器 输入地址 http://192.168.23.7:5000/v2/_catalog
看到{"repositories":[]} 表示私有仓库搭建成功并且内容为空
4)修改daemon.json 配置私服的地址
vi /etc/docker/daemon.json
#添加以下内容,保存退出。
{"insecure-registries":["192.168.23.7:5000"]}
#此步用于让 docker信任私有仓库地址
5)重启docker 服务
systemctl restart docker
2、镜像上传至私有仓库
(1)标记此镜像为私有仓库的镜像
docker tag 本地镜像名 192.168.23.7:5000/自定义镜像名1
(2)再次启动私服容器
docker start registry
3)上传标记的镜像
docker push 192.168.23.7:5000/自定义镜像名1
(4)把已经下载的本地镜像删了,此时就可以使用私服下载镜像了
之前 docker pull 镜像名
docker pull 192.168.23.7:5000/自定义镜像名1
3 使用Docker创建容器
进入容器内部: docker exec -it 容器名称或者id /bin/bash
1) 安装Tomcat容器
1 docker pull tomcat:7-jre7
2 docker run -di --name=mytomcat -p 8080:8080 tomcat:7-jre7
# 查看日志
3 docker logs -f mytomcat :查询所有日志
4 docker logs -f --tail=30 mytomcat : 查询最后三十行日志
2.)安装Nginx容器
1 docker pull nginx
2 docker run -di --name=mynginx -p 80:80 nginx
# 查看日志
3 docker logs -f 容器名称或者id
3.)安装Redis容器
1 docker pull redis
2 docker run -di --name=myredis -p 6379:6379 redis
3 redis-cli.exe -h 192.168.13.111 -p 6379
# 查看日志
4 docker logs -f myredis
4 )Rabbitmq容器
1)下载RabbitMQ镜像
docker pull rabbitmq:management
2)创建RabbitMQ容器
docker run -di --name=myrabbitmq -p 15671:15671 -p 15672:15672 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 25672:25672 rabbitmq:management
======================================
创建容器,rabbitmq需要有映射以下端口: 5671 5672 4369 15671 15672 25672
15672:(if management plugin is enabled)
15671:management监听端口
5672、5671 :(AMQP 0-9-1 without and with TLS)
4369 : epmd 代表 Erlang 端口映射守护进程
25672: (Erlang distribution)
======================================
--name:指定容器名称
-p:将mq端口号映射到本地
# 查看日志
docker logs -f myrabbit
http://192.168.23.7:15672 访问rabbit控制台
5 )安装 elasticsearch
1 docker pull elasticsearch:6.7.1
2 docker run --name=myelasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.7.1
3 然后访问 [http://192.168.189.141:9200
配置远程访问
1 docker exec -it elasticsearch容器ID /bin/bash
2 ls
# 进入到config目录
3 cd config
# vi ES配置文件elasticsearch.yml加入2个参数,并重启
# (没有vi apt-get update 然后 apt-get install -y vim)
4 vi elasticsearch.yml
#添加一下内容进去
http.cors.enabled: true
http.cors.allow-origin: "*"
# 重启容器
5 docker restart 容器名/ID
# 查看启动日记
6 > docker logs 容器ID/名称
启动 mobz/elasticsearch-head:5
7 docker pull mobz/elasticsearch-head:5
8 docker run -di --name='eshead' -p 9100:9100 mobz/elasticsearch-head:5
9 然后打开浏览器: 192.168.189.141:9100 填入ES地址