Skip to content

yankai0219/docker

Repository files navigation

## Docker 基本操作
0. docker所有命令都需要root权限,因此通过这个加入到root组,之后所有的都不需要sudo前缀了。 
    sudo usermod -a -G root yankai
1. 根据Dockerfile构造Images
    docker build -f xxx.Dockerfile.xx -t image_name . 
2. 根据已经构造的Images建立container
    docker run -d -p 8090:80 --name instance_name img_name 
3. 查看docker中进程情况
    docker ps -a
4. 进入已经开启的container内部(不提倡)
    docker exec -it instance_name bash
5. 查看container的端口
    docker port instance_name
6. 开启和关闭某个container
    docker start web
    docker stop web
7. 查看某个container的情况
    docker inspect instance_name
8. 将某个container保存为images
    docker commit container_id image_name
9. 绑定数据卷Mount a volume on the container
   docker run -d -P --name cb -v /Users/yankai/Documents/markdown/study/docker/volume/:/tmp/ yk/centos_base sh /tmp/dead_while.sh
   其中volume目录下有个dead_while.sh文件,文件内容如下:
   #!/bin/sh
   while true;do
    echo "hello"
   done

   特别注意:如果是在Mac或Windows上使用,那么你的docker daemon只允许你到达你的OSX/Windows文件系统。也就是Docker Machine 尝试自动分享你的/Users(OSX)或C:\Users(windows)目录,因此你要使用/Users/<path>:/<container path> .. (OSX) or /c/Users/<path>:<container path .. 
10. 查看container的标准输出
   docker logs container_name
   docker logs -f container_name 类似tail -f
11. 查看container内部进程
   docker top container_name
12. 查找某个Images
   docker search sinatra
   docker pull training/sinatra
   docker run -it training/sinatra
13. 设置一个Image的tags
   docker tag image_id image_name
14. 将一个Image上推到docker hub
   docker push docker_images
15. 删除一个Image
   docker rmi image_name[image_id]
16. 将一个container变为Image
   docker commit -m "modify message" -a "name" image_id new_image_name

## 如何使用
1. Dockfile.base
    
    基础:centos:centos
    目的:构造基础Centos环境
    命令:docker build -f Dockfile.base -t yk/centos_base . 

2. Dockfile.nginx
    
    基础:Dockfile.base
    目的:构造基础的Nginx的环境,进行Nginx配置。
    命令:docker build -f Dockfile.nginx -t yk/centos_nginx . 
    说明:本Nginx环境的nginx.conf只有一个用于测试的server。其他所有虚拟主机的server都要放在conf/include/目录中
    生成container:docker run -d -p 8090:80 --name cn yk/centos_nginx
    测试:curl localhost:8090 如果显示 nginx on CentOS 6 inside Docker 表示安装成功

3. Dockerfile.php

    基础:Dockefile.nginx
    目的:基于Nginx环境,构造基础的PHP7.0环境,进行相关PHP配置
    命令:docker build -f Dockfile.php -t yk/centos_php . 
    说明:本PHP环境进行配置

4. Dockerfile.nginx_php 

    基础:Dockerfile.php
    目的:基于PHP环境,构造一个如何使用前述的Images进行测试和开发的用例
    命令:docker build -f Dockfile.nginx_php -t yk/centos_nginx_php . 
    说明:构造测试环境,需要指定特定的nginx配置文件和特定的根目录
    生成container命令:docker run -d -p 8091:80 --name cnp yk/centos_nginx_php
    测试:curl -H"Host: yankai.demo.test.cn" "http://localhost:8091" 如果显示hello world则表示正常

5. Dockerfile.project_demo
    基础:Dockerfile.php
    目的:基于PHP环境,构造一个基本的PHP环境。在该PHP环境中,我们将网站的根目录挂载到container中,日志也记录到该网站的根目录中,那么我们就可以基于Container的环境,进行开发
    命令:docker build -t yk/centos_project_demo -f Dockerfile.project_demo . 
    生成container:docker run -d -p 8093:80 -v `pwd`/volume/demo_php:/home/yankai/demo_php yk/centos_project_demo
    测试:curl -H"Host: yk.test.cn" "http://localhost:8093"
    显示:{"errno":0,"errormsg":{"method":"make","value":"test.make","new":"test.make"}}
    并在demo_php/logs目录下面是有日志的

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published