安装(centos):

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

yum install epel-release
yum install -y docker-io

  

一.docker自身命令

docker info	// 查看信息
docker version //查看版本
service docker restart/start/stop/reload

  

二.docker镜像命令

docker build --rm=true . 构建镜像
docker pull ${IMAGE} 安装镜像
docker images 显示已经安装的镜像
docker images --no-trunc 显示已经安装镜像的详细内容
docker rmi ${IMAGE_ID} 删除指定镜像
docker save -o ${要保存的文件名} ${要保存的镜像} //保存镜像为文件
docker load --input ${文件} 或者 docker load < ${文件} //载入镜像
docker images|grep none|awk '{print $3 }'|xargs docker rmi //删除没有标签的镜像
docker rmi $(docker images | awk '/^<none>/ {print $3}')

  

三.docker容器命令

docker run 运行容器
docker ps 显示正在运行的容器
docker ps -a 显示所有的容器
docker ps -l 显示最近创建的容器
docker stop ${CID} 停止指定容器
docker start ${CID} 启动指定容器
docker restart ${CID} 重启指定容器
docker stop docker ps -q 停止所有正在运行的容器
docker rm ${CID} 删除指定容器
docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID} 显示指定容器的IP
docker attach ${CID} 进入容器
docker exec -it ${CID} /bin/bash 进入容器打开一个shell,在容器中exit后,容器不会停止
docker commit ${CID} 新的镜像名称 //保存对容器的修改为新的镜像
docker export ${CID或名称} > ${导出文件名} //导出容器为镜像
docker load < ${导入文件名} //导入文件为镜像

  

四.运行及停止容器

1.docker run -p80:80 --name nginx -v /data:/usr/share/nginx/html -v /docker/nginx/conf.d:/etc/nginx/conf.d --privileged=true -d nginx -g "daemon off;"

-d为后台运行
-p为宿主机端口和容器端口的映射
-v为宿主机目录和容器目录的映射
--privileged 为容器内的root拥有真正的root权限
--name 容器名称,自定义
nginx 为镜像名称

2.停止容器
docker stop ${CID/name}

3.启动容器
docker stop ${CID/name}

3.重启容器
docker restart ${CID/name}

五.vsftpd

1.

docker pull fauria/vsftpd

  

2.启动容器

docker run -d -v /data:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=USERNAME -e FTP_PASS=PASSWORD \
-e PASV_ADDRESS=127.0.0.1 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd

  

六.制作一个centos的apache+php5.6的镜像

1.拉取centos官方6.9版本
docker pull centos:6.9

2.启动centos

docker run --net=host -d -name centos6.9 centos:6.9

  

--net=host是让容器使用宿主机的网络环境

3.安装apache和php5.6,此处略去;
在容器内修改httpd.conf,增加

Include vhosts/*.conf

  

在/etc/httpd/下新建vhosts文件夹

4.将容器保存为新的镜像
docker commit centos6.9 centos6-apache2-php5.6

5.以新镜像来启动容器

docker run -v /www/site1:/var/www/html -v /httpd/vhosts:/etc/httpd/vhosts -p 80:80 --name apache -d -i -t centos6-apache2-php5.6 /bin/bash

  

注:
-v /httpd/vhosts:/etc/httpd/vhosts 是将apche的配置文件放到宿主机的/httpd/vhosts

在/httpd/vhosts我们新建一个site.conf

<VirtualHost *:80>
DocumentRoot /var/www/html/public
</VirtualHost>

  

七.mysql

1.拉取mysql5.6.35

docker pull mysql:5.6.35

  

2.启动镜像

docker run --name mysql5.6 -p 3306:3306 -v /mysql/datadir:/var/lib/mysql -v /mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=密码 -d mysql:5.6.35

  

-v /mysql/datadir:/var/lib/mysql 将数据文件放入宿主机目录/mysql/datadir下

-v /mysql/conf.d:/etc/mysql/conf.d 将配置文件放入宿主机目录/mysql/conf.d下

在宿主机上建立文件/mysql/conf.d/my.cnf

[mysqld]
slow_query_log = 1

  

八.一些问题

1.vsftpd在过一个阶段后状态变为dead,无法删除,只能强制删除

docker rm -f $(docker ps -a -q -f status=dead)

  

2.制作的新镜像centos6-apache2-php5.6,在每次运行容器后,还需要进入容器去启动apache,我们在容器中新建一个脚本文件/init/httpd.sh

#! /bin/bash
/etc/init.d/httpd start
/bin/bash

  

赋予执行权限

chmod +x /init/httpd.sh

  

保存容器为新镜像

docker commit centos centos6-apache2-php5.6

  

运行一个容器

docker run -p 8010:80 -itd -v /www/phpmyadmin:/var/www/html --name phpmyadmin2 centos6-apache2-php5.6  /init/httpd.sh

  

/init/httpd.sh 这是镜像中的脚本文件

docker加速器:

daocloud.io

docker基本的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. CodeVS1169 传纸条 [DP补完计划]

    题目传送门 题目描述 Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端, ...

  2. Java使用Redis初探

    Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象. 服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需 ...

  3. 倍增LCA学习笔记

    前言 ​ "倍增",作为一种二进制拆分思想,广泛用于各中算法,如\(ST\)表,求解\(LCA\)等等...今天,我们仅讨论用该思想来求解树上两个节点的\(LCA\)(最近公共祖先 ...

  4. [ARC097F]Monochrome Cat

    题意:一棵树,每个节点是黑色或白色,你可以从任意节点开始进行一些操作并在任意节点结束,如果当前在$x$,那么一次操作可以是:1.走到相邻节点$y$并翻转$y$的颜色,2.翻转$x$的颜色,问把所有节点 ...

  5. android:scrollbarStyle属性及滚动条和分割线覆盖问题

    android:scrollbarStyle可以定义滚动条的样式和位置,可选值有insideOverlay.insideInset.outsideOverlay.outsideInset四种. 其中i ...

  6. APK Develop——SMS Timer

    SMS Timer APK 描述: 在设定时间后向设定手机号码发送设定的内容的短信. 权限获取: <manifest xmlns:android="http://schemas.and ...

  7. Flask如何使用https?

    1 安装python 的 openssl 的类库 pip install pyOpenSSL 2 在 Flask 的代码中可以直接使用,注意ssl_context的值必须是adhoc from fla ...

  8. 【Todo】Boost安装与学习

    现在这里找下载包 http://sourceforge.net/projects/boost 我找的是 1_62_0 下面是从公司wiki上找到的一个说明. boost & thrift安装步 ...

  9. flask上传图片或者文件

    在flask unittest自动化测试中如何上传图片或者文件 import StringIO picture = StringIO.StringIO(open('/home/admin/Pictur ...

  10. ORA-01219:数据库未打开:仅允许在固定表/视图中查询

    好久没有登陆到Oracle的服务器了,把密码都忘记了.sql>conn sys/sys as sysdba;sql>alter user system identified by *;结果 ...