提示:以下内容均为学习过程中的个人笔记,有用自取,无用勿喷,如有错误欢迎指正

一、什么是docker?

Docker 是采用Linux Container,基于Golang语言 采用apache2.0开源协议存储于GitHub开源的容器管理引擎,并且运用了很多Linux底层的技术,比如Overlay UFS文件系统实现镜像层和可写层之间的联立,当然镜像的分层也是基于此实现的;采用Cgroup作为底层资源限制;采用namespaces作为进程的隔离机制,比如隔离网络栈、主机名、用户名、挂载点等;采用bridge以及iptables的NAT实现容器间、容器和外部之间的网络联通;采用chroot伪根机制实现容器内部的根视图的展现

二、docker的安装

下面以17.03版本docker安装为例

#上传安装包并安装17.03版本docker
yum -y install docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm

systemctl enable docker

#docker想要进行网络通信必须要进入防火墙,它们之间要互相调用。如果不进行重载,它们之间的联合度比较低,可能会报错
reboot
systemctl status docker
	
#运行hello-world镜像
docker run hello-world
	
#配置加速器,加速docker镜像下载(阿里加速地址https://kfp63jaj.mirror.aliyuncs.com )
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
#若想更换加速器地址,编辑下面文件替换地址即可
cat /etc/docker/daemon.json   
systemctl restart docker
	
#docker体验:安装wordpress
docker run --name db --env MYSQL_ROOT_PASSWORD=example -d mariadb
docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress
docker exec -it db /bin/bash
mysql -uroot -pexample
create database wordpress;
grant all on *.* to 'wordpress'@'%'  identified by '123456';

三、docker常用命令

#显示docker系统信息,包括UFS信息
docker info
	
#查询镜像
字符界面:docker search 镜像名
Windows:浏览器搜索官方仓库查找
	
#查询所有正在运行的容器(容器唯一标识符:ID和别名)
docker ps 
docker ps -a   #-a选项表示所有容器包含被关闭的
	
#下载docker镜像
docker pull 镜像地址/镜像名
扩展:镜像格式(镜像仓库地址/用户库名/镜像名:版本号),若不加仓库地址则使用默认仓库地址
	
#查看当前镜像,SIZE字段只是参考值
docker images 
注:可以使用镜像名加版本号或者ID前四位作为唯一索引标识符,可以加上--no-trunc\显示完整ID
	
#删除docker镜像,确定容器不再使用户再删除
docker rmi -f 镜像名:版本号 或 ID前四位
	
#删除容器,需先停止容器或者使用-f强制删除
docker stop 容器
docker rm 容器
	
#创建并启动容器
docker run [选项] IMAGE [COMMAND] [ARG]
选项:
#--name=“容器新名字”:为容器指定一个名称
#-d:后台运行容器,并返回容器ID,也即启动守护式容器
#-i:以交互模式运行容器,通常与 -t 同时使用
#-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
#-P:随机端口映射
#-p:指定端口映射
#--restart=always  容器自动启动
#-h x.xx.xx	 	设置容器主机名(域名)
#--dns xx.xx.xx.xx	 设置容器使用的 DNS 服务器
#--dns-search hongfu.com   	DNS 搜索设置,当无法解析域名时自动补齐搜索域
#--add-host hostname:IP		将新增解析记录自动添加到hosts文件中和
#--rm			服务停止时自动删除  
		
例:进入test容器,执行完命令退出后容器自动删除  
docker run --name test -it --rm 镜像ID /bin/bash
		
#--link 被链接容器名  使得容器和被链接容器之间可以相互通信
例如,单台服务器上部署nginx代理三台tomcat
docker run --name tomcat1 -d tomcat
docker run --name tomcat2 -d tomcat
docker run --name tomcat3 -d  tomcat
		
docker run --name nginx -p 80:80 --link tomcat1 --link tomcat2 --link tomcat3 -d nginx
			upstream tomcat {
				server tomcat1:8080;
				server tomcat2:8080;
				server tomcat3:8080;
			}
		 
	
#一键删除所有容器,$()嵌套docker命令,可以将其写成脚本或者设置为别名
docker rm -f $( docker ps -a -q )
	
#查询容器详细信息
docker inspect 容器名   #复制信息通过python进行解析,通过jason显示工具查看
	
#查看容器前台输出信息,不一定是容器日志
docker logs 容器名
	
#查看容器资源占用
docker stats 容器名
	
#在容器中执行命令
docker exec 容器名 要执行的命令
docker exec -it 容器名 /bin/bash 或者/bin/sh #进入容器中

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐