本文已参与「新人创作礼」活动,一起开启掘金创作之路。
centos下docker安装
安装依赖设置yum仓库
安装依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2
设置仓库:
yum-config-manager --add-repo download.docker.com/linux/cento…
安装docker
yum install docker-ce docker-ce-cli containerd.io
启动并加入开机启动
systemctl start docker
systemctl enable docker
验证是否安装成功
docker version
docker run hello-world
docker运行nginx
我们打开网易蜂巢镜像中心 c.163yun.com/hub#/m/home…
搜索nginx,可以看到有两个nginx,他们的名字和头上和图标都不一样,一个是鲸鱼,一个是两个球。
带有鲸鱼的镜像表示这个镜像是从官网的镜像中心复制过来的。这个镜像与docker的镜像是一摸一样的。我们使用此镜像。
点进去,会有下载地址,复制里面的地址,然后拉取镜像。
复制到系统中运行。
运行完后可以查看镜像状态
在前台运行容器命令如下,输入后容器就会运行,按ctrl+c可以终止容器的运行。
在后台运行容器:
docker run -d hub.c.163.com/library/nginx
查看运行的容器:
docker ps
我们可以通过如下命令进入容器内部:
docker exec -it 02963d2002b bash
-i保证我们的输入有效,即使在没有detach的情况下也能运行。
-t表示将分配给我们一个伪终端。我们将在伪终端输入我们的内容。
后面跟着的是容器的id,即我们上面用ps查询出来的id,这个id可以少写几位,它会自动识别。
可输入如下命令了解更多:
docker exec --help
可输入如下命令了解更多:
docker exec --help
输入命令后发现我们前面的标识也变了,相当于进入了一个新的电脑。
可以查询一下nginx在什么位置
which nginx
打开ps查看一下当前运行的进程。我这里提示没有ps命令。我从网上查了一下发现是因为当前系统没有安装这个命令,然后我安装了一下。从命令可以看出,这个nginx容器附带的系统应该是ubuntu不是centos。
查找nginx的位置
打开ps查看一下当前运行的进程。我这里提示没有ps命令。我从网上查了一下发现是因为当前系统没有安装这个命令,然后我安装了一下。从命令可以看出,这个nginx容器附带的系统应该是ubuntu不是centos。
安装ps命令:
apt-get update
apt-get install procps
利用ps命令查看进程,可以发现nginx已经在运行了。
ps -ef
输入 exit即可退出返回原来的系统。
实际访问端口
刚才我们在运行nginx镜像的时候并没有指定端口映射,所以我们这里停掉nginx容器。
docker stop containerId
- -p(小写)是开放一个容器的端口到主机上
在后台运行,开放主机8080端口映射到容器的80端口上。
docker run -d -p 8080:80 hub.c.163.com/library/nginx
查看主机8080端口是否开启
netstat -na |grep 8080
是开启的那么访问 主机ip:8080 即可访问到nginx。
-P(大写)是开放容器所有的端口到主机上一个随机的端口。
docker run -d -P hub.c.163.com/library/nginx
可以看到随机给我的端口是49153
docker部署java web应用
制作自己的镜像
1.从网易的镜像中心找一个tomcat的镜像
docker pull hub.c.163.com/library/tomcat:latest
因为tomat镜像肯定有jdk,所以我们就不用单独再装jdk了。
2.编写dockerfile
我们需要建立一个dockerfile告诉docker需要做什么,这里我建立了Dockerfile,并将我们的web文件放到了和它同一个目录下。
通过工具将jpress.war拷贝到centos中
首先你是需要把war包放入到centos系统中,将一个jpress-web-newest.war的项目放入centos系统的主目录,这个通过ssh工具就可以放到centos中。从centos中将jpress-web-newest.war移动到docker下tomcat镜像启动的容器中。