docker的安装
1.1启动 CentOS
使用docker run centos 命令
我们可以看到并没有容器正在运行,并且也没有进入容器内部。
1.2交互式启动:-it
要启动容器的镜像并且进入容器内部
docker run -it --name centos01 centos
#-i:保持容器一直运行,但命令行会挂起,通常与 -t 同时使用;
#-t:为容器分配一个伪输入终端,通常与 -i 同时使用;
#--name:表示该镜像的名称
这样就进入到了容器的终端中 ,docker容器内部的结构跟linux的结构是一样的
退出容器
ctrl + p + q # 不停止退出容器
exit #容器停止退出,此时执行 docker ps -a,发现 centos 已停止
进入容器
当容器未停止时,在宿主机中可以进入到容器内部命令行
docker attach centos1
在容器外执行容器命令
在容器外部执行命令,使命令在容器内部运行,并返回结果
#确保容器是启动状态,并且当前命令行在容器外部的宿主机上
docker exec -it centos1 cat /etc/redhat-release
docker exec -it 容器 ID| 容器名称 /bin/bash
# 在容器中打开新的终端,并且可以启动新的进程
之所以叫交互式容器,正是因为允许用户在容器内交互地执行命令的容器
1.3启动守护式容器
我们以tomcat为例
默认情况下, tomcat 的启动会占用当前命令行窗口,并进入挂起状态
docker run tomcat
守护式启动: -d
意思就是说在后台运行,不要占用我前台页面
我们可以以守护进程的方式启动 tomcat 容器
docker run -d --name tomcat1 tomcat #在后台启动 tomcat,不占用命令行资源
但是现在还是访问不了docker 上的8080端口的
linux的IP+8080访问的不是docker容器的8080端口,我们需要建立映射关系。
建立好之后,在访问linux的8080端口就相当于访问docker的8080端口了
映射容器端口号:-p
默认情况下,我们无法通过 docker 所在的宿主机访问 tomcat 容器的 8080 端口,
需要将 8080 端口映射到宿主机的某一个端口上
docker run -d -p 7777:8080 --name tomcat2 tomcat
#(小写 p)将容器端口发布到主机 7777 端口
docker inspect tomcat2
#inspect 可以用于镜像,也可以用于容器,这里可以查看容器 tomcat2 的详情
ip:hostPort:containerPort
hostPort:containerPort
ip::containerPort: 主机随机分配端口映射容器的指定端口
containerPort: 主机随机分配端口映射容器的指定端口
-p: 指定端口映射,有以下四种格式
访问前面启动的 tomcat 容器:如 http://192.168.100.101:7777,发现报告 404 错误, 原因是 docker latest 版本的 tomcat 下的 webapps 中没有部署任何默认项目, 因此启动浏览器无法访问 tomcat 默认主页面。
然后访问linux的ip+7777
显示是能访问的,因为tomcat2里面没有index文件,所以访问不到主页
使用 docker exec -it tomcat2 /bin/bash 进入容器新终端内部
可以看到webapps下没有文件,所以会404