差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
tech:op:docker:hello-world [2017/03/18 20:34:04]
某喵 创建
tech:op:docker:hello-world [2018/05/10 16:04:53] (当前版本)
行 1: 行 1:
-#### Docker 初试+# Docker 初试
  
-`// TODO`+## 安装 
 + 
 +- [Docker 入门](https://​www.gitbook.com/​book/​yeasy/​docker_practice) 
 +- [官方文档](https://​docs.docker.com/​engine/​installation/​linux/​ubuntu/#​recommended-extra-packages-for-trusty-1404) 
 + 
 +本次安装的是`Docker version 17.03.0-ce, build 3a232c8`。基本上按照官方文档的步骤来安装就行。安装完成之后,会自动创建一个叫 `docker` 的群组,将当前用户加入该群组,可以方便的使用 docker。 
 + 
 +``` 
 +sudo usermod -aG docker ${USER} 
 +``` 
 +加入组之后,需要登出,并重新登录当前用户 
 + 
 +最后,指定一下 registry-mirrors 并关闭 docker 对 iptables 的修改: 
 + 
 +``` 
 +sudo vi /etc/​docker/​daemon.json 
 +
 +  "​registry-mirrors":​ ["​https://​tcy9rrzz.mirror.aliyuncs.com"​],​ 
 +  "​iptables":​ false 
 +
 +``` 
 + 
 +## 更新 
 + 
 +``` 
 +sudo apt-get update 
 +apt search docker # 检查 docker-ce 是否有最新版本 
 +sudo apt-get install docker-ce # 备注:安装完成后,所有的 container 都会被自动 stop,需要手动重启 
 +``` 
 + 
 +## docker-enter (out of date,可以用 docker exec 取代) 
 + 
 +- [安装nsenter](https://​gist.github.com/​mbn18/​0d6ff5cb217c36419661) 
 + 
 +``` 
 +# start a container 
 +docker run --name nsenter -it ubuntu:​14.04 bash 
 + 
 +## in the docker 
 +apt-get update 
 +apt-get install git build-essential libncurses5-dev libslang2-dev gettext zlib1g-dev libselinux1-dev debhelper lsb-release pkg-config po-debconf autoconf automake autopoint libtool 
 + 
 +git clone git://​git.kernel.org/​pub/​scm/​utils/​util-linux/​util-linux.git util-linux 
 +cd util-linux/​ 
 + 
 +./​autogen.sh 
 +./configure --without-python --disable-all-programs --enable-nsenter 
 +make 
 + 
 +## from different shell - on the host 
 +docker cp nsenter:/​util-linux/​nsenter /​usr/​local/​bin/​ 
 +docker cp nsenter:/​util-linux/​bash-completion/​nsenter /​etc/​bash_completion.d/​nsenter 
 +``` 
 + 
 +## Tips 
 + 
 +- docker container prune 
 +- docker system prune 
 + 
 +这两个命令比较有用,不过不能随便用,它们都会把当前没有运行的 container 清理掉,`system prune` 会导致相关的 volume 也被删掉,容易造成数据被误删除。目前我感觉比较好的实践,还是在临时执行 `docker run` 的时候,加入 `--rm` 参数,这样执行完毕之后,container 及其相关的资源会被自动清理掉,比较 clean。 
 + 
 +--- 
 + 
 +目前来说,仅只学会了 docker 基本命令的使用。 
 + 
 +关于 `docker-compose`,尚未找到正确的打开方式。 
 + 
 +目前为了避免数据在 container 被清理后丢失,采用的做法是: 
 + 
 +- 挂载一个主机卷到 container 的 `/backup` 目录 
 +- 将需要持久化的文件夹拷贝到 `/backup` 
 +- 重新启动新的 container ,并通过 `--volume` 的方式,挂载 `/backup对应的目录