docker是一种linux容器技术。容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求。可简单理解为一种沙盒
。每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,资源需求远远低于虚拟机。 好处
能高效地构建应用。 对于运维开发来说,
能快速的交付和部署 高效的资源利用 轻松的迁移扩展“虚拟机是在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。Docker是开源的应用容器引擎,依然需要先在电脑上安装操作系统,然后安装Docker容器的管理器,才可以。虚拟机是在硬件级别进行虚拟化,而Docker是在操作系统的层面虚拟化;虚拟机是通过模拟硬件搭建操作系统”
镜像(Image) 容器(Container) 仓库(Repository) 镜像:类似虚拟机镜像
容器:容器是镜像的一个运行实例,不同的是它带有额外的可写层。容器从镜像启动的时候,docker会在镜像的最上一层创建一个可写层,镜像本身是只读的,保持不变。
仓库:仓库是集中存放镜像的地方。每个服务器上可以有多个仓库。 仓库又分为公有仓库(DockerHub、 dockerpool)和私有仓库

step1:使用yum命令进行安装
yum install -y docker
备注:-y 表示不询问 使用默认配置进行安装,等待提示 完毕!
step2:查看是否安装成功
yum list installed | grep docker
备注:命令为 查看yum安装完成文件列表 并 筛选docker安装信息 如下
step3:启动docker服务
systemctl start docker
step4:查看是否启动成功
systemctl status docker
如果没有出现 active(running)说明启动失败
解决方法,修改docker文件,具体命令:vi /etc/sysconfig/docker,在–selinux-enabled后面添加=false。如下图所示:
再次执行
systemctl start docker
systemctl status docker
Step5:查出docker版本
docker version
Step6:测试
docker run hello-world
A.打开阿里云网址https://cr.console.aliyun.com
B.使用支付宝或淘宝账号登录
C.搜索容器镜像服务
D.复制红色区域内容
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://替换你的地址.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
① docker images -q 只显示镜像id
② docker image -a 列出本地所有镜像(含中间映像层)
③ docker images --digests 显示镜像的摘要信息
④ docker images --no-trunc 显示镜像完整信息
⑤ docker search 镜像名 搜索镜像
⑥ docker pull 镜像名 下载镜像
⑦ docker rmi 镜像id 删除镜像
⑧ docker ps 列出正在运行 的 容器
⑨ docker run -d -p 8080:8080 --name mycat tomcat 创建容器运行示例
⑩ docker start 容器ID或容器名 启动容器
⑪ docker restart容器ID或容器名 重启容器
⑫ docker stop 容器ID或容器名 停止容器
⑬ docker kill 容器ID或容器名 强制停止容器
⑭ docker rm 容器ID 删除已停止的容器
A.通过docker search mysql搜索镜像
B.下载第一个镜像,通过docker pull docker.io/mysql命令
C.通过docker images查看镜像
D.创建容器运行docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=root docker.io/mysql:latest
E.进入容器命令:docker exec -it 容器id /bin/sh F.mysql -uroot -proot
G.授权用户给第三方访问 H.create user ‘java01’ identified with
mysql_native_password by ‘accp’; I.grant all privileges on . to ‘java01’;
J.使用sqlyog连接mysql
A.通过docker pull tomcat 拉取镜像
B.创建容器运行 docker run -d -p 8080:8080 --name
mytomcat tomcat:latest
C.测试访问ip:8080(记得关闭防火墙)
D.进入容器docker exec -it mytomcat bash ,在这里用到了上面提到的容器别名mytomcat
E.部署项目到tomcat docker cp demo.war mytomcat:/usr/local/tomcat/webapps
F.重启窗口 docker restart mytomcat
A.通过docker pull nginx 拉取镜像
B.创建挂载目录 mkdir -p /data/nginx/{conf,conf.d,html,log}
C.创建容器运行 docker run -it -d -p 8085:80 --name nginx2 nginx
D.进入容器docker exec -it nginx2 /bin/bash
E.从容器复制文件到宿主机 docker cp 容器id:/etc/nginx/nginx.conf 虚拟机目录
D.编辑nginx.conf配置文件加入以下内容
server{
listen 80;
server_name 192.168.10.65; #你的serverName
root /usr/share/nginx/html;
index index.html;
}
E.再次创建容器运行(把容器文件挂载到宿主机上面)
docker run
–name my_nginx
-d -p 80:80
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/log:/var/log/nginx
-v /data/nginx/html:/usr/share/nginx/html
nginx
F. 准备素材在/data/nginx/html创建一个html文件名为test.html
G.测试访问192.168.10.65:80/test…html
A.下载 docker pull rabbitmq:3-management
B.启动docker run -d --hostname> my-rabbit --name rabbit -p 15672:15672 -p 5672:5672
rabbitmq:3-management
C).访问 ip:15672
1.创建一个centos镜像
通过命令下载dockerhub上的官方镜像
docker pull centos
2.创建一个基于centos镜像的容器
通过命令docker images查看服务器上已有的镜像
docker run -dit -p 4000:8080 centos镜像名或id
创建一个基于centos镜像的容器在后台运行并将服务器的4000端口映射到容器中的8080端口
3.将jdk,tomcat的安装包和web项目上传至镜像中
docker cp /usr/local/jdk安装包 容器名:容器地址
docker cp /usr/local/tomcat安装包 容器名:容器地址
docker cp /usr/local/web项目 容器名:容器地址1
4.进入容器并操作
docker attach 容器名或id
进入容器中
安装jdk和tomcat的步骤和在linux中安装步骤一致,你可以把容器当成一个linux虚拟机, 之后启动tomcat服务
5.验证
在浏览器上输入http://服务器ip:4000,如果出现tomcat页面则成功了
6.将容器打包成镜像
docker commit -a “runoob.com” -m “my apache” 容器名称或id 打包的镜像名称:标签
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker commit -a "ganyongming" -m "mytomcat" eda39a88cdcb
(1)命令登录到阿里云的doker仓库(需要提前创建),–username为阿里云的用户名
a. docker login --username=liuzhijun1991 registry.cn-hangzhou.aliyuncs.com`
b. 输入阿里云密码
(2)为本地镜像添加tag 语法 docker tag 镜像id 仓库地址:标签
a.docker tag bc244747a754 registry.cn-hangzhou.aliyuncs.com/docker_java01/aliyun:latest
(3).push到docker仓库 语法 docker push 仓库地址:标签
docker push registry.cn-hangzhou.aliyuncs.com/docker_java01/aliyun:latest
docker pull registry.cn-hangzhou.aliyuncs.com/docker_java01/aliyun