一、目的
通过运行nginx可以充分理解运行镜像原理,以及镜像内部虚拟网络端口和服务器端口的桥接关系。同时,使用java容器,编译java文件,并且运行java程序。
二、docker运行nginx镜像实例
1.nginx简介
ngnix为持久运行的容器,本文实现在后台运行该镜像,同时进入容器内部,查看容器内部细节。
2.拉取nginx镜像
(1)进入dokcer官网
(2)搜索nginx,点击官方发布版本
(3)点击选择对应版本,并且copy拉取镜像命令
(4)Linux中运行命令
docker pull nginx
(5)查看结果
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
koa-demo latest 66521e4fda54 10 days ago 676 MB
docker.io/tomcat latest dd6ff929584a 2 weeks ago 463 MB
docker.io/nginx latest 881bd08c0b08 2 weeks ago 109 MB
3.运行nginx镜像
(1)运行
docker run -d docker.io/nginx
返回
[root@hadoop02 ~]# docker run -d docker.io/nginx
be5a1904e20d1f08ad036474b40325535e25fb24c3d23603f6eee77fa46f442a
(2)进入容器内部的命令为
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
实例
[root@hadoop02 ~]# docker exec -it be5a bash
root@be5a1904e20d:/#
(3)退出exit
root@be5a1904e20d:/# exit
exit
(4)关闭容器
docker stop be5a1
4.Nginx外网访问配置
(1)使用桥接模式使容器和外网端口连接
docker run -d -p 8000:80 docker.io/nginx
-d:表示后台运行
-p:端口设置,8000为本机端口,80为Nginx容器端口
docker.io/nginx:容器名。
运行结果
[root@hadoop02 ~]# docker run -d -p 8000:80 docker.io/nginx
053630a74f056e3207d5f01681e8216702c22b13ffac5d16ac1ef03bfb367568
(2)查看
[root@hadoop02 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16c71c9da802 docker.io/nginx "nginx -g 'daemon ..." 56 seconds ago Up 55 seconds 0.0.0.0:8888->80/tcp sleepy_stallman
(3)访问Ip:8000
三、步骤
1. 拉取java镜像
[root@docker-node1 java]# docker pull java
2. 在宿主机上编译文件,
因为java容器没有vi编译器,编译很不方便。
[root@docker-node1 java]# cd /opt/datas/java
[root@docker-node1 java]# vi HelloDocker.java
填写
public class HelloDocker {
public static void main(String[] args) {
System.out.println("Hello Docker world!");
}
}
3. 开启java容器,将HelloDocker.java文件所在目录映射到java容器中
[root@docker-node1 ~]# docker run -v /opt/datas/java:/opt/ -it d23bdf5b1b1b bash
4. 编译HelloDocker.java为可执行文件HelloDocker.class
root@9ad31c4c1220:/opt# javac HelloDocker.java
root@9ad31c4c1220:/opt# ls
HelloDocker.class HelloDocker.java
5. 执行class文件
root@9ad31c4c1220:/opt# java HelloDocker
Hello Docker world!