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 练习的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在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 ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. 攻城狮在路上(肆)How tomcat works(三) 连接器:Connector

     在介绍中提到,Catalina中有两个主要的模块:连接器和容器.本章中你将会写一个可以创建更好的请求和响应对象的连接器,用来改进第2章中的程序.一个符合Servlet 2.3和2.4规范的连接器必须 ...

  2. ASP.NET多线程下使用HttpContext.Current为null解决方案 2015-01-22 15:23 349人阅读 评论(0) 收藏

    问题一:多线程下获取文件绝对路径 当我们使用HttpContext.Current.Server.MapPath(strPath)获取绝对路径时HttpContext.Current为null,解决办 ...

  3. .NET Expression Tree

    Expression Tree 第一个简单的例子. [TestMethod] public void GodTest() { Expression<Func<int, int, int&g ...

  4. PowerDesigner连接Oracle数据库生成数据模型【数据源连接方式】

    1.进入操作系统的管理工具 2.选择ODBC数据源[32位或64位] 3.列表中是当前数据库已有的数据源,右侧点击添加按钮,添加适合自己的数据源 4.在列表中选择索要连接数据库的ODBC驱动[这里我要 ...

  5. js或jquery实现页面打印可局部打印

    方法一:直接用js的打印方法 <input id="btnPrint" type="button" value="打印" onclic ...

  6. EF中无法使用时间转字符串

    场景: 查询条件需要使用到时间类型,且需要特殊格式化,例:ToString("yyyy-MM-dd"):即,在需要使用时间进行like方式处理时: 此时,用如下方式: var q ...

  7. poj 3468【线段树】

    题意:给定Q(1<=Q<=100000)个数A1,A2…AQ,以及可能多次进行的两个操作 1)对某个区间Ai……Aj的每个数都加n(n可变) 2)对某个区间Ai……Aj的数求和 分析: 树 ...

  8. JavaScript中new和this

    [TOC] new var obj = new Base(); 相当于: var obj = {}; //创建空对象obj obj.__proto__ = Base.prototype; //将空对象 ...

  9. vs2015 MFC工程添加消息响应函数

    真不知道这PPT怎么描述的..最后窝找到了解决方法如上图.. 下次找MSDN解决问题好了..而且我们并不知道他所说的这个IDE到底是哪个厂商哪个版本的IDE这就很困惑 不过呢..它主要是让我们添加消息 ...

  10. ce游戏内存修改器(Cheat Engine)

    ce修改器(Cheat Engine)一款专门修改内存修改编辑的游戏工具它包括16进制编辑,反汇编程序,内存查找工具新版6.1 版的CE与6.0 最大的区别就是添加了修改器制作工具,比之前 5.6.1 ...