Docker

在Ubuntu下安装docker 
curl -sSL https://get.docker.com | sudo sh

默认情况下Ubuntu需要使用docker的话,要加上sudo
可以创建docker组
sudo groupadd  docker
sudo gpasswd -a #user docker 
sudo reboot #重启

docker的log在
/var/log/upstart/docker.log

docker run ubuntu echo 'hello'  下载ubuntu镜像(如果不存在的话)并且打印hello

如果要调用docker的RESTful风格的api的话,可以

nc -U /var/run/docker.sock
get /info HTTP/1.1

#启停docker
sudo status docker
sudo service docker start
sudo service docker stop
sudo service docker restart

Docker启动参数在/etc/default/docker中修改,
加入 
DOCKER_OPTS='--label name=sakop -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
后即可供远程访问,本机自身的client访问时也不会出错。
这里的配置中第一个tcp是给远程访问的,第二个unix协议的是给本机访问的


然后远程client加上环境变量 DOCKER_HOST=tcp://addr:port 访问远程docker守护进程
想要使用回本机的话,只要将DOCKER_HOST置空

Docker命令组
<pre code_snippet_id="1586696" snippet_file_name="blog_20160224_8_5678738" name="code" class="html">docker run -i -t ubuntu /bin/bash 进入docker并进行交互式操作 
在交互式命令中输入exit可以退出该容器,同时容器被关闭。
如果只是暂时退出容器,在term里输入ctrl p,ctrl q,将容器放入后台
输入docker ps可以重新看到。
然后使用docker attach container_name可以重新返回会话

docker ps 正在运行的
docker ps -a 所有的
docker ps -l 列出最新创建的

docker run --name=sakop 运行一个容器,并赋予他名字,
docker ps inspect sakop 列出容器详细信息的json
docker start -i sakop 重新运行该容器,注意在运行此命令前,sakop容器肯定已经通过docker run命令产生了,并且在run命令中如果是-d选项,那么为守护式容器,如果是-i -t则是交互式容器。如果sakop容器不是以守护式或者交互式启动的话,再次执行docker start -i 或 -d sakop将不产生效果。

docker rm sakop 删除该容器
docker rm `docker ps -aq` 一次性删除所有容器,-q代表只获取容器id
docker logs -tf --tail 10 sakop //显示容器的日志,带上时间戳,并且一直刷新,并且第一次只显示最后的10条
docker top sakop
docker run --name=daemon -d ubuntu /bin/sh -c "while true;do echo hello;sleep 1;done" 可创建一个守护进程
守护进程默认attach进去是一片空白,如果想要在里面干点别的事情使用 docker exec -it daemon /bin/bash 
docker kill sakop 迅速杀掉守护进程,发送SIGKILL
docker stop sakop 停止守护进程,发送SIGTERM
docker port sakop 查看容器网络映射情况
 
 
 
 
</pre><pre code_snippet_id="1586696" snippet_file_name="blog_20160224_9_6409086" name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif;">Docker镜像</span>
<pre code_snippet_id="1586696" snippet_file_name="blog_20160224_9_6409086" name="code" class="html">docker info 查看docker原信息,其中包括镜像的存放路径
docker images 
docker images -a 查看包含只读镜像的所有镜像
docker images ubuntu 查看ubuntu这个repository下的所有镜像
docker rmi ubuntu:latest 
docker rmi #{image_id}
docker rmi $(docker images -q ubuntu)删除ubuntu这个repository下的所有image,docker images -q ubuntu的意思是只列出该repository下所有images的id,不列出其他信息

docker search ubuntu //搜索所有带有关键字ubuntu的repository,ubuntu不是一个镜像,而是仓库名
实质上,ubuntu是docker官方的Repository,用户自定义的仓库格式为 用户名/仓库名,而镜像的话为 <span style="font-family: Arial, Helvetica, sans-serif;">用户名/仓库名:标签名</span><pre code_snippet_id="1586696" snippet_file_name="blog_20160224_9_6409086" name="code" class="html">
docker pull ubuntu:14.04 //下载ubuntu这个Repository下的14.04这个镜像
 
 
构建自己的镜像(使用docker commit)
 
 
docker run -it ubuntu/14.04
apt-get update
apt-get install nginx
exit
docker ps -a //查看刚才的docker镜像,假设为happy_lemon
docker commit -a sakop -m "ubuntu with nginx" happy_lemon sakop/ubuntu_with_nginx //这样一个镜像就做好了
docker run -p 80 -d --name=nginx_test run sakop/ubuntu_with_nginx nginx -g "daemon off;"//启动nginx
docker port nginx_test //假设映射到主机的12345端口
curl http://localhost:12345

 
 
在Dockerfile中创建配置信息

FROM ubuntu:14.04
MAINTAINER sakop "sakopqiu@gmail.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80<pre code_snippet_id="1586696" snippet_file_name="blog_20160224_12_4936416" name="code" class="html">Docker命令
CMD 只能出现一次,且可以被docker run之后的命令所覆盖,写法鼓励使用数组,数组写法也适用于ENTRYPOINT
ENV KEY VALUE 设置环境变量                   
ENTRYPOINT ["nginx"] //然后运行docker run -d <span style="font-family: Arial, Helvetica, sans-serif;">sakop/ubuntu_with_nginx2 -g "daemon off",-g的这部分会作为参数传递给entrypoint这样执行的时候就会变成nginx -g "daemon off"</span>
<span style="font-family: Arial, Helvetica, sans-serif;">也可以加上 CMD ["-h"]和ENTRYPOINT混合使用,这样当docker run指定-g参数时仍然按照-g参数走,不指定的话,则搭配CMD里声明的-h =>nginx -h</span>
ADD src dest 将当前目录下的文件copy到容器的目标环境,ADD指令后的所有指令不存在缓存。源文件不能是构建目录之外的任何文件
然后在该Dockerfile的目录下执行docker build -t "sakop/ubuntu_with_nginx2" . //如果存在apt-get update这种时常需要更新源的指令时,可以指定--no-cache 构建完后可以通过docker history "sakop/ubuntu_with_nginx2"来查看镜像堆栈
 
 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值