目录
验证 docker 是否安装成功并在容器中执行一个测试的镜像
早早完成了任务,闲来无事,顺便把玩了一下docker。
概念
首先从概念开始讲起
此处参考于阮一峰docker http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
-
软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?
用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量。
如果某些老旧的模块与当前环境不兼容,那就麻烦了。开发者常常会说:"它在我的机器可以跑了"(It works on my machine),言下之意就是,其他机器很可能跑不了。
环境配置如此麻烦,换一台机器,就要重来一次,旷日费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。
-----------------------------------------------------接下来是docker和nginx-----------------------------------------------------------
参考为菜鸟教程centos7安装docker以及docker安装nginx
https://www.runoob.com/docker/centos-docker-install.html
https://www.runoob.com/docker/docker-install-nginx.html
安装Docker
我的服务器操作系统是centos7,因此,按照执行命令下来就是这样:
环境说明
Docker 要求 CentOS 系统的内核版本高于 3.10,这里我是root用户登录到我的服务器上
[root@VM_0_11_centos ~]# uname -r
3.10.0-957.el7.x86_64
[root@VM_0_11_centos ~]#
安装
因服务器已安装完毕,因此附上安装代码如下
确保 yum 包更新到最新。
sudo yum update
执行 Docker 安装脚本
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
启动 Docker进程
sudo systemctl start docker
验证 docker
是否安装成功并在容器中执行一个测试的镜像
$ sudo docker run hello-world
Docker安装nginx
拉取官方镜像
$ docker pull nginx
本地查看nginx镜像
[root@VM_0_11_centos ~]# docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 5a3221f0137b 3 weeks ago 126MB
[root@VM_0_11_centos ~]#
启动
$ docker run --name test -p 8000:80 -d nginx
这里解释下test可以任取,为容器名称,8000:80是指端口映射,本地的 8000 端口映射到容器内部的 80 端口。
部署
创建目录 nginx
$ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
$ docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
这里再次解释下在主目录下创建nginx文件夹,里面有三个文件夹,如图
6dd4380ba708则是自己nginx镜像ID如上面本地查看Nginx镜像中的IMAGE ID
[root@VM_0_11_centos ~]# ls
nginx
[root@VM_0_11_centos ~]# cd nginx
[root@VM_0_11_centos nginx]# ls
conf logs www
[root@VM_0_11_centos nginx]#
部署命令
$ docker run -d -p 8080:80 --name myBlog -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
这一条蛮长的,--name后面的是自定义nginx名字,我的是MyBlog,也就是我的博客,将8080端口映射为容器内80端口。
执行完成也就启动成功。只要把自己网站的文件放置www文件夹下即可,如我的网站文件目录
[root@VM_0_11_centos ~]# cd nginx/www
[root@VM_0_11_centos www]# ls
css fonts img index.html js
[root@VM_0_11_centos www]#
最后访问我的服务器IP,8080端口,即可看见我的博客挂载成功拉http://129.28.156.114:8080/
最后附带一些常备命令
Docker
docker container ls
docker容器的ID,可以通过docker container ls命令显示,如图
[root@VM_0_11_centos ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
863c547f4448 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp myBlog
dd9d1c40f541 nginx "nginx -g 'daemon of…" 2 hours ago Up About an hour 0.0.0.0:8000->80/tcp runoob-nginx-test
[root@VM_0_11_centos ~]#
这里我起了两个nginx服务,一个是8080端口的博客,一个是8000端口的nginx欢迎页面,CONTAINER ID就在最前面一列。
docker kill _containerId_
这里_containerId_是docker容器的ID,如上,强制终止docker进程
docker stop _containerId_
1.Docker 通过containerd向容器主进程发送SIGTERM信号后等待一段时间后,如果从containerd收到了容器退出消息那么容器退出成功。
2、在上一步中,如果等待超时,那么Docker将使用Docker kill 方式试图终止容器
docker ps
列出所有容器
[root@VM_0_11_centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
863c547f4448 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp myBlog
dd9d1c40f541 nginx "nginx -g 'daemon of…" 2 hours ago Up About an hour 0.0.0.0:8000->80/tcp runoob-nginx-test
[root@VM_0_11_centos ~]#
docker rm _containerID_
移除docker容器
好了,差不多结束了,吃晚饭去咯