差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
tech:op:docker:hello-world [2017/03/19 00:25:36] 某喵 |
tech:op:docker:hello-world [2018/05/10 16:04:53] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
- | <markdown> | + | # 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} | ||
``` | ``` | ||
+ | 加入组之后,需要登出,并重新登录当前用户 | ||
最后,指定一下 registry-mirrors 并关闭 docker 对 iptables 的修改: | 最后,指定一下 registry-mirrors 并关闭 docker 对 iptables 的修改: | ||
行 24: | 行 23: | ||
``` | ``` | ||
- | #### Tips | + | ## 更新 |
+ | |||
+ | ``` | ||
+ | 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 | ||
行 31: | 行 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` 对应的目录 |