1、简介 Docker 是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
2、核心概念 docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
3、安装Docker 1)、安装linux虚拟机(或者使用阿里云服务器) 1)、VMWare、VirtualBox(安装);
2)、导入虚拟机文件;
3)、双击启动linux虚拟机;使用 root/ 123456登陆
4)、使用客户端连接linux服务器进行命令操作;
5)、设置虚拟机网络;
桥接网络===选好网卡====接入网线;
6)、设置好网络以后使用命令重启虚拟机的网络
7)、查看linux的ip地址
8)、使用客户端连接linux;
2)、在linux虚拟机上安装docker 一、配置阿里云yum源(提高docker软件下载速度): 参考连接 1、备份
1 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/ CentOS 7
1 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
1 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、生成新的缓存
1 2 3 yum clean all yum makecache yum update
二、安装docker步骤:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1、检查内核版本,必须是3.10及以上 uname -r 2、使用 root 权限登录 Centos。确保 yum 包更新到最新。 yum update 3、卸载旧版本(如果安装过旧版本的话)$ yum remove docker docker-common docker-selinux docker-engine 4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的$ yum install -y yum-utils device-mapper-persistent-data lvm2 5、设置yum源$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 6、可以查看所有仓库中所有docker版本,并选择特定版本安装$ yum list docker-ce --showduplicates | sort -r 7、安装docker$ yum install docker-ce-17.12.0.ce 8、启动docker [root@localhost ~] systemctl start docker [root@localhost ~] docker -v Docker version 1.12.6, build 3e8e77d/1.12.6 9、开机启动docker [root@localhost ~] systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. 10、停止docker systemctl stop docker
4、Docker常用命令&操作 1)、镜像操作
操作
命令
说明
检索
docker search 关键字 eg:docker search redis
我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。
拉取
docker pull 镜像名:tag
:tag是可选的,tag表示标签,多为软件的版本,默认是latest
列表
docker images
查看所有本地镜像
删除
docker rmi image-id
删除指定的本地镜像
镜像查找: https://hub.docker.com/(包含具体镜像的操作命令) docker改国内官方镜像(提升镜像pull速度): 编辑文件/etc/docker/daemon.json,没有就新建。加入以下项目
1 2 3 { "registry-mirrors" : ["https://registry.docker-cn.com" ,"http://hub-mirror.c.163.com" ] }
本身daemon.json文件已经有项目,就额外增加registry-mirrors项
重启docker daemon
1 systemctl restart docker
2)、容器操作 软件镜像(QQ安装程序)—-运行镜像—-产生一个容器(正在运行的软件,运行的QQ);
步骤:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1、搜索镜像 [root@localhost ~] docker search tomcat 2、拉取镜像 [root@localhost ~] docker pull tomcat 3、根据镜像启动容器 docker run --name mytomcat -d tomcat:latest 4、docker ps 查看运行中的容器 5、 停止运行中的容器 docker stop 容器的id 6、查看所有的容器(包括没有运行的) docker ps -a 7、启动容器 docker start 容器id 8、删除一个容器 docker rm 容器id 9、启动一个做了端口映射的tomcat [root@localhost ~]# docker run -d -p 8888:8080 tomcat -d:后台运行 -p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口 10、为了演示简单关闭了linux的防火墙 service firewalld status ;查看防火墙状态 service firewalld stop:关闭防火墙 11、查看容器的日志 docker logs container-name/container-id
更多命令参看 https://docs.docker.com/engine/reference/commandline/docker/ 可以参考每一个镜像的文档
3)、安装MySQL示例
正确的启动:做了端口映射
1 2 3 4 5 [root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad10e4bc5c6a mysql "docker-entrypoint.sh" 4 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp mysql02
几个其他的高级操作
1 2 3 4 5 6 docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD =my-secret-pw -d mysql:tag 把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面 改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql) docker run --name some-mysql -e MYSQL_ROOT_PASSWORD =my-secret-pw -d mysql:tag --character-set-server =utf8mb4 --collation-server =utf8mb4_unicode_ci 指定mysql的一些配置参数
docker安装mysql后外部无法访问,解决办法:
记得开启阿里云相应的端口号
修改权限1 2 3 4 5 6 7 8 9 10 11 12 使用bash窗口 docker exec -it mysqlDB bash 登陆mysql mysql -uroot -p123456; 修改权限> use mysql; > update user set authentication_string = password('123456' ) where user = 'root' ; > grant all privileges on *.* to 'root' @'%' identified by '123456' with grant option; > flush privileges; > exit ;
4)、安装redis
正确的启动:做了端口映射
1 2 3 4 5 6 7 8 [root@localhost ~] docker run -d -p 6381:6379 --name myredis redis:5.0.7 --requirepass "123456"# --requirepass "123456" 设置密码 # -p 6381:6379:映射容器服务的 6379 端口到宿主机的 681 端口。外部可以直接通过宿主机ip:6381 访问到 Redis 的服务 [root@localhost ~] docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dff3d4e7ef6b redis:5.0.7 "docker-entrypoint.s…" 16 minutes ago Up 16 minutes 0.0.0.0:6381->6379/tcp myredis [root@localhost ~] docker exec -it myredis bash # docker exec -it xxx bash 这个命令是表示进入容器的,xxx是服务名称也可以是容器的id
几个其他的高级操作
1 2 3 4 5 6 7 # docker run -p 6382 :6379 --name myredis -v $PWD/redis.conf :/etc/redis/redis.conf -v $PWD/data: /data -d redi s:5 .0.7 redis-server /etc/redis/redis.conf --appendonly yes 命令说明: --name myredis : 指定容器名称,这个最好加上,不然在看docker进程的时候会很尴尬。 -p 6699 :6379 : 端口映射,默认redis启动的是6379 ,至于外部端口,随便玩吧,不冲突就行。 -v $PWD/redis.conf :/etc/redis/redis.conf : 将主机中当前目录下的redis.conf 配置文件映射。 -v $PWD/data: /data -d redi s:3 .2 : 将主机中当前目录下的data挂载到容器的/data --redis-server --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置\
docker安装redis后外部无法访问,解决办法: 记得开启阿里云相应的端口号.
5)、安装Elasticsearch 参考文章:https://blog.csdn.net/qq_32101993/article/details/100021002 拉取镜像:
1 docker pull elasticsearch:tag(6.8.5)
启动:
1 2 3 4 5 [root@localhost ~] docker run -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9200:9200 -p 9300:9300 --name ES01 elasticsearch:版本号(如果是latest则不写) [root@localhost ~] docker ps# 查看是否成功 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c3f23945d1ed elasticsearch:6.8.5 "/usr/local/bin/dock…" 6 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp ES01
此时已经可以正常外部访问网址:域名:端口号
配置跨域:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 1.首先进入容器 docker exec -it ES01 /bin/bash 2.安装vim yum -y install vim* 3.编辑/config/elasticsearch.ym vim elasticsearch.yml 4.添加内容 cluster.name: "qfcwx-cluster" network.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" 5.exit 6.重启 docker restart ES01(容器id或者name)
cluster.name:自定义集群名称。
network.host:当前es节点绑定的ip地址,默认127.0.0.1,如果需要开放对外访问这个属性必须设置。
http.cors.enabled:是否支持跨域,默认为false。
http.cors.allow-origin:当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。
访问截图:
5)、安装rabbitMQ 参考文章:https://www.cnblogs.com/yufeng218/p/9452621.html 拉取镜像:选择带有mangement 的版本(包含web管理页面 )
1 docker pull rabbitmq:management
启动:
1 2 3 4 [root@localhost ~] docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin 6bd1749b8197 [root@izlnxqoeytyh4fz ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c6575d289410 6bd1749b8197 "docker-entrypoint.s…" 6 seconds ago Up 4 seconds 4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, 0.0.0.0:15673->5672/tcp rabbitmq
-v 映射目录或文件;
–hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
1 2 docker exec -it rabbitmq /bin/bash
此时已经可以正常外部访问网址:域名:端口号
访问截图: