差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
tech:op:docker:hello-world [2017/03/18 21:16:18] 某喵 |
tech:op:docker:hello-world [2018/05/10 16:04:53] (当前版本) |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | <markdown> | + | # Docker 初试 |
| - | ### Docker 初试 | + | ## 安装 |
| - | + | ||
| - | #### Docker 安装 | + | |
| - [Docker 入门](https://www.gitbook.com/book/yeasy/docker_practice) | - [Docker 入门](https://www.gitbook.com/book/yeasy/docker_practice) | ||
| 行 13: | 行 11: | ||
| sudo usermod -aG docker ${USER} | sudo usermod -aG docker ${USER} | ||
| ``` | ``` | ||
| + | 加入组之后,需要登出,并重新登录当前用户 | ||
| - | #### Tips | + | 最后,指定一下 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 container prune | ||
| 行 21: | 行 62: | ||
| 这两个命令比较有用,不过不能随便用,它们都会把当前没有运行的 container 清理掉,`system prune` 会导致相关的 volume 也被删掉,容易造成数据被误删除。目前我感觉比较好的实践,还是在临时执行 `docker run` 的时候,加入 `--rm` 参数,这样执行完毕之后,container 及其相关的资源会被自动清理掉,比较 clean。 | 这两个命令比较有用,不过不能随便用,它们都会把当前没有运行的 container 清理掉,`system prune` 会导致相关的 volume 也被删掉,容易造成数据被误删除。目前我感觉比较好的实践,还是在临时执行 `docker run` 的时候,加入 `--rm` 参数,这样执行完毕之后,container 及其相关的资源会被自动清理掉,比较 clean。 | ||
| - | </markdown> | + | --- |
| + | |||
| + | 目前来说,仅只学会了 docker 基本命令的使用。 | ||
| + | |||
| + | 关于 `docker-compose`,尚未找到正确的打开方式。 | ||
| + | |||
| + | 目前为了避免数据在 container 被清理后丢失,采用的做法是: | ||
| + | |||
| + | - 挂载一个主机卷到 container 的 `/backup` 目录 | ||
| + | - 将需要持久化的文件夹拷贝到 `/backup` | ||
| + | - 重新启动新的 container ,并通过 `--volume` 的方式,挂载 `/backup` 对应的目录 | ||