docker的安装

1.1启动 CentOS

使用docker run centos 命令 




Java Docker API 交互式_docker


我们可以看到并没有容器正在运行,并且也没有进入容器内部。




1.2交互式启动:-it

要启动容器的镜像并且进入容器内部

docker run -it --name centos01 centos   
#-i:保持容器一直运行,但命令行会挂起,通常与 -t 同时使用; 
#-t:为容器分配一个伪输入终端,通常与 -i 同时使用;
#--name:表示该镜像的名称

Java Docker API 交互式_容器_02

这样就进入到了容器的终端中 ,docker容器内部的结构跟linux的结构是一样的

Java Docker API 交互式_容器_03

退出容器

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端口的

Java Docker API 交互式_运维_04

linux的IP+8080访问的不是docker容器的8080端口,我们需要建立映射关系。

建立好之后,在访问linux的8080端口就相当于访问docker的8080端口了 


映射容器端口号:-p


默认情况下,我们无法通过 docker 所在的宿主机访问 tomcat 容器的 8080 端口,


需要将 8080 端口映射到宿主机的某一个端口上


Java Docker API 交互式_Java Docker API 交互式_05


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 默认主页面。

Java Docker API 交互式_docker_06

 然后访问linux的ip+7777

Java Docker API 交互式_tomcat_07

 显示是能访问的,因为tomcat2里面没有index文件,所以访问不到主页

使用 docker exec -it tomcat2 /bin/bash  进入容器新终端内部

Java Docker API 交互式_tomcat_08

可以看到webapps下没有文件,所以会404