docker
docker环境搭建
方法一:
1.数据源准备
curl -fsSL get.docker.com -o get-docker.sh
2.docker CE 下载及安装
下载:sh get-docker.sh --mirror Aliyun
刷新:systemctl daemon-reload
启动:systemctl restart docker
方法二:安装指定版本docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y --setopt=obsoletes=0 docker-ce-19.03.12-3.el7.x86_64 docker-ce-cli-19.03.12-3.el7.x86_64或者
yum install -y --setopt=obsoletes=0 docker-ce-17.03.0.ce-1.el7.centos docker-ce-selinux-17.03.0.ce-1.el7.centos
更换docker版本
1.rpm -qa | grep docker 列出包含docker字段的软件的信息
2. yum remove docker-1.13.1-53.git774336d.el7.centos.x86_64
yum remove docker-client-1.13.1-53.git774336d.el7.centos.x86_64 删除第一步中的包
3.安装其他版本的docker即可
常用命令:
查看docker版本:docker version
查看镜像: docker images
查看运行中容器: docker ps
查看所有容器: docker ps -a
docker容器生命周期管理
1.拉取镜像:docker pull nginx
2.创建容器:docker create nginx
3.启动容器:
1)查看容器id: docker ps -a
2)启动:docker start 容器id
4.登录容器:docker exec -it 容器id /bin/bash
基于操作系统内核,但用户态和文件态发生了变化
5.退出容器:exit
6.暂停容器(此时不能登录):docker pause 容器id
7.解除暂停(暂停解除后可以继续登录):docker unpause 容器id
8.停止容器:docker stop 容器id
9.强制停止容器:docker kill 容器id
10.删除容器(运行状态下不可删除):docker rm 容器id
11.强制删除容器:docker rm -f 容器id
12.直接创建一个running状态的容器:docker run -d redis(-d 表示以守护进程的方式启动)
docker run=docker pull+docker create+docker start
13.查看容器日志:docker logs 容器id
跟踪刷新容器日志: docker logs -f 容器id(类似于tail -f查看日志功能)
14.通过参数限制容器资源:docker run -d -c 4000 -m 200M --memory-swap 400M --blkio-weight 20 nginx
-c 指定cpu资源,4000是一个权重相对值,类似于权重
-m 200M 指定内存资源
--memory-swap 400M 内存200M,磁盘200M
--blkio-weight 20 指定磁盘io资源,20是一个权重相对值,不能超过1000
15.删除镜像:docker rmi 镜像tag
16.查看私有镜像仓库所有镜像:curl -X GET http://{仓库地址}/v2/_catalog
17.查看指定镜像所有标签:curl -X GET http://{仓库地址}/v2/{镜像名称}/tags/list
18.登录docker仓库:docker login -u {用户名} -p {密码}
19.镜像持久化:docker save -o 【目标文件】【源文件】 示例:docker save -o nginx.tar nginx:latest
20.加载镜像:docker load -i 【镜像持久化文件】
21:镜像重命名:
1)docker tag 【image ID】【新名称】
2)docker rmi【旧镜像】
22:查看docker日志:docker logs --since 30m 【container ID】
23:查看docker引擎的日志(而不是某个容器的日志) journalctl -u docker --no-pager
24:清除docker垃圾(删除无用的镜像,映射,容器等):
docker system/image/volume prune --force (prune:削减,裁剪)
通过dockerfile进行镜像制作与管理
1.创建Dockerfile文件:vim Dockerfile
2.构建镜像:docker build -t mytest .
-t mytest 指定标签,名称叫mytest
. 指定要执行的Dockerfile的目录
3.启动容器:docker run mytest -c date
RUN CMD ENTRYPOINT 的区别
RUN 每次都会执行
ENTRYPOINT 最后一次ENTRYPOINT会作为主命名执行
CMD 如果外面有-c就不执行,如果没有就执行,没有ENTRYPOINT 时CMD也可以执行
docker数据持久化
1.bind mounts 狩猎模式
docker run -v $PWD/data:/data -d redis:3.2 redis-server
2.Volumes 靶场模式
1)隐式创建
docker run -v /data2 -d redis:3.2 redis-server
2)显示创建
docker网络通信
docker搭建私有仓库
1.搭建仓库
docker run -it -d -p 5000:5000 -v /root/registry:/var/lib/registry --restart=always --name registry registry:latest
2.上传镜像
将其修改为:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.19.46.183:5000
3.下载镜像
docker微服务落地
1.安装rabbitmq
run -d --name myrabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
2.安装redis
docker run -d --name myredis -p 6379:6379 redis redis-server
3.安装mysql
1.docker run -d --name mymysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=imooc mysql
2.修改mysql8密码验证方式
1)登录docker 容器:docker exec -it 容器id /bin/bash
2) 登录mysql:mysql -uroot -p
3)修改密码验证方式:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '******' ;
4.运行eureka
1)打jar包并上传到root主目录
2)编写Dockerfile
FROM java:8
ADD registry-center-1.0-SNAPSHOT.jar registry-center-1.0-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","registry-center-1.0-SNAPSHOT.jar"]
3) Dockerfile构建
docker build -t myregistry .(注意最后的.表示在当前目录寻找Dockerfile)
4)启动容器
docker run -d -p 20000:20000 --name myregistry myregistry
5.运行config-server
1)修改配置文件,否则会默认docker的ip地址,是不可达的。
2)修改Dockerfile文件,把registry-center替换成config-server
3)构建镜像
docker build -t myconfig .
4)启动容器
docker run -d -p 20003:20003 -name myconfig myconfig
5)访问eureka验证
6.运行auth和user,将其注册到eureka中,步骤同config-server
7.运行gateway
8.使用navicat运行sql脚本,创建数据源
9.启动前端工程foodie-shop
1)上传foodie-shop
2)修改js/app.js,指向后端gateway
3)启动nginx,并把foodie-shop作为静态资源
docker run -d -p 8080:80 --name myfront -v /root/foodie-shop/:/usr/share/nginx/html nginx