原文: https://blog.csdn.net/xyz_dream/article/details/58301927
docker其实就像虚拟机一样的,有自己的操作系统,可以把虚拟机导出为iso,zip等类型文件,之后支持在另外的docker环境下导入进去,并且能保持一致的进行运行。
对于迁移服务器,维护等等比较方便,只要有能运行docker的环境,你的服务器数据配置和环境不用重新配置,直接导入docker运行,几分钟就能保证你的网站能在极速时间内得以正常运行。反正我以前维护自己的网站时候,又一次尝到了苦头,服务器环境不一样得重新装上环境并且配置好。还得备份数据,下载下来又上传到新的服务器,花费了很多没有必要的时间,很是苦恼。有时候一些配置你还会忘了,半天网站不能正常运行。
1.安装(ubuntu 16.04)
sudo apt-get install apt-transport-https
sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo bash -c “echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list”
sudo apt-get update
sudo apt-get install -y lxc-docker
启动服务 : service docker start
显示docker版本: docker version
显示docker系统信息:dcoker info
//安装|lamp教程
http://www.laozuo.org/8303.html 安装 lamp
/etc/init.d/apache2 restart 重启apache服务
2.镜像
2.1 获取镜像
docker pull 仓库地址:版本号 ubuntu(镜像名称)
默认:
docker pull ubuntu
docker tag mysql:oldversion 新名称:新版本号
2.2 显示管理镜像: docker images
通过镜像id显示镜像详细信: docker inspect id(镜像id)
2.3. 搜索镜像: docker search mysql(搜索mysql镜像)
2.4 删除镜像: docker rmi 镜像id
2.5 创建镜像: docker commit -a “author name” -m “meaasge” 容器id “镜像名称”:版本号 (-p 暂停容器运行)
2.6 镜像文件保存到本地或者从本地导入到docker镜像管理:
导出:
docker save -o “文件名” ubuntu:latest 指定镜像变为本地存储的文件
导入: docker load –input(<) “文件名”
2.7 上传镜像: docker push 名称:版本
3.容器(1). 对容器外部的操作
3.1创建容器
docker create -it 镜像id/标签
3.1.2创建并且运行容器
docker run ubuntu /bin/bash
3.1.3守护状态运行(进入后台运行)
docker -d ubuntu /bin/bash -c “whlie true;doc echo hello”
3.2运行容器
docker start 容器id
3.3获取容器输出内容
docker logs 容器id
3.4停止容器
docker stop 容器id
3.5 重启容器
docker restart 容器id
3.5 .1 查看容器情况
docker ps -a(所有的信息) -q(终止的)
3.6 删除容器 (-f 强制删除,-l 删除容器的连接但是保留容器,-v删除容器挂载的数据卷)
docker rm 容器id
3.7 导入和导出容器
3.7.1 导出容器
docker export 容器id >”容器.zip”
3.7.2 导入容器
docker import “容器.zip”
4.容器(2). 容器内部的操作
4.1 进入容器 attach exec nsenter 等命令
docker attach 容器id/name(不太推荐此命令,不方便)
docker exec -it 容器id
5.仓库
5.1 docker login 登录
5.2 指定注册服务器和仓库,下载镜像:
docker pull dl.dockerpool.com:5000/ubuntu:12.04
5.3 创建私有仓库
docker run -d -p 5000:5000 registry
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 将上传的镜像文件默认的路径/tmp/registry 变为本地的/opt/data/registry
vim /etc/default/docker
DOCKER_OPTS=”$DOCKER_OPTS –insecure-registry=10.128.0.9:5000”
curl http://10.128.0.10:5000/search //查询私有仓库的镜像信息
exec “$DOCKER” -d $DOCKER_OPTS –insecure-registry 10.128.0.9:5000
6.数据管理 DOCKER_OPTS=”–insecure-registry 10.10.105.71:5000
6.1 数据卷挂载 -v 本地目录:容器目录
docker run -i -t -p –name test -v /root/newdir/:/root/ ubuntu /bin/bash
此时容器中已挂载 newdir的文件到了/root里面,就可以使用了。
6.2 数据卷容器 –volumes-from 数据卷容器名称/id
docker run -it –volumes-from 数据卷容器名称 ubuntu /bin/bash 此时数据卷容器的数据会挂载到当前的容器之中
7.网络基本配置
7.1端口映射
-P 随机映射
-p 本机端口:容器端口
7.2 –link 连接的容器:连接别名
docker run -i -t -P –name web –link db:db ubuntu /bin/bash
8.使用DockerFile创建镜像
例子:在ubuntu镜像基础上安装inotify-tools nginx apache2 openssh-server 等软件
#Nginx
#version 0.0.1
1.FROM ubuntu #基于哪个镜像去制作
2.MAINTAINER dreammo 1171031749@qq.com #作者
3.RUN apt-get update && apt-get install y inotify-tools nginx apache2 openssh-server
1.FROM 镜像源
2.MAINTAINER 维护者信息
3.RUN 操作镜像
4.EXPOSE 暴露端口映射
5.CMD
6.ENV key value 环境变量
7.ADD <src> <dest> 复制指定的<src>到容器中的<dest>
8.COPY <src> <dest>
9.ENTRYPOINT 配置容器启动后执行的命令
10.VOLUME [“/data”] 创建一个可以从本地或其他容器挂载的挂载点
11.USER user 指定运行容器时的用户名/UID
12.WORKDIR /path/to/workdir