概念理解:
(1)VMware: 虚拟完整的计算机硬件;虚拟底层操作系统资源.
(2)Docker: 充分利用系统硬件和宿主机系统的底层资源;只虚拟很少的东西.
(3)镜像:虚拟机的静态文件;虚拟机镜像文件可以任意复制、分发.
(4)容器:从镜像运行启动的虚拟机.
docker手册
官网:https://vuepress.mirror.docke...
centos7安装docker
下载离线安装包:
https://download.csdn.net/dow...
安装包下完要放到/root目录下
切换到docker-install目录进行安装
安装指令: cd -ivh *.rpm
yum在线安装docker
官方安装手册:https://docs.docker.com/insta...
卸载旧版的操作:
sudo yum remove docker-ce \
docker-ce-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装一组工具:
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置yum仓库地址:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum缓存:
sudo yum makecache fast
安装最新版docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
启动docker系统服务
启动 docker:
sudo systemctl start docker
设置docker开机启动:
sudo systemctl enable docker
镜像加速
由于国内网络问题,需要配置加速器来加速。
修改配置文件: /etc/docker/daemon.json
下面的指令直接生成文件daemon.json
cat <
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
查看镜像:docker images
从镜像运行启动容器:(1)-i 能与启动的容器进行交互;
(2)-t 启动终端.
docker run -it tomcat
(3)-d 后台运行:docker run -d tomcat
(4) 删除镜像(如果有容器存在):docker rmi hello-world (hello-worle是容器名称)
(5)-f 参数强制删除: docker rmi -f hello-world
离线安装的导入指令:docker load -i tomcat...image.gz
容器命令
(1)运行启动容器:docker run -d --name tomcat1 tomcat (tomcat1容器名称)
(2)容器列表,列出运行状态的容器:docker ps
列出运行所有的容器,包括退出的容器:docker ps -a
(3)查看镜像设置的默认运行命令:docker history tomcat
(4)启动镜像时,执行指定的命令,而不执行默认命令:
docker run -it tomcat ls
docker run -it tomcat pwd
docker run -it tomcat ps
docker run -it tomcat top
(5)启动和暂停容器:
docker stop tomcat1
docker start tomcat1
docker restart tomcat1
清理所有停止的容器:docker container prune
(6)进入容器,在容器内运行指定的命令:
docker exec -it tomcat tomcat1 touch f1.txt
docker exec -it tomcat1 ls
......
(7)--rm 容器停止时,可以被自动删除
docker run \
-d \
--name tomcat2 \
--rm \
tomcat
(8)停止容器时,容器会被自动删除
docker stop tomcat2 (容器名称)
(9)--restart=always 总是自动重新启动容器,服务器重启,或docker系统服务重启,容器会随系统一起重新启动
docker run \
-d \
--name tomcat2 \
--restart=alwatys \
tomcat
目录挂载
docker run \
-d \
--name t1 \
-v /usr/app:/opt/app \
tomcat
查看容器描述:
docker inspect t1
进入容器,在容器中创建文件
docker exec -it t1 bash
cd /opt/app
echo 5555555 > f1.txt
查看文件:
ls
cat f1.txt
删除 t1容器,/usr/app/f1.txt不会删除
docker rm -f t1
创建数据卷
docker volume create my-vol (名称)
查看数据卷:
/var/lib/docker/volumes/my-vol/_data
docker volume ls
docker inspect my-vol
启动容器,把my-vol挂载到容器的 /opt/app
docker run \
-d \
--name t2 \
-v my-vol:/opt/app \
tomcat
进入容器生成文件
docker exec -it t2 touch /opt/app/f2.txt
查看宿主机目录下的文件
cd /var/lib/docker/volumes/my-vol/_data
ls
准备宿主机文件 /opt/web/index.html
mkdir /opt/web
cat << EOF >/opt/web/index.html
Hello docker!!!
EOF
EOF
(1)-v 目录挂载
(2)-p 端口映射,-p宿主机端口:容器端口
docker run \
-d \
--name t1 \
-v /opt/web:/usr/local/tomcat/webapps/ROOT \
-p 8080:8080 \
tomcat
测试访问地址:
http:192.168.64.150:8080
虚拟机网络互联
(1)创建虚拟网络
docker network create my-net
(2)查看网络
docker network ls
docker inspect my-net
(3)查看在宿主机上创建的虚拟网卡
ifconfig
(4)启动两个tomcat 容器,连接到my-net网络
docker run -d --name app1 --net my-net tomcat
docker run -d --name app2 --net my-net tomcat
(5)查看容器获得ip
docker inspect app1
docker inspect app2
(6)从宿主机ping .2 和 .3 (.表示当前目录下)
ping 172.18.0.2
ping 172.18.0.3
(7)从app1 ping 从宿主机和 app2
docker exer -it app1 ping 172.18.0.1
docker exec -it app1 ping 172.18.0.3
(8)在容器中互相连接,可以用容器名,不需要写具体ip
docker exec -it app1 ping app2
Dockerfile 构建镜像
理解:类似于空电脑装机,一步一步安装配置自己的应用运行环境
构建tomcat 镜像执行流程:
(1).从空的操作系统开始
(2).复制jdk和tomcat
(3).配置jdk环境变量
(4).设置镜像的默认启动命令
把 /opt/web 文件夹挂载 /usr/tomcat/webapps/ROOT
docker run \
-d \
--name web \
--restart=always \
-p 80:8080 \
-v /opt/web:/usr/tomcat/webapps/ROOT \
tomcat:7
访问测试的地址:http://192.168.64.150