docker 学习笔记

命令行下创建一个我们能与之进行交互的容器,而不是一个运行后台服务的容器。
docker run -i -t ubuntu /bin/bash
-i标志保证容器STDIN是开启的,尽管我们并没有附着到容器中。持久的标准输入是交互式shell的“半边天”,-t标志则是另外“半边天”,它告诉Docker为要创建的容器分配一个伪tty终端。
–restart=always|on-failure[:5], Docker会检查容器退出代码,并据些来决定是否要重启容器。

以daemon模式运行docker容器,–name参数可以运行容器的名字
docker run [–name reg] -d -p 5000:5000 registry
Docker 新版需要 SSL Auth, 解决就是两种方法,一种就是在private registry 上使用SSL, 需要安装签发证书,可以参考nginx 的方法(https://github.com/lightning-li/docker-nginx-auth-registry/blob/master/README.md),另一种就是强制使用普通方式(在宿主机上),例如下面的步骤:
service docker stop
修改 /etc/defaut/docker 文件,增加这个参数: DOCKER_OPTS=”–insecure-registry 192.168.88.212:5000″
在重启服务: service docker restart

从私服上搜索存在哪些可用镜像
curl -X GET http://IP:5000/v1/search
curl -X GET http://IP:5000/v1/search?q=centos6

官方文档中直接运行sudo docker run -p 5000:5000 registry命令。这样确实能启动一个registry服务器,但是所有上传的镜像其实都是由docker容器管理,放在了/var/lib/docker/….某个目录下。而且一旦删除容器,镜像也会被删除。因此,我们需要想办法告诉docker容器镜像应该存放在哪里。registry镜像中启动后镜像默认位置是/tmp/registry,因此直接映射这个位置即可,比如到本机的/opt/data/registry目录下。
docker run -d -e SETTINGS_FLAVOR=dev -e STORAGE_PATH=/tmp/registry -v /opt/data/registry:/tmp/registry -p 5000:5000 registry

docker logs [-f] reg //获取容器的日志,不加参数输出最后几条日志并返回,加参数相当于tail -f
docker top reg //查看容器内的进程
docker stop|start|restart //停止、开始、重启容器运行
docker inspect //获取容器详细信息
docker ps [-a] //显示运行中(所有)的容器。
docker ps -n x //显示最后x个容器,不论这些容器正在运行还是已经停止。
docker rm //删除容器(containers)
docker rm docker ps -a -q //一次删除所有容器
docker rmi //删除映像(images)

在运行的docker容器内部运行进程(docker 1.3引入)
docker exec -it reg /bin/bash ($ docker exec ubuntu_bash -it bash)
这样就可以在容器中运行bash shell了!
第二种方式:在容器中安装并运行openssh-server,用ssh来进行管理,我喜欢直接的方式,第二种方式就不过多记录了。
第三种方式:用ssl image
直接运行 docker run -p 22:22 tutum/ubuntu 即可
参看: https://github.com/tutumcloud/tutum-ubuntu

http://www.lsproc.com/#toc_17
http://wiselyman.iteye.com/blog/2166669

卸载旧版docker

sudo docker -v  
sudo apt-get remove docker                  //这一句和下一句,在1.6以后不需要
sudo apt-get remove --auto-remove docker    //这一句和上一句,在1.6以后不需要
sudo apt-get remove --purge lxc-docker  
sudo apt-get autoremove --purge  

最新版docker安装

curl -s https://get.docker.com | sudo sh

经常用的命令

docker run -d -e SETTINGS_FLAVOR=dev -e STORAGE_PATH=/tmp/registry -v /opt/data/registry:/tmp/registry -p 5000:5000 registry

sudo docker run --name=mysql -d -e 'MYSQL_ROOT_PASSWORD=111' -e 'DB_REMOTE_ROOT_NAME=root' -e 'DB_REMOTE_ROOT_PASS=111' -p 3306:3306 -v /opt/mysql/default:/var/lib/mysql mysql

sudo docker run --name redis -d -p 6379:6379 -v /opt/redis/default:/var/lib/redis redis

docker run -d --name Node -v "$PWD":/usr/src/myapp -w /usr/src/myapp -p 80:80 node node index.js

直接分享镜像的方法

假设你有一个image叫做ubuntu,那么你可以使用save和load命令来转移image:
在本机执行
sudo docker save -o ubuntu.tar ubuntu
由此得到了 ubuntu.tar 文件,将其拷贝到远程机器,执行
sudo docker load < ubuntu.tar

    原文作者:zhoutk
    原文地址: https://segmentfault.com/a/1190000002518343
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞