docker 练习
echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
sudo docker run -i -t centos /bin/bash
brctl show
sudo docker run -i -t --rm --net=none base /bin/bash
1.进入root权限
sudo su
2.停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
3.查看当前有些什么images
docker images
4.删除images,通过image的id来指定删除谁
docker rmi <image id>
想要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $2}")
要删除全部image的话
docker rmi $(docker images -q)
docker rm -f $(docker ps -a -q)
sudo docker inspect -f "{{ .Name }}" aed84ee21bde
docker run -d -P --name web --link db:db training/webapp python app.py
docker run --rm --name web2 --link db:db training/webapp env
cat /proc/sys/net/ipv4/ip_forward
如何修改 Data file 路径
遇到的第一个问题,则是:docker 的数据都放到哪里了?显然,上面的 docker info 给了我们答案: 在/var/lib/docker/ 下。由于种种神奇的原因,我们希望尝试 修改 docker 的数据存放目录。
编辑这个文件:vim /etc/sysconfig/docker,找到OPTIONS=--selinux-enabled -H fd://,修改为:OPTIONS=-g /mnt/docker0/data --selinux-enabled -H fd://。这样我们就成功的将 docker 目录修改成功了。
执行 systemctl restart docker ,再 docker info ,可以看到目录已经修改成功了。
如何使用国内的 docker 镜像源
考虑 DockerPool 这个 docker poll。
例如,我要下载 CentOS 7 的 docker 镜像,那么执行:
docker pull dl.dockerpool.com:5000/centos:centos7
镜像文件略微有点大,下得我心醉。在 DockerPoll Downloads 可以找到其它的镜像列表。
下载完成后,要把第三方 registry 的下载的文件打上 tag
docker tag dl.dockerpool.com:5000/centos:centos7 centos:centos7
如何清理 docker 容器
执行了一些简单的命令,比如docker run -t -i centos:centos7 ping baidu.com之后,再看 docker info ,发现 Containers 居然到了 4 。大惊,用 docker ps -a 查看后才知道,每次我用 docker run 的时候他都会新建一个 Container。试了下 docker rm ,一次只能删除一个。改用 docker rm $(docker ps -aq) ,成功删除它们。
Docker 配置文件位置
Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致
在 ubuntu 中的位置是:/etc/default/docker
在 centos 中的位置是:/etc/sysconfig/docker
docker push 192.168.2.29:5000
docker tag 33cf1c0fe2ce 192.168.2.29:5000/centos:jackluo
docker run --name='gitlab' -it --rm -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' -p 10022:22 -p 10080:80 -v /var/run/docker.sock:/run/docker.sock -v $(which docker):/bin/docker
username: root
password: 5iveL!fe
docker run --name=mysql -d \
-v /opt/gitlab/mysql:/var/lib/mysql \
sameersbn/mysql:latest
CREATE USER 'gitlab'@'%.%.%.%' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT ALL PRIVILEGES ON `gitlabhq_production`.* TO 'gitlab'@'%.%.%.%';
docker run --name=gitlab -d \
-e 'DB_HOST=192.168.1.100' -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \
-v /opt/gitlab/data:/home/git/data \
sameersbn/gitlab:7.5.3
docker run --name=mysql -d \
-e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \
-v /opt/mysql/data:/var/lib/mysql \
sameersbn/mysql:latest
docker run --name=gitlab -P -d -v /data/gitlab/data:/home/git/data -v /data/gitlab/mysql:/var/lib/mysql sameersbn/gitlab
--name是新生成的container的名字
-d在后台运行这个container,也可以用-i,意思是交互式的运行container,用户可以看到输出,也可以输入
-v把container里面的volumn映射到主机的存储,/opt/gitlab/data是主机的路径,/home/git/data是container里面的路径
-P(大写)这个参数比较重要,是把所有container里面的端口都映射到主机上的随机端口,这样和主机在同一网络内的机器就可以访问container了。
如果不想映射container里面所有端口,可以通过-p(小写)来进行单独的映射。
这个命令是所有的命令中最重要的一个!(没有之一)
docker rm -f $(docker ps -a -q)
docker stop $(docker ps -a -q)
docker run \
--name=gitlab_redis \
-tid \
sameersbn/redis:latest
docker run --name=gitlab_mysql \
-tid \
-e 'DB_NAME=gitlabhq_production' \
-e 'DB_USER=gitlab' \
-e 'DB_PASS=password' \
-v /data/gitlab/mysql:/var/lib/mysql \
sameersbn/mysql:latest
docker run \
--name='gitlab' \
-itd \
--link gitlab_mysql:mysql \
--link gitlab_redis:redisio \
-e 'GITLAB_PORT=80' \
-e 'GITLAB_SSH_PORT=22' \
-e 'GITLAB_HOST=gitlab.example.com' \
-v /var/run/docker.sock:/run/docker.sock \
-v $(which docker):/bin/docker \
-v /data/gitlab/data:/home/git/data \
-v /data/gitlab/log:/var/log/gitlab \
sameersbn/gitlab
docker run -p 22:22 -d \
-e "SMTP_USER=gitlab@host.com" -e "SMTP_PASS=password" \
-e "GITLAB_EMAIL=gitlab@host.com" -e "GITLAB_SUPPORT=gitlab@host.com" \
-e "GITLAB_SIGNUP=true" \
-e "GITLAB_HOST=gitlab.host.com" \
-v /data/gitlab/data:/home/git/data \
-v /data/gitlab/mysql:/var/lib/mysql \
sameersbn/gitlab
docker inspect ec1f12439d91
docker rm -f $(docker ps -a -q)
docker run \
--name=gitlab_mysql \
-tid \
-e 'DB_NAME=gitlabhq_production' \
-e 'DB_USER=gitlab' \
-e 'DB_PASS=password' \
-v /data/gitlab/mysql:/var/lib/mysql \
sameersbn/mysql:latest
MYSQL=$(docker run -tid -e 'DB_USER=root' -e 'DB_PASS=admin' sameersbn/mysql)
docker run \
--name=gitlab_redis \
-tid \
sameersbn/redis:latest
docker run \
--name=gitlab_mysql \
-tid \
-e 'DB_NAME=gitlabhq_production' \
-e 'DB_USER=gitlab' \
-e 'DB_PASS=password' \
-v /data/gitlab/mysql:/var/lib/mysql \
sameersbn/mysql:latest
docker run \
--name='gitlab' \
-itd \
--link gitlab_mysql:mysql \
--link gitlab_redis:redisio \
-e 'GITLAB_PORT=80' \
-e 'GITLAB_SSH_PORT=22' \
-e 'GITLAB_HOST=gitlab.example.com' \
-v /var/run/docker.sock:/run/docker.sock \
-v $(which docker):/bin/docker \
-v /data/gitlab/data:/home/git/data \
-v /data/gitlab/log:/var/log/gitlab \
sameersbn/gitlab:latest
docker run \
--name='gitlab' \
-itd \
--link gitlab_mysql:mysql \
--link gitlab_redis:redisio \
-e 'GITLAB_PORT=80' \
-e 'GITLAB_SSH_PORT=22' \
-e 'LDAP_ENABLED=true' \
-e 'LDAP_HOST=192.168.1.1' \
-e 'LDAP_PORT=389' \
-e 'LDAP_UID=sAMAccountName' \
-e 'LDAP_METHOD=plain' \
-e 'LDAP_BIND_DN=test@example.com' \
-e 'LDAP_PASS=passwd' \
-e 'LDAP_BASE=OU=example_users,DC=example-family,DC=com' \
-e 'LDAP_ACTIVE_DIRECTORY=true' \
-e 'LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN=false' \
-e 'GITLAB_HOST=gitlab.example.com' \
-e 'SMTP_ENABLED=true' \
-e 'SMTP_DOMAIN=example.com' \
-e 'SMTP_HOST=192.168.1.2' \
-e 'SMTP_PORT=25' \
-e 'SMTP_STARTTLS=false' \
-v /var/run/docker.sock:/run/docker.sock \
-v $(which docker):/bin/docker \
-v /opt/gitlab/data:/home/git/data \
-v /opt/gitlab/log:/var/log/gitlab \
sameersbn/gitlab:latest
docker 练习的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
- docker for mac 学习记录
docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...
- scrapy爬虫docker部署
spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...
- [原][Docker]特性与原理解析
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...
- 开发者的利器:Docker 理解与使用
困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- 微服务与Docker介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
随机推荐
- golang channel basic
package mainimport ( "fmt" "math/rand" "time")func main() { rand.Seed( ...
- js 节点 document html css 表单节点操作
js 节点 document html css 表单节点操作 节点操作:访问.属性.创建 (1)节点的访问:firstChild.lastChild.childNodes.parentChild(父子 ...
- C语言中如何将二维数组作为函数的参数传递
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...
- 用c语言写一个函数把十进制转换成十六进制(转)
#include "stdio.h" int main() { int num=0;int a[100]; int i=0; int m=0;int yushu; char hex ...
- DOM兼容
-firstChild firstElementChild var oFirst = oUl.firstChild || oUl.firstElementChild; -lastChild la ...
- ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
文章发自:http://www.cnblogs.com/hark0623/p/4170172.html 转发请注明 14/12/17 19:18:53 ERROR Shell: Failed to ...
- 关于Vector中的元素中含有指针成员的情况
对于容器,当容器的各个元素为类类型,且该类类型中含有指针成员时: 如果类类型的析构函数中包含了对指针变量指向内存的释放操作,则在利用clear()函数删除容器所有元素时,会自动调用类的析构函数,自动实 ...
- ASP.NET中Url编码解码
今天遇到Url编码解码的问题,纠结了一天的时间,结果上网一查才发现太二了我们. 同事写的代码把url用HttpUtility.UrlEncode编码和解码了,本地测试没有问题,部署到服务器上就提示转码 ...
- Netty 入门示例
服务端代码示例 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channe ...
- POJ 2503 字典树
题目链接:http://poj.org/problem?id=2503 题意:给定一个词典,输入格式为[string1' 'string2] 意思是string2的值为string1. 然后给定一波 ...