Docker入门
什么是Docker?
- Docker就是一种虚拟化的技术
- 可以通过Docker快速的下载使用第三方技术,方便搭建环境
- Securely build,share and run any application,anywhere
为什么选择Docker?
-
更高效利用系统资源
- 不需要硬件虚拟及运行完整操作系统
-
更快速的启动时间
-
一致的运行环境
-
持续交付和部署
-
更轻松的迁移


Docker组件
-
C/S架构

-
镜像与容器
- 镜像是构建Docker的基石,用户基于镜像运行自己的容器
- 镜像是容器的模板
- 镜像是容器的类
- 主要是构建和打包
- 容器是基于镜像启动的
- 容器是镜像的实例
- 主要是启动和执行
- 注册中心
- 用来保存用户构建的镜像
- 公共:DockerHub(类似github)
- 私有
- 用来保存用户构建的镜像
- 镜像是构建Docker的基石,用户基于镜像运行自己的容器
安装
-
建议在ubuntu中安装
-
yum update yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce docker -v # 查看版本号 -
设置ustc镜像
mkdri -p /etc/docker vim /etc/docker/daemon.json # daemon.json中编辑 { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }
Docker启动与停止
- systemctl start docker:启动
- systemctl stop docker:停止
- systemctl status docker:查看docker状态
- docker info:查看docker对应的信息
- docker --help:查看操作文档
- systemctl restart docker:重启
- systemctl enable docker:开启启动docker
常用命令
-
镜像
- docker images:查看镜像
- docker search 镜像名:在网络上搜索镜像
- docker pull 镜像名:版本号:拉取(下载)镜像,不加版本号下载的是最新版本
- docker rmi 镜像ID:删除镜像
- docker rmi `docker images -q`删除所有镜像
-
容器
-
docker ps:查看运行的容器
- docker ps -a:查看所有容器
-
docker run:创建容器
-
-i:运行容器
-
-t:容器启动后进入其命令行,即分配一个为容器
-
--name:为创建的容器命名
-
-v:标识目录映射(挂载)关系(宿主机目录:容器目录)
# 将宿主机的目录和容器中的目录相互映射 mkdir -p /usr/local/mydata docker run -div /usr/loacl/mydata:/usr/local/mydata --name=mycentos3 centos:7 -
-d:创建一个守护式容器在后台运行(不会自动登陆容器)
-
-p:端口映射(宿主机端口:容器端口)
-
-e:设置容器的环境变量
docker run -it --name=mycentos centOs:7 /bin/bash exit # 退出容器
-
-
docker exec:执行容器
# 登陆后台运行的容器 docker exec -it mycentos2 /bin/bash -
docker stop 容器ID:停止容器
-
docker start 容器ID:启动容器
-
docker cp 文件名 容器ID:容器的目录:将文件从宿主机拷贝到容器中
- docker cp 容器ID:容器的文件 宿主机路径:将文件从容器拷贝到宿主机中
-
docker inspect 容器名:查看容器中的运行的数据
- docker inspect 容器名 --format="{{.字段名}}"
-
docker rm 容器ID:删除容器(必须先停止了再删)
-
部署
-
MySQL
# 下载镜像 docker pull mysql:5.7 # 创建容器,并将宿主机的3306端口和容器的端口映射 docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 -
Nginx
docker pull nginx docker run -di --name=nginx -p 80:80 nginx # 将容器中的配置目录拷贝到宿主机 docker cp nginx:/etc/nginx /usr/local/mydata/nginx/ # 挂载 docker stop nginx docker rm nginx docker run -di --name=nginx -p 80:80 -v /usr/local/mydata/conf/:/etc/nginx nginx -
Redis
docker pull redis docker run -di --name=redis -p 6379:6379 redis -
RabbitMQ
docker pull rabbitmq:3.7.12 docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:3.7.12 docker exec -it rabbitmq /bin/bash #启动rabbitmq的UI插件 rabbitmq-plugins enable rabbitmq_management -
Elasticsearch
docker pull elasticsearch:7.5.0 # 修改虚拟内存大小 sysctl -w vm.max_map_count=262144 # 创建容器 docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single.node" -e "cluser.name=elasticsearch" -v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.5.0 # 登陆启动容器 docker exec -it elasticsearch /bin/bash # 安装IK中文分词器 elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-id/releases/download/v7.5.0/elasticsearch-analysis.ik.7.5.0.zip # 重启 exit docker restart elasticsearch -
Zookeeper
docker pull zookeeper:3.4.13 docker run -di --name=zookeeper -p 2181:2181 zookeeper:3.4.13
迁移与备份
- docker commit 容器名 镜像名:将容器打包成为镜像
- docker save -o 镜像名.tar 镜像名:镜像打包(备份)
- docker load -i 镜像名.tar:加载镜像(还原)
Dockerfile
-
由一系列命令和参数构成的脚本,应用于基础镜像并最终创建一个新的镜像
- 对开发:提供完全一致的开发环境
- 对测试:直接拿开发构建的镜像开始工作
- 对运维:实现应用的无缝移植
-
常用命令
命令 作用 FROM image_name:tag 定义使用哪个基础镜像启动构建流程 MAINTAINER username 声明镜像的创建者 ENV key value 设置环境变量(可以写多条) RUN command 是Dockerfile核心部分(可以写多条) ADD source_dir/file dest_dir/file 将宿主机的文件位置到容器内,若是压缩文件,会自动解压 COPY source_dir/file dest_dir/file 和ADD相似,但是不能自动解压 WORKDIR path_dir 设置工作目录 -
例子
mkdir -p /usr/local/dockerjdk8 mv jdk.8u202.linus.x64.tar.gz /usr/local/dockerjdk8/ vim Dockerfile FROM centos:7 MAINTAINER xxx WORKDIR /usr RUN mkdir /usr/local/java ADD jdk.8u202.linus.x64.tar.gz /usr/local/java ENV JAVA_HOME /usr/local/java1.8.0_202 ENV PATH $JAVA_HOME/BIN:$PATH # 执行当前路径下的Dockerfile,进行构建 docker build -t='jdk1.8' .
Docker私有仓库
-
搭建与配置
- docker pull registry:拉取私有仓库的镜像
- docer run -di --name=registry -p 5000:5000 registry:启动私有仓库容器
- 修改/etc/docker/daemon.json(设置信任)
{"insecure-registres":["192.168.10.101.:5000"]}- systemctl restart docker:重启docker服务
- docker start registry
-
上传
- 打标签:docker tag jdk1.8 192.168.10.101:5000/jdk1.8
- 上传:docker push 192.168.10.101:5000/jdk1.8

浙公网安备 33010602011771号