安装(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. Thinkphp模板中函数的使用

    1.在模板中使用php函数 在thinkphp的html中,我们经常会遇到一些变量难以直接从php控制端直接处理,这些变量只有在模板中循环输出的时候处理比较合适,这个时候,我们就要在模板中使用函数 1 ...

  2. Windows下安装Memcached服务及安装PHP的Memcached扩展

    Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串.对象).这些数据可以是数据库调用.API ...

  3. 【BZOJ 1115】【POI 2009】石子游戏Kam

    http://www.lydsy.com/JudgeOnline/problem.php?id=1115 差分后变成阶梯博弈. #include<cstdio> #include<c ...

  4. [Lydsy1805月赛] quailty 算法

    稍微建一下模型就可以发现,题目要求的其实是一个最小异或基环森林.... 可以用类似最小生成树的拟阵性质来证明,贪心的从小的边权开始依次尝试加入的方法是对的. 所以我们把a[]排完序之后直接递归贪心就行 ...

  5. [ARC062F]Painting Graphs with AtCoDeer

    题意:一个无向图,用$k$种不同的颜色给每条边染色,问能染出多少种不同的图,如果两张图能通过循环移位环边使得颜色相同,那么这两张图被认为是相同的 数学太差伤不起啊...补了一下Burnside定理的证 ...

  6. 【贪心】POJ2393-Yogurt Factory

    [思路] 水题,没什么好说的.每周为之后多生产的牛奶可以看作之后才生产的.每周最少生产单价=min(上周生产的最小单价+储存单价,本周生产单价).注意ans是long long,否则会WA. #inc ...

  7. 通过win下的eclipse连接虚拟机中伪分布的hadoop进行调试

    VMware虚拟机配置Ubuntu桥接方式(Bridged)使虚拟机和宿主机能互相ping通, 通过win下的eclipse连接虚拟机中伪分布的hadoop进行调试 1.设置Bridged上网方式 V ...

  8. nginx配置本地https

    客户端如何验证服务器的证书呢?服务器自己的证书必须经过某"权威"证书的签名,而这个"权威"证书又可能经过更权威的证书签名,这么一级一级追溯上去,最顶层那个最权威 ...

  9. Educational Codeforces Round 9 E. Thief in a Shop dp fft

    E. Thief in a Shop 题目连接: http://www.codeforces.com/contest/632/problem/E Description A thief made hi ...

  10. 怎么查看和修改 MySQL 的最大连接数

    通常,mysql的最大连接数默认是100, 最大可以达到16384.1.查看最大连接数:show variables like '%max_connections%';2.修改最大连接数方法一:修改配 ...