安装(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