docker常用指令简介(干货)

原文: 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教程






/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