562 Commits

Author SHA1 Message Date
Kang Huaishuai
dc0f1223a0 Merge pull request #477 from caisah/patch-2
Fix typo in english/basic_concept/container.md
2020-11-15 20:45:31 +08:00
caisah
dad6b9f022 Fix typo in english/basic_concept/container.md 2020-11-15 14:42:21 +02:00
Kang Huaishuai
e049bf2741 Merge pull request #475 from caisah/patch-1
Fix typo
2020-11-15 20:09:37 +08:00
caisah
e59b50b43b Fix typo 2020-11-15 14:05:46 +02:00
Kang Huaishuai
8888612782 Merge pull request #474 from Bill0412/english
translate image/list.md to English
2020-11-09 13:12:47 +08:00
Dorsey.Xu
aa431b9a79 update image/list.md 2020-11-04 18:03:35 +08:00
Kang Huaishuai
500325b7c8 Merge pull request #472 from Bill0412/english
Translate image/pull.md to English
2020-10-28 21:25:56 +08:00
Dorsey.Xu
cba52767b7 translate image/pull.md 2020-10-28 13:18:34 +08:00
Dorsey.Xu
dc3a1c92d5 translage image/README.md 2020-10-28 10:13:00 +08:00
Kang Huaishuai
2ae8979c5c Merge pull request #470 from Bill0412/english
Translate the install chapter to English
2020-10-26 17:09:50 +08:00
Dorsey.Xu
41633ecf24 update install/mirror.md 2020-10-26 16:35:34 +08:00
Dorsey.Xu
48bcb9470b update install/windows.md 2020-10-26 15:30:35 +08:00
Dorsey.Xu
d47f565e83 translate install/mac.md 2020-10-26 15:26:51 +08:00
Dorsey.Xu
b54b5b0a0f translate install/raspberry-pi.md 2020-10-26 15:03:45 +08:00
Dorsey.Xu
6c8e710c53 translate install/centos.md 2020-10-26 14:47:10 +08:00
Dorsey.Xu
27f495466d translate install/fedora.md 2020-10-26 14:08:12 +08:00
Dorsey.Xu
cc8c36b1a3 translate install/debian.md 2020-10-26 13:54:27 +08:00
Dorsey.Xu
f4e21a70b1 update install/ubuntu.md 2020-10-26 13:33:37 +08:00
Dorsey.Xu
a2cdfdfded translate install/README.md 2020-10-26 13:21:10 +08:00
Kang Huaishuai
3b0f3c0cb2 Merge pull request #469 from Bill0412/english
Translate Basic Concept
2020-10-23 23:17:41 +08:00
Dorsey.Xu
37581d3016 translate basic_concept/repository.md 2020-10-23 18:06:39 +08:00
Dorsey.Xu
49fd7a94da fix: typo in container.md 2020-10-23 15:52:50 +08:00
Dorsey.Xu
0a8887957e rewrite basic_concept/README.md 2020-10-23 15:50:50 +08:00
Dorsey.Xu
3356aa627f rewrite basic_concept/container.md 2020-10-23 15:46:45 +08:00
Dorsey.Xu
f20936e0af fix: typo in us-en link 2020-10-23 14:49:43 +08:00
Kang Huaishuai
247bbcdc59 Merge pull request #468 from Bill0412/english
update image.md
2020-10-23 10:34:39 +08:00
Dorsey.Xu
efdc3de9e0 update image.md 2020-10-23 10:20:46 +08:00
Kang Huaishuai
42bb1bd1a1 Update README.md 2020-10-22 14:20:32 +08:00
Kang Huaishuai
c5935658bb remove machine meos 2020-10-22 14:17:54 +08:00
Kang Huaishuai
bc6d6c85e3 Merge pull request #467 from Bill0412/english
update introduction part of the English version
2020-10-22 14:16:27 +08:00
Dorsey.Xu
ff7d5976a7 update introduction 2020-10-22 14:09:10 +08:00
Kang Huaishuai
3a3939686c Merge pull request #422 from 00Kai0/english
update image
2019-10-02 22:06:52 +08:00
Kerwin.Sun
1a966e2979 update image 2019-10-02 22:03:48 +08:00
Kang Huaishuai
a7d3a8291f Merge pull request #421 from 00Kai0/english
update ubuntu.md
2019-09-06 16:39:39 +08:00
Kang Huaishuai
6f9a5cca90 Update ubuntu.md 2019-09-06 16:39:12 +08:00
Kerwin.Sun
a5b762c2ce update 2019-09-06 16:27:21 +08:00
Kang HuaiShuai
3cdde73798 add docker-practice.com
Signed-off-by: Kang HuaiShuai <khs1994@khs1994.com>
2019-09-05 13:39:32 +08:00
Kang HuaiShuai
e9213ea244 deploy pages to docker-practice/us-en 2019-09-05 13:06:29 +08:00
Kang Huaishuai
2b6e28d6a9 Fixed error 2019-09-01 20:02:48 +08:00
Kang Huaishuai
0699e96e36 Merge branch 'master' into english 2019-09-01 19:58:45 +08:00
Kang Huaishuai
2069a436e1 Merge pull request #419 from 00Kai0/english
update windows.md
2019-09-01 19:30:47 +08:00
Kang Huaishuai
7b808e4d3d Update windows.md 2019-09-01 19:30:11 +08:00
Kerwin.Sun
a071218f77 update 2019-09-01 18:27:36 +08:00
Kang
48718d6035 Fixed error
Signed-off-by: Kang Huaishuai <khs1994@khs1994.com>
2019-09-01 15:15:53 +08:00
khs1994
8666d2683f Update Docker Desktop name
Signed-off-by: khs1994 <khs1994@khs1994.com>
2019-09-01 15:03:32 +08:00
khs1994
84c2183cc8 [Machine] Update to v0.16.1
Signed-off-by: khs1994 <khs1994@khs1994.com>
2019-09-01 14:50:40 +08:00
khs1994
7ec38273bb [Compose] Update to v1.24.1
Signed-off-by: khs1994 <khs1994@khs1994.com>
2019-09-01 14:46:33 +08:00
khs1994
6bca9e8dff Update CoreOS: remove outdated quickstart 2019-09-01 14:16:10 +08:00
khs1994
6c6d2ac973 [etcd] Update to v3.4.x 2019-08-31 22:57:43 +08:00
khs1994
8747860b95 compose wordpress update mysql to v8.0.x #415 2019-08-31 22:11:34 +08:00
khs1994
5a00a6b32f Update CI
* Update drone to v1.x
* Add GitHub Actions
2019-08-31 21:15:51 +08:00
khs1994
8a3be4634e Update install 2019-08-31 18:35:14 +08:00
khs1994
c075122492 Update project docker image name #416 2019-08-31 17:47:38 +08:00
Kang Huaishuai
c9ebe3da2b Merge pull request #417 from 00Kai0/english
Update `why.md`
2019-08-30 14:58:14 +08:00
Kerwin.Sun
941e01623c why.md 2019-08-30 14:50:51 +08:00
Kang Huaishuai
593a0c39ff Merge pull request #413 from baijunyao/master
Use aliyun compose mirrors
2019-08-14 22:06:45 +08:00
baijunyao
823239010a Use aliyun compose mirrors 2019-08-14 21:50:30 +08:00
Kerwin.Sun
d00b6e1911 trans introduction--why 2019-08-11 18:49:23 +08:00
Kang HuaiShuai
b8dc1a7b16 Add image
Signed-off-by: Kang HuaiShuai <khs1994@khs1994.com>
2019-07-03 12:22:22 +08:00
Kang HuaiShuai
710c1ec457 Fix dead link
Signed-off-by: Kang HuaiShuai <khs1994@khs1994.com>
2019-07-03 12:06:31 +08:00
Kang HuaiShuai
b9247c16df Update compose django, Fixed #405
Signed-off-by: Kang HuaiShuai <khs1994@khs1994.com>
2019-07-03 11:49:11 +08:00
khs1994
59af28af86 Merge pull request #407 from yongchengzhao/master
- Fix issue #406: Describe more correctly.
2019-06-28 11:20:06 +08:00
khs1994
0baf0fec99 Merge pull request #409 from yongchengzhao/master
- Fix issue #408: Fix typos.
2019-06-28 11:17:28 +08:00
yongchengzhao
d14a0e0c4a - Fix issue #408: Fix typos. 2019-06-28 10:16:12 +08:00
yongchengzhao
e7c1782c51 - Fix issue #408: Fix typos. 2019-06-28 10:04:57 +08:00
yongchengzhao
7b02f90f09 - Fix issue #406: Describe more correctly. 2019-06-27 17:03:03 +08:00
khs1994
4ed6156a03 Add ci icon [skip ci] 2019-05-14 00:29:12 +08:00
khs1994
3b959abf68 Update SUMMARY 2019-05-14 00:17:11 +08:00
khs1994
a0c7670738 Update README [skip ci] 2019-05-13 23:43:29 +08:00
khs1994
8280d40922 Update gitbook settings 2019-05-13 23:41:43 +08:00
khs1994
1c1d81bd49 Update travis ci settings 2019-05-13 23:06:39 +08:00
khs1994
4f48fc2066 Merge pull request #402 from 00Kai0/english
trans introduction's README.md and what.md
2019-05-13 23:02:09 +08:00
khs1994
00ec580e74 Fix gitbook build error: use page-treeview@2.9.8 2019-05-13 22:58:26 +08:00
00kai0
3974a2de24 trans introduction's README.md and what.md 2019-05-13 15:34:13 +08:00
khs1994
3442dab121 Update cloud 2019-05-12 10:14:00 +08:00
khs1994
2e747fe2a5 [install] Update mirror: remove docker cn registry #370 2019-05-12 09:44:17 +08:00
khs1994
df2537b721 Update cloud 2019-05-12 09:41:35 +08:00
khs1994
bf04ac99a3 Update jd link [skip ci] 2019-05-10 07:27:55 +08:00
khs1994
77c8ae525a Buy book by wechat miniprogram [skip ci] 2019-05-07 23:16:36 +08:00
Baohua Yang
f7dcffc7be Merge branch 'master' of github.com:yeasy/docker_practice 2019-05-05 19:31:08 +08:00
Baohua Yang
a17f3f6b2f Add resource 2019-05-05 19:31:06 +08:00
khs1994
8576e16b61 ubuntu 14.04,debian 7 and 8 EOL 2019-04-29 09:29:46 +08:00
khs1994
4949de94c4 Merge pull request #399 from SmallTianTian/patch-1
expose port.
2019-04-15 20:22:09 +08:00
SmallTianTian
44e504c604 expose port. 2019-04-15 11:11:58 +08:00
khs1994
0370871867 Add BuildKit and docker manifest command. close #390 ,close #391
Signed-off-by: khs1994 <khs1994@khs1994.com>
2019-03-29 12:02:18 +08:00
khs1994
d3c197ddfc show repo language is go 2019-03-22 10:35:29 +08:00
khs1994
8fc2003414 Update README
* use jd.com cps url, analysis docker user trend
2019-03-09 11:16:27 +08:00
khs1994
c446640591 Fix format and update outdate content 2019-03-08 12:21:07 +08:00
Baohua Yang
6a97772e79 Merge pull request #388 from daixiang0/delete-blank
Remove unused blank spaces
2019-02-22 23:44:13 +08:00
Xiang Dai
d4bbcc0cfb delete all duplicate empty blanks
Signed-off-by: Xiang Dai <764524258@qq.com>
2019-02-21 10:53:33 +08:00
khs1994
994f6ac101 Replace http with https 2019-01-06 10:15:13 +08:00
khs1994
fbf5a286ab Update install 2019-01-06 10:00:38 +08:00
khs1994
81e68f241c Update docker official docs link 2019-01-06 09:50:03 +08:00
khs1994
aff886341f Update link 2019-01-06 09:40:31 +08:00
khs1994
44530ff366 Add aliyun mirror 2019-01-01 17:59:58 +08:00
khs1994
e2baa6401a replace crlf,Fix #338 2019-01-01 10:30:49 +08:00
khs1994
560c23797a Update typeset 2018-12-31 16:09:34 +08:00
khs1994
efee23eca7 Add cases/ci travis
Signed-off-by: khs1994 <khs1994@khs1994.com>
2018-12-31 15:57:44 +08:00
khs1994
234ac706a3 Update dockerfile format 2018-12-31 14:50:31 +08:00
khs1994
11e2bf1701 Add Dockerfile multi stage laravel 2018-12-31 14:39:26 +08:00
khs1994
c8b73b20c6 Add php image 2018-12-31 09:25:33 +08:00
khs1994
2921a406d6 Update kubernetes 2018-12-31 09:06:28 +08:00
khs1994
944cb0dfd1 Update fedora.md 2018-12-30 17:43:34 +08:00
khs1994
2437dd0158 Fix last commit error 2018-12-26 16:47:44 +08:00
Baohua Yang
a7660df66e Add more debug skills 2018-12-26 10:11:42 +08:00
Baohua Yang
e2d5a2dff0 Add debug skills 2018-12-26 10:05:42 +08:00
khs1994
9899c7028e Fix image link 404 2018-12-25 19:20:32 +08:00
khs1994
e1552503ac Merge pull request #385 from jxlwqq/patch-1
Fix CentOS website
2018-12-22 00:08:19 +08:00
jxlwqq
35f4ca76b6 Fix CentOS website 2018-12-22 00:04:50 +08:00
khs1994
e828a4888d Update debian to stretch 2018-12-19 17:27:21 +08:00
khs1994
af7663bd61 Update ubuntu to 18.04 2018-12-19 17:24:52 +08:00
khs1994
4d38aaad3b Fix #383, base image not include wget,Update based image to debian:stretch 2018-12-19 17:08:32 +08:00
xufanglu
89f7f3cf98 Use daemon.json 2018-12-18 13:13:52 +08:00
khs1994
7a45ac029e Update soft version 2018-12-15 23:04:32 +08:00
khs1994
6d4702484d replace docker cloud with docker hub 2018-12-14 19:36:17 +08:00
khs1994
a50641d973 replace docker store with docker hub 2018-12-14 19:08:14 +08:00
khs1994
3b798d1e64 Update format 2018-12-13 20:51:30 +08:00
khs1994
553ca77a07 Merge pull request #380 from daixiang0/update-faq
Update stop cmd
2018-12-13 19:24:00 +08:00
daixiang0
e3c46e3b09 Update stop cmd
`docker stop` send SIGTERM, and then SIGKILL after grace period,
while `docker kill` send SIGTERM directly,
so `docker stop` is more safe and ensure the integrity of the data.

Signed-off-by: daixiang0 <764524258@qq.com>
2018-12-13 19:21:11 +08:00
long
86657b8742 Update data root info 2018-12-13 18:57:41 +08:00
long
39b69945cc Update docker save command info
Signed-off-by: daixiang0 <764524258@qq.com>
2018-12-13 18:13:08 +08:00
khs1994
15ce0d8e04 Update storage drivers #378 #375 2018-12-13 18:01:45 +08:00
khs1994
8bd26974b7 Merge pull request #374 from mapleeit/patch-1
fix: fix typos
2018-12-11 14:41:27 +08:00
Maple Miao
38097d47eb fix: fix typos 2018-12-11 14:30:59 +08:00
Devin-Li
cb5813d10a update entrypotin.md 2018-12-10 18:20:10 +08:00
khs1994
2cc1207dc3 Update ubuntu version to 18.04
Signed-off-by: khs1994 <khs1994@khs1994.com>
2018-12-08 21:48:16 +08:00
Baohua Yang
6f12336f33 Merge pull request #371 from yeasy/miniprogram
Add wechat mini-program info
2018-12-08 21:12:30 +08:00
khs1994
49841871aa Add miniprogram 2018-12-08 18:08:27 +08:00
khs1994
1b306447ef Update Dockerfile
Signed-off-by: khs1994 <khs1994@khs1994.com>
2018-11-02 08:26:50 +08:00
khs1994
dfa885f4f0 Update supported os
Signed-off-by: khs1994 <khs1994@khs1994.com>
2018-11-02 08:01:29 +08:00
Baohua Yang
08dc228718 Fix issue#362: update book info 2018-10-23 21:35:18 +08:00
khs1994
cabdcdb898 Merge pull request #364 from wxy325/master
Update django.md, Fix a typo
2018-10-23 12:51:54 +08:00
Xiangyu Wu
627b17d2f5 Update django.md
Fix typo
2018-10-22 15:25:40 -07:00
khs1994
33bccf2ac4 Next version is 1.0.0 2018-10-21 09:51:36 +08:00
khs1994
9919fd1c43 Add Fedora 2018-10-21 09:43:53 +08:00
khs1994
b955c79fb9 Merge pull request #359 from mahuihuang/fix-etcd 2018-09-14 16:50:51 +08:00
Ma Huihuang
1fdb8da844 添加环境变量
`No help topic for 'put'·
2018-09-14 16:42:45 +08:00
khs1994
a43bbd4f44 Merge pull request #358 from ujnzxw/master
fix typos
2018-09-08 11:10:35 +08:00
Xiaowei ZHAO
cbe21e28ec fix typos 2018-09-08 02:24:38 +00:00
khs1994
aa8adb4a36 Merge pull request #357 from LeonGravel/patch-1
fix typo
2018-09-06 22:08:40 +08:00
LeonGravel
7005ba3d88 fix typo 2018-09-06 14:43:10 +08:00
khs1994
276199aa37 Fix wordpress compose file volume format 2018-08-25 22:20:04 +08:00
khs1994
ee656ff4bb Update issue link 2018-08-14 09:30:08 +08:00
khs1994
c6ac96b64e Update Ubuntu LTS version to 18.04, Fix #352 2018-08-05 08:04:49 +08:00
khs1994
2e70663bf9 Change Docker CE update channels #351 2018-07-20 09:37:22 +08:00
康怀帅
80cb2445fc CA should put client host folder 2018-07-11 08:13:17 +08:00
康怀帅
c3c182e674 Fix registry tls error 2018-07-10 12:28:18 +08:00
khs1994
fb66c7e5ee Update demo image version 2018-07-10 08:09:43 +08:00
khs1994
8f46e579f4 Update etcd 2018-07-10 08:08:34 +08:00
khs1994
c6c0a6f1fe Remove -v description 2018-07-10 08:08:21 +08:00
khs1994
9f08baaa5c Update install 2018-07-10 08:07:31 +08:00
康怀帅
7bbc556e6e Remove aliyun daocloud 2018-06-28 11:15:25 +08:00
Baohua Yang
c6118d511d Merge pull request #347 from Tuvie/master
Fix mismatch between outline and title
2018-06-21 13:59:56 +08:00
Li Zhaogeng
d242aaf10e Fix a dismatch between table of contents and contents 2018-06-21 11:46:41 +08:00
康怀帅
113b5c2d20 Update README.md 2018-06-03 21:41:17 +08:00
康怀帅
b97e5e2a8b Update Docker version [skip ci] 2018-06-03 21:39:52 +08:00
康怀帅
54a8025903 Merge pull request #344 from edxi/patch-1
host file
2018-06-03 21:34:51 +08:00
Xi ErDe
02d4c5704c host file 2018-06-03 21:28:31 +08:00
denwork
e0791a61a2 Create nexus3_registry.md 2018-05-31 18:30:41 +08:00
Baohua Yang
5002488c24 Merge pull request #339 from khs1994-docker/master
Update Swarm mode: add rolling_update
2018-05-23 22:54:33 +08:00
康怀帅
20f19cbafd Update docker machine on windows 10
* Set up an external network switch. If you plan at any point to use Docker Machine to set up multiple local VMs, you need this anyway, as described in the topic on the Hyper-V driver for Docker Machine.

* https://docs.docker.com/machine/drivers/hyper-v/#example
2018-05-23 17:45:41 +08:00
khs1994
86d532630f Update Swarm mode: add rolling_update 2018-05-23 17:18:42 +08:00
康怀帅
fcd9f49e24 Update raspberry-pi content Fix #337 2018-05-10 08:09:39 +08:00
康怀帅
255292cc01 Change docker rmi TO docker image rm #279 2018-05-09 19:45:51 +08:00
Baohua Yang
9b9ab2349a Update gitbook link 2018-05-07 16:42:04 +08:00
Baohua Yang
122df6f233 Update gitbook read link 2018-04-29 15:46:38 +08:00
Shude Li
274cb33e89 doc(compose_file): fix version number of secrets (#332) 2018-04-22 09:04:30 -07:00
康怀帅
ed816ba448 Merge pull request #330 from songjiayang/master
fix typo
2018-04-17 19:08:53 +08:00
songjiayang
ca01158e1c fix typo 2018-04-17 17:40:50 +08:00
康怀帅
60fb624a40 Merge pull request #329 from khs1994-docker/master
Remove deprecated content
2018-04-08 21:03:00 +08:00
khs1994
58c6540cdf Remove deprecated content 2018-04-08 21:00:11 +08:00
康怀帅
79702eb956 Merge pull request #327 from khs1994-docker/master
Add some file
2018-04-08 20:36:47 +08:00
khs1994
fed0d4f65b Add some file 2018-04-08 01:06:53 +08:00
康怀帅
79801a2389 Update docker version 2018-03-31 19:22:16 +08:00
康怀帅
c753f3b509 Merge pull request #326 from Alex-WZ/patch-1
Update concepts.md
2018-03-31 15:39:59 +08:00
Alex-WZ
9187715bf0 Update concepts.md
知道容器的生命周期结束或者其被删除 -> 直到容器的生命周期结束或者其被删除
2018-03-31 14:36:42 +08:00
Baohua Yang
85f22aff35 Merge pull request #324 from thomaszdxsn/patch-1
Fix a typo
2018-03-30 21:58:35 +08:00
Yang,Zhou
4c2acb419b fix a typo 2018-03-30 20:55:02 +08:00
康怀帅
5cfe40a504 Fix docker login docker ce 18.04-rc1+
* https://docs.docker.com/engine/reference/commandline/login/
2018-03-30 10:04:01 +08:00
康怀帅
107b14d6bb Merge pull request #323 from YL2014/master
Fix 文字错误 拉去 -> 拉取
2018-03-22 13:04:46 +08:00
yl2014
717abe60e7 Fix 文字错误 拉去 -> 拉取 2018-03-22 12:31:35 +08:00
Baohua Yang
0ccdc3fcfe Minor update expression 2018-03-21 14:59:25 +08:00
康怀帅
2c9acf141c Update Contents
* Fix offlineread docker image

* Add warning on install

* Update install follow official
2018-03-19 16:04:23 +08:00
康怀帅
4abfa103b6 Merge pull request #321 from khs1994/master
Update Dockerfile multistage-builds #320
2018-03-10 09:18:54 +08:00
khs1994
0db00b9669 Update Dockerfile multistage-builds #320 2018-03-10 09:16:43 +08:00
康怀帅
7594e11f23 Update Compose README
Remove cluster
2018-03-10 08:45:09 +08:00
康怀帅
d58af9ad64 Merge pull request #319 from khs1994/master
Update Swarm mode create #302
2018-03-10 08:36:20 +08:00
khs1994
3b59591f14 Update Swarm mode create #302 2018-03-10 08:34:46 +08:00
康怀帅
53e917bb08 Merge pull request #316 from khs1994/master
Update install
2018-03-08 08:25:55 +08:00
khs1994
9deb181814 Update install 2018-03-08 08:23:35 +08:00
khs1994
37a9ed4b3b Update macOS mirror #313 2018-02-10 18:00:14 +08:00
康怀帅
81ec7190d6 Update offline read
Update offline read  (#312)
2018-01-23 21:52:14 +08:00
康怀帅
4667ffb091 Merge pull request #309 from khs1994/master
Change command docker ps to docker container ls
2018-01-16 16:31:05 +08:00
khs1994
3face791c6 Change command docker ps to docker container ls #279 2018-01-15 22:00:53 +08:00
康怀帅
3de028af98 Remove content 2018-01-15 09:21:09 +08:00
康怀帅
24a24306ae Update QQ Group status 2018-01-13 00:38:30 +08:00
康怀帅
dcb821d56b Update ISSUE_TEMPLATE.md 2018-01-13 00:34:33 +08:00
康怀帅
2d4841b764 Update offline 2018-01-05 19:00:22 +08:00
康怀帅
d83d89f927 Merge pull request #308 from khs1994/master
Update gitbook
2018-01-04 16:18:49 +08:00
khs1994
45e6dadac8 Update README.md about download pdf and epub [skip ci] 2018-01-04 16:16:09 +08:00
khs1994
be6840b9c2 Add cover in root 2018-01-04 15:41:34 +08:00
康怀帅
8a276c8595 Fix git url error 2018-01-03 01:08:24 +08:00
Baohua Yang
8aa5ac4172 Merge pull request #306 from khs1994/master
Release v0.9.0
2017-12-31 21:10:11 +08:00
khs1994
eb081e5dfa Release v0.9.0 2017-12-31 14:35:48 +08:00
khs1994
36b793408b Update faq 2017-12-31 14:27:55 +08:00
khs1994
6822561fd1 Update appendix repo wordpress 2017-12-31 14:26:03 +08:00
khs1994
cb18e6f08f Change debian to alpine 2017-12-31 14:20:04 +08:00
khs1994
5f32d8f5ea Fix spelling error 2017-12-31 10:33:52 +08:00
khs1994
c2f14bb2da Update project docker image Dockerfile 2017-12-31 10:30:53 +08:00
khs1994
dddfcf2832 Add shell script for offline read 2017-12-31 10:29:51 +08:00
Baohua Yang
c5c8b7d20a Update introduction and read links 2017-12-31 09:44:51 +08:00
康怀帅
c726aa30df Fix spelling error 2017-12-29 09:22:07 +08:00
康怀帅
42317a359d Merge pull request #303 from shawxr/patch-1
Update bind-mounts.md
2017-12-26 16:13:52 +08:00
康怀帅
8a43919e51 Update bind-mounts.md 2017-12-26 16:12:28 +08:00
shawxr
7753df7681 Update bind-mounts.md 2017-12-26 16:05:26 +08:00
Baohua Yang
5603887437 Merge pull request #300 from khs1994/master
Update content
2017-12-25 21:12:58 +08:00
康怀帅
d307ac54f6 Update advanced_network 2017-12-20 23:49:49 +08:00
khs1994
8589701bea Update volume 2017-12-20 23:46:55 +08:00
khs1994
b2e0b720ac Update registry 2017-12-20 23:46:46 +08:00
khs1994
9d196a2022 Update image 2017-12-20 23:45:25 +08:00
khs1994
1ea4934758 Update swarm mode 2017-12-20 23:44:38 +08:00
khs1994
b2427b1742 Add tips #265 2017-12-20 23:44:09 +08:00
Baohua Yang
b41d564c01 Merge pull request #299 from khs1994/master
Update mesos/framework.md
2017-12-20 21:37:17 +08:00
khs1994
d9fe0cc0d4 Update install 2017-12-20 10:24:36 +08:00
khs1994
19f8ec9654 Update mesos/framework.md 2017-12-20 10:14:53 +08:00
康怀帅
38070099d8 Update framework.md 2017-12-19 18:11:08 +08:00
康怀帅
c3bc7b124b Merge pull request #298 from ysykzheng/master
fix link
2017-12-19 18:10:02 +08:00
康怀帅
c0fb7f3af0 Update framework.md 2017-12-19 18:08:52 +08:00
ysykzheng
4fa76da7f8 fix link 2017-12-19 16:33:37 +08:00
Baohua Yang
a614374641 Merge pull request #297 from khs1994/master
User docker exec to enter container
2017-12-18 16:44:42 +08:00
khs1994
8f92f3b114 Remove some content in data_management 2017-12-17 23:02:42 +08:00
khs1994
7d7b4f2afc Rename enter.md to attach_exec.md 2017-12-17 22:57:11 +08:00
Baohua Yang
ba0b55101c Merge pull request #296 from khs1994/master 2017-12-17 13:39:32 +08:00
khs1994
95d063dbd1 Update compose 2017-12-16 15:08:02 +08:00
康怀帅
047755b702 Update content (#294) 2017-12-16 13:56:57 +08:00
Baohua Yang
654737a396 Merge pull request #292 from khs1994/master 2017-12-13 10:44:19 +08:00
khs1994
8615cbf286 Add registry auth TLS #180 2017-12-11 20:22:51 +08:00
khs1994
154a42bd69 Fix error:secret to config 2017-12-11 17:44:48 +08:00
Baohua Yang
e6291d57f9 Merge pull request #291 from khs1994/master 2017-12-10 15:09:26 +08:00
khs1994
e9c9b8391d Update install: add logout and login user after install 2017-12-10 13:21:52 +08:00
khs1994
3ab7f6dfb8 Update docker-compose.yml 2017-12-10 12:53:57 +08:00
khs1994
a3267d1b3a Update book.json [skip ci] 2017-12-10 12:41:08 +08:00
khs1994
8dbaa7ea33 Update cloud: add images 2017-12-10 12:19:24 +08:00
khs1994
8939af4f97 Update compose #288 2017-12-10 11:52:09 +08:00
khs1994
6bcce7e562 Remove img 2017-12-10 11:00:24 +08:00
khs1994
6af58b6c4a Move DNS to network #278 2017-12-10 10:51:40 +08:00
Baohua Yang
0c594a5cc5 Merge pull request #290 from khs1994/master
Release v0.9-rc2: remove unused files
2017-12-09 20:05:20 +08:00
khs1994
c44f4d78b1 Update install docker 2017-12-09 00:12:30 +08:00
khs1994
9face881c7 Update install docker 2017-12-09 00:12:02 +08:00
khs1994
f60f4dd975 Release v0.9-rc2 2017-12-08 23:32:53 +08:00
khs1994
3c40c84cde Remove useless file _local 2017-12-08 23:19:20 +08:00
khs1994
7b93ed069f Add linuxkit #287 2017-12-08 23:01:04 +08:00
khs1994
3b508242ba Remove useless file 2017-12-08 23:00:19 +08:00
Baohua Yang
8d240b84bb Merge pull request #286 from khs1994/master
Update content
2017-12-08 22:33:58 +08:00
khs1994
528267b4ba Add docker config Only Swarm mode #283 2017-12-08 19:15:27 +08:00
Baohua Yang
bf18493b9a Fix MacOS to macOS 2017-12-08 18:58:19 +08:00
Baohua Yang
17856d1067 Update ISSUE_TEMPLATE.md 2017-12-07 10:18:24 +08:00
khs1994
e330bbdad2 Update CONTRIBUTING.md 2017-12-06 21:43:01 +08:00
khs1994
31a0806e2b Add git cn mirror #276 2017-12-06 19:50:49 +08:00
khs1994
e0c41e4feb Fix error in jekyll: NOT INCLUDE _images 2017-12-06 19:30:57 +08:00
khs1994
299013f4f7 Add Best practices for writing Dockerfiles 2017-12-06 19:29:09 +08:00
khs1994
79adc251a6 Add docker secret #285 2017-12-06 13:23:22 +08:00
Baohua Yang
99172ecdad Merge pull request #284 from khs1994/master
Update network usage and revise changelog and contributing docs
2017-12-05 16:40:41 +08:00
khs1994
8e31d114f8 Add docker-library/docs in dockerfile/references.md 2017-12-05 13:04:01 +08:00
khs1994
90b6d52969 Change revision.md to CHANGELOG.md AND Move CONTRIBUTING.md to root 2017-12-05 12:36:26 +08:00
khs1994
240c26edf8 Change revision.md to CHANGELOG.md AND Move CONTRIBUTING.md to root 2017-12-05 11:33:33 +08:00
khs1994
de1be5e574 Update revision 2017-12-05 11:16:51 +08:00
khs1994
3a09552f97 Update: #279 2017-12-05 11:15:59 +08:00
khs1994
edd4464176 Update Registry AND #279 2017-12-05 11:15:24 +08:00
khs1994
3aecfc8b54 Update container:Change docker images TO docker image ls #279 2017-12-05 11:14:56 +08:00
khs1994
4958b227d7 Update network:Change --net TO --network 2017-12-05 11:03:39 +08:00
Baohua Yang
7c84589565 Merge pull request #281 from khs1994/master
Update container image chapter
2017-12-05 10:19:08 +08:00
Baohua Yang
0d89e7120f Merge pull request #280 from khs1994/master
Fix #278: Update SUMMARY
2017-12-05 09:48:34 +08:00
khs1994
94df5237a6 Update image:Change docker images TO docker image ls,etc #279 2017-12-05 09:40:50 +08:00
khs1994
62bf5171e4 Update container:Change docker ps TO docker container ls,etc #279 2017-12-05 09:22:06 +08:00
khs1994
b7900844d2 Update SUMMARY #278 2017-12-04 20:49:59 +08:00
Baohua Yang
52707276e6 Merge pull request #277 from khs1994/master 2017-12-04 20:36:38 +08:00
khs1994
0ac2b50df1 Update .github 2017-12-04 11:49:59 +08:00
khs1994
f2c04dff35 Update book.json 2017-12-04 11:34:47 +08:00
khs1994
c8fed2d977 Update machine in swarm 2017-12-04 11:34:28 +08:00
Baohua Yang
ce051cd1a1 Merge pull request #274 from khs1994/master 2017-12-03 23:02:12 +08:00
khs1994
12ab87c248 Update etcd 2017-12-03 18:53:35 +08:00
khs1994
10a9cf5687 Update machine 2017-12-03 18:26:10 +08:00
khs1994
38cfeae83b Update SUMMARY revision 2017-12-03 14:34:21 +08:00
khs1994
555fee7d72 Update machine 2017-12-03 14:33:46 +08:00
khs1994
7b2ad5b30e Update etcd 2017-12-03 14:04:03 +08:00
khs1994
fb85efc58d Update etcd to 3.x #275 2017-12-03 13:57:02 +08:00
khs1994
47eb770257 Update CoreOS 2017-12-03 13:51:34 +08:00
khs1994
3e8abe7a38 Fix spelling error 2017-12-03 10:31:28 +08:00
khs1994
9c71a03e56 Remove links in compose #215 2017-12-03 10:28:35 +08:00
khs1994
1f59ebb225 Update install mirror 2017-12-03 10:27:36 +08:00
khs1994
221644a271 Update repository 2017-12-03 10:27:22 +08:00
khs1994
1ceb07e7f0 Update image 2017-12-03 10:27:05 +08:00
khs1994
6dc994c19c Update bind-mounts 2017-12-03 10:26:48 +08:00
khs1994
5ff464fc96 Update basic_concept 2017-12-03 10:26:28 +08:00
Baohua Yang
28cf0432f3 Merge pull request #273 from khs1994/master 2017-12-02 08:12:05 +08:00
khs1994
6886790a18 Update cases os 2017-12-01 23:23:26 +08:00
Baohua Yang
71012e03d6 Merge pull request #272 from khs1994/master
Fix #270: docker daemon deprecated
2017-12-01 22:35:12 +08:00
khs1994
79bb7135db Update etcd 2017-12-01 17:33:15 +08:00
khs1994
1aeafe53d8 Update image 2017-12-01 17:33:05 +08:00
khs1994
7880173c63 Update cases os 2017-12-01 17:32:53 +08:00
khs1994
55a2f02431 Update appendix 2017-12-01 17:32:39 +08:00
Baohua Yang
c798928369 Merge pull request #271 from khs1994/master
Update k8s content
2017-12-01 17:29:23 +08:00
khs1994
9ab182913c Fix #270 docker daemon deprecated 2017-12-01 16:50:45 +08:00
Baohua Yang
99b8903808 Merge pull request #269 from khs1994/master
Update registry
2017-12-01 16:43:19 +08:00
khs1994
57fc8a7b3d Fix copywriting in k8s 2017-12-01 16:32:42 +08:00
khs1994
630de255d8 Update registry 2017-12-01 15:46:26 +08:00
Baohua Yang
cc14818ffa Add using issue 2017-11-30 23:06:37 +08:00
康怀帅
e1db77a27a Update compose install (#267)
* Update drone

* Update compose install
2017-11-30 08:38:35 -06:00
Baohua Yang
c6a74cdb98 Add step for reviewing 2017-11-30 22:03:03 +08:00
康怀帅
c68386e0e2 Update Drone demo 2017-11-30 18:34:14 +08:00
khs1994
99a7cd31b4 Fix error link in install machine 2017-11-30 18:28:23 +08:00
khs1994
239c95771f Update linking 2017-11-30 18:22:16 +08:00
khs1994
a3d9d9382f Update Docker Registry 2017-11-30 16:59:04 +08:00
khs1994
d8e71510f7 Update install 2017-11-30 15:57:27 +08:00
康怀帅
cd776a1a96 Merge pull request #264 from khs1994/master
Add Drone chinese resources AND Fix error links
2017-11-30 01:39:30 -06:00
khs1994
afa90259dd Update Drone #261 2017-11-30 15:28:53 +08:00
khs1994
9930d6c2ea Add Drone #261 2017-11-30 15:05:57 +08:00
khs1994
d8f1e91471 Add chinese docker resources 2017-11-30 15:05:32 +08:00
khs1994
6ec314e229 Fix links 2017-11-30 15:04:49 +08:00
康怀帅
79dd874576 Add qq group x 2017-11-29 20:04:21 +08:00
康怀帅
656f1445cb Add gitter 2017-11-29 19:32:50 +08:00
康怀帅
540c874ac0 Merge pull request #258 from auroraeffect/master
Fix MongoDB version error in compose
2017-11-29 05:18:10 -06:00
liu sicong
84a0453a9b Merge pull request #1 from auroraeffect/auroraeffect-patch-version-error
Fix MongoDB version error
2017-11-29 17:20:47 +08:00
liu sicong
88607c404c Fix MongoDB version error
3.0 => 3.2
2017-11-29 17:19:25 +08:00
khs1994
5ed88ccd75 Remove fleet #222 2017-11-29 15:39:06 +08:00
khs1994
7cba69c5f7 Release v0.9-rc1 2017-11-29 10:49:36 +08:00
khs1994
f2a2e421b5 Update docker-compose.yml 2017-11-29 10:35:57 +08:00
khs1994
c4d6b80c18 Change picture links in README.md 2017-11-29 10:35:36 +08:00
khs1994
4fc094c17f Add picture from docs.docker.com 2017-11-29 10:25:19 +08:00
khs1994
78335d324d Update install 2017-11-29 10:24:44 +08:00
khs1994
134fc6aad9 Update container 2017-11-29 10:24:32 +08:00
khs1994
d9a3b77753 Update compose 2017-11-29 10:24:19 +08:00
khs1994
d3d48f0e38 Fix error link 2017-11-29 10:24:02 +08:00
khs1994
8bf728103b Update advanced_network 2017-11-29 10:23:42 +08:00
康怀帅
a9eb521865 Update offline read in Windows: fix error in Docker CE LCOW (Permission denied) (#257) 2017-11-28 02:19:39 -06:00
康怀帅
e8a5cbb561 Update docker-compose.yml 2017-11-28 15:35:51 +08:00
康怀帅
3a8c201fbe Add travis CI/CD #196 #254 (#256)
Add travis CI/CD #196 #254
2017-11-27 23:38:13 -06:00
khs1994
93f8b01d32 Fix error in docker-compose.yml 2017-11-28 12:05:00 +08:00
khs1994
c55e82300c Change offline read way Who use Windows 2017-11-28 11:59:21 +08:00
康怀帅
85d8a2d021 Fix copywriting 2017-11-27 16:16:44 +08:00
康怀帅
d372fe7eb6 Merge pull request #253 from yeasy/dev
Update content
2017-11-27 02:15:13 -06:00
khs1994
a8e5a3069f Fix copywriting 2017-11-27 14:31:01 +08:00
khs1994
bdb78e3331 Change link 2017-11-27 14:29:33 +08:00
khs1994
75b1c683e0 Update image 2017-11-27 14:29:13 +08:00
khs1994
b6baf62508 Update basic_concept 2017-11-27 14:29:00 +08:00
khs1994
7ebb52d297 Update SUMMARY.md 2017-11-27 14:28:41 +08:00
khs1994
458b26712c Fix spelling error 2017-11-27 14:28:20 +08:00
khs1994
b0e5d9894a Update content 2017-11-26 11:28:55 +08:00
khs1994
50ed70f29b Update ufs 2017-11-26 10:38:07 +08:00
康怀帅
c251c3936d Merge pull request #249 from yeasy/dev
Add Swarm mode AND Fix content
2017-11-25 20:19:16 -06:00
khs1994
69f46f9664 Update underly 2017-11-26 10:18:24 +08:00
khs1994
0bbbad9add Add OverlayFS #250 2017-11-26 10:06:57 +08:00
khs1994
9b4b96d3a4 Update Swarm mode overview 2017-11-26 09:57:48 +08:00
khs1994
990f85cb5b Update Swarm mode 2017-11-26 09:54:16 +08:00
khs1994
584a3696a1 Update compose 2017-11-26 09:54:04 +08:00
khs1994
c5c10dd086 Update book.json ADD github link SET language 2017-11-25 23:16:43 +08:00
khs1994
e531f6a36b Update Swarm mode 2017-11-25 15:43:51 +08:00
Baohua Yang
9e3a4a3bbe Simplify content 2017-11-25 14:17:45 +08:00
khs1994
486e9fb7d0 Update Swarm mode create 2017-11-25 10:27:27 +08:00
khs1994
d1597500a3 Add Swarm mode deploy 2017-11-25 10:26:58 +08:00
khs1994
4ae6580c4d Add Swarm mode README 2017-11-25 09:57:16 +08:00
康怀帅
7022c5ab4c Merge pull request #247 from yeasy/dev
Add multistage builds
2017-11-24 19:45:30 -06:00
khs1994
31365bddf2 Add Swarm mode overview 2017-11-25 09:45:16 +08:00
khs1994
e2ebbd2f6e Add Swarm mode create 2017-11-25 09:43:04 +08:00
khs1994
766f3015aa Remove english 2017-11-25 09:28:28 +08:00
khs1994
c9ee2a34e4 Fix #245 2017-11-24 22:42:49 +08:00
khs1994
fd1eb89c1e Update content 2017-11-24 22:42:17 +08:00
khs1994
4eabbf4661 Add multistage builds #226 2017-11-24 18:39:59 +08:00
khs1994
f2386afe6c Add multistage builds #226 2017-11-24 18:37:38 +08:00
khs1994
e65cf12625 Add multistage builds #226 2017-11-24 18:36:30 +08:00
康怀帅
addf6b936f Fix table 2017-11-24 16:50:25 +08:00
康怀帅
4d4895435a Merge pull request #246 from yeasy/dev
Update content
2017-11-24 02:46:41 -06:00
khs1994
c20ebd66e4 Fix #20 2017-11-24 12:32:36 +08:00
khs1994
17bc13a877 Update install 2017-11-24 12:31:12 +08:00
khs1994
04c031fc40 Update image 2017-11-24 12:30:57 +08:00
khs1994
90bfc0d610 Update container 2017-11-24 12:30:38 +08:00
khs1994
dce2e464da Update data management 2017-11-24 12:30:18 +08:00
khs1994
0077c223c8 Update .github 2017-11-24 11:31:22 +08:00
khs1994
47b202f7bc Update revision.md 2017-11-24 11:19:59 +08:00
khs1994
68c546add2 Update offline read wiki link 2017-11-24 11:07:21 +08:00
康怀帅
2fb8281127 Merge pull request #244 from yeasy/dev
Update appendix/repo #230
2017-11-24 10:56:13 +08:00
康怀帅
fc416722a6 Remove SSH 2017-11-24 10:32:39 +08:00
khs1994
0d4c9eda69 Update appendix/resources 2017-11-24 10:27:39 +08:00
khs1994
304d6adc25 Update appendix/repo 2017-11-24 10:19:15 +08:00
康怀帅
3dabcb0fa7 Merge pull request #243 from yeasy/dev
Update install AND FAQ
2017-11-24 10:17:47 +08:00
khs1994
b3ce4ff613 Update FAQ 2017-11-24 09:56:30 +08:00
khs1994
c94a86b7f6 Update install content AND Add raspberry-pi 2017-11-24 09:51:06 +08:00
khs1994
4b34085c5f Update FAQ 2017-11-24 00:29:51 +08:00
康怀帅
5c7db73fd0 Merge pull request #241 from yeasy/dev
Update content
2017-11-24 00:00:17 +08:00
khs1994
98c02be4cd Fix spelling error 2017-11-23 23:59:28 +08:00
khs1994
3c27207c8e Fix spelling error 2017-11-23 23:48:52 +08:00
khs1994
8c850ca22b Fix spelling error 2017-11-23 23:38:05 +08:00
khs1994
ddbadcb64d Remove CoreOS in cases/os 2017-11-23 23:31:47 +08:00
khs1994
29561e2395 Add docker exec #240 #191 #171 #164 #53 2017-11-23 22:30:37 +08:00
khs1994
0ba14de20a Update Docker Compose commands 2017-11-23 22:08:41 +08:00
khs1994
2cd1377229 Fix error 2017-11-23 21:35:13 +08:00
khs1994
edd5374247 Add ico in README.md 2017-11-23 21:26:55 +08:00
khs1994
ecf185ee61 Update Docker Compose file format 3 2017-11-23 21:25:55 +08:00
khs1994
176422becc Update Docker network 2017-11-23 21:25:42 +08:00
Baohua Yang
d2512412d6 Merge pull request #239 from yeasy/dev 2017-11-23 18:22:15 +08:00
康怀帅
359e765322 Merge pull request #237 from yeasy/dev
Add compose in network/linking.md
2017-11-23 15:50:11 +08:00
khs1994
cbc8f54ed7 Update Docker Compose file format 3 2017-11-23 15:48:52 +08:00
khs1994
99401dcc4f Add compose in network/linking.md 2017-11-23 12:59:13 +08:00
khs1994
39bef7f604 Remove Docker Swarm 2017-11-23 10:56:12 +08:00
khs1994
457813a231 Update README.md 2017-11-23 10:55:12 +08:00
康怀帅
fef878d1f3 Merge pull request #236 from yeasy/dev
Remove Docker Swarm,etc
2017-11-23 10:50:25 +08:00
khs1994
e866c2a651 Update network remove --link #215 2017-11-23 10:42:43 +08:00
khs1994
e79a646b4e Update revision.md 2017-11-23 10:41:54 +08:00
Baohua Yang
81e9416d13 Update templates for github issue and pr 2017-11-23 09:59:40 +08:00
khs1994
40a14569ab Remove Docker Swarm 2017-11-23 09:57:43 +08:00
Baohua Yang
3f754a806e Minor update description and review image
Fix #231: Update legacy branch name
2017-11-23 09:42:22 +08:00
康怀帅
5557170a95 Merge pull request #234 from yeasy/dev
merge dev branch
2017-11-23 08:05:24 +08:00
khs1994
e3beb61a5f Update machine 2017-11-23 01:35:38 +08:00
khs1994
9a42c63542 Update machine 2017-11-23 01:29:38 +08:00
khs1994
731dea9a16 Update machine 2017-11-23 01:27:16 +08:00
khs1994
4677bf077e Update machine 2017-11-23 01:23:51 +08:00
khs1994
15ae487adc Update machine 2017-11-23 01:22:25 +08:00
khs1994
dd248d7dc2 Update data management #214 2017-11-23 00:22:03 +08:00
khs1994
888f253ac5 Update data management #214 2017-11-23 00:19:30 +08:00
康怀帅
ecb46c34ce Merge pull request #232 from yeasy/dev
计划发布 0.9 版本,基于 Docker CE v17.09 Stable
2017-11-22 22:11:39 +08:00
khs1994
7049b1ce99 计划发布 0.9 版本,基于 Docker CE v17.09 Stable 2017-11-22 22:09:26 +08:00
康怀帅
80a07aee73 Merge pull request #228 from yeasy/dev
Fix #227 #180
2017-11-22 21:09:32 +08:00
khs1994
a7d8829eaa Remove Registry config.md #180 2017-11-22 21:07:49 +08:00
khs1994
eb1573a1fe Update content #227 #180 2017-11-22 20:28:10 +08:00
khs1994
1a75b7d669 Follow chinese-copywriting-guidelines #20 2017-11-22 11:41:14 +08:00
khs1994
c0324f00c3 Follow chinese-copywriting-guidelines #20 2017-11-22 11:36:18 +08:00
康怀帅
41a8e21fe8 Merge pull request #225 from yeasy/dev
Fix #223
2017-11-22 11:23:42 +08:00
khs1994
ef3e10ccb4 Fix #223 2017-11-22 11:22:57 +08:00
康怀帅
c36a42be8c Fix table error 2017-11-22 11:22:16 +08:00
康怀帅
d3226aa818 Merge pull request #224 from yeasy/dev
Fix #117
2017-11-22 11:15:27 +08:00
khs1994
7cbdf27d93 Fix #117 2017-11-22 11:13:23 +08:00
康怀帅
c3c3cf98cb Merge pull request #221 from khs1994/master
Chang docker image in offline read AND remove Dockerpool
2017-11-22 10:15:00 +08:00
khs1994
813e601bc1 Chang docker image in offline read 2017-11-22 10:10:36 +08:00
Baohua Yang
0ed5c2683c Merge pull request #219 from khs1994/master
Fix #216 #218
2017-11-22 09:29:16 +08:00
khs1994
4139271563 Remove DockerPool content 2017-11-21 19:17:45 +08:00
康怀帅
48a3624644 Fix #216 #218
Fix #216 #218
2017-11-21 19:05:06 +08:00
Baohua Yang
fcc6535910 Merge pull request #212 from khs1994/master
Fix code grammar indicator, update help docs
2017-11-14 11:16:53 +08:00
khs1994
cb21e9b167 Follow GitHub recommended community standards 2017-11-13 19:35:41 +08:00
khs1994
d1a640f383 Fix #206 #117 2017-11-13 18:54:38 +08:00
khs1994
f838297f05 Update image install content 2017-11-13 18:19:35 +08:00
Baohua Yang
1ea4c09c80 Merge pull request #211 from khs1994/master
Update with latest content
2017-11-12 22:41:53 +08:00
khs1994
5ed1521c6a Fix error in daemon json 2017-11-01 15:50:44 +08:00
khs1994
1d06af72da Update content AND Use Docker official CN mirror in example 2017-11-01 15:47:41 +08:00
khs1994
313bfc0b72 Update README.md 2017-11-01 15:15:12 +08:00
Baohua Yang
096350920c Merge pull request #204 from khs1994/master
Fix #203 #206 #208 #209
2017-10-31 19:11:08 -05:00
khs1994
ff460c1f43 Remove dockerfile in appendix #209 2017-11-01 00:36:57 +08:00
khs1994
31fdca5373 Update cloud 2017-11-01 00:24:45 +08:00
khs1994
4f42a0e730 Update docker-compose 2017-11-01 00:20:30 +08:00
khs1994
833aa02d92 Remove sudo #206 AND Remove 「本地安装」「批量上传脚本」#208 2017-10-31 23:55:51 +08:00
khs1994
61be103f7f Use 「docker container」 in docker v1.13+ #203 AND Remove sudo #206 2017-10-31 23:24:49 +08:00
khs1994
23d6736c12 Use 「docker image」 in docker v1.13+ 2017-10-24 13:06:50 +08:00
khs1994
d8632d8554 Add Docker Management Commands in docker v1.13+ 2017-10-24 12:30:17 +08:00
Baohua Yang
417900da5b Merge pull request #205 from LetianFeng/master
Fix typo: Dockrfile -> Dockerfile
2017-10-20 07:52:46 -05:00
Letian Feng
6bbd85cc37 Fix 单词错误 Dockrfile -> Dockerfile 2017-10-20 11:09:52 +02:00
khs1994
a3660ecede Remove outdated method and add new way in /etc/docker/daemon.json 2017-10-19 23:24:41 +08:00
khs1994
fe91c90324 Add please use latest docker (v17.10.0) 2017-10-19 23:22:55 +08:00
khs1994
a24a153289 Fix error links 2017-10-19 22:46:23 +08:00
khs1994
baffd6a778 Change aliyun install mirror to ustc because aliyun is outdated,it latest update in 2017/06/23 2017-10-19 22:44:25 +08:00
Baohua Yang
74289f0e6d Merge pull request #202 from khs1994/master
Fix links
2017-09-16 10:49:07 +08:00
khs1994
a0135f2b71 Fix links 2017-09-16 10:27:27 +08:00
Baohua Yang
695c8f2a49 Set theme jekyll-theme-slate 2017-09-11 15:44:34 +08:00
Baohua Yang
426e6411d1 Merge pull request #199 from khs1994/master
Fix #186: Refine installation
2017-09-05 22:00:31 +08:00
khs1994
c9a27f1ad8 REMOVE alauda mirror and Docker Toolbox 2017-09-05 21:40:41 +08:00
khs1994
57dfd608d3 UPDATE install 2017-09-04 23:34:38 +08:00
khs1994
4fc19f3234 ADD link Chinese Copywriting Guidelines 2017-09-04 22:12:15 +08:00
khs1994
2232081465 change “” ‘’ to 「」『』 2017-09-04 22:06:11 +08:00
khs1994
ed2830ef50 rm parenthese in line2 2017-09-04 21:21:52 +08:00
khs1994
beea9fae4b link install/mirror.md 2017-09-04 20:05:15 +08:00
Baohua Yang
05b4a078a7 Merge pull request #198 from yeasy/revert-195-master
Revert "fix #186"
2017-09-04 19:31:33 +08:00
Baohua Yang
658a50cbcd Revert "fix #186" 2017-09-04 19:31:17 +08:00
khs1994
b198267022 fix #186 2017-09-04 15:19:13 +08:00
Baohua Yang
f41a7619b2 Merge pull request #195 from khs1994-gitbook/master
Fix #186 and #195
2017-09-04 14:57:52 +08:00
Baohua Yang
19c31d8150 Merge pull request #194 from khs1994/master
UPDATE install with adding more os types
2017-09-04 14:54:19 +08:00
khs1994
8686fdbb7e add travis 2017-09-04 13:31:21 +08:00
khs1994
583494274e add travis 2017-09-04 13:29:26 +08:00
khs1994
83049d8a71 add travis 2017-09-04 13:25:27 +08:00
khs1994
46fc5f3d39 add travis 2017-09-04 13:18:58 +08:00
khs1994
7fccf1b2cd add travis 2017-09-04 12:56:06 +08:00
khs1994
b470de0882 add travis 2017-09-04 12:47:22 +08:00
khs1994
3e5e6bcd75 fix #186 2017-09-04 11:39:33 +08:00
khs1994
7c626d449f ADD Docker CE & Docker EE 2017-09-04 11:19:16 +08:00
khs1994
b4d8cc5230 ADD Docker CE for Windows 10 PC 2017-09-04 11:18:56 +08:00
khs1994
9b6d6fe6f5 UP Docker CE for Debian 2017-09-04 11:18:25 +08:00
khs1994
377a6939d1 UP Docker CE for Ubuntu 2017-09-04 11:18:14 +08:00
khs1994
2cc56f0b82 UP Docker CE for macOS 2017-09-04 11:17:56 +08:00
khs1994
e42e1b9c51 UP Docker CE for CentOS 7 2017-09-04 11:17:39 +08:00
khs1994
c560b6e2fc ADD install debian.md windows.md 2017-09-04 11:16:15 +08:00
khs1994
9a805dffd4 ADD Docker for Windows imgs 2017-09-04 11:15:44 +08:00
Baohua Yang
cd660f8f93 Remove failed qq group number 2017-09-01 11:28:04 +08:00
Baohua Yang
0c27b25a83 Merge pull request #188 from pkking/master
Add new registry mirror from official site
2017-08-21 16:58:07 +08:00
pkking
24001f7b26 1. 增加docker 官方registry mirror的地址
2. 增加新版本检查registry生效的方法

Signed-off-by: pkking <pkwarcraft@gmail.com>
2017-08-21 15:29:02 +08:00
Baohua Yang
32042580ba Merge pull request #187 from silenceper/master
Fix consul name
2017-08-16 13:49:04 +08:00
silenceper
36155d9ba0 fix:单词错误 2017-08-15 15:12:36 +08:00
silenceper
de2f06a21c fix:consel=>consul 2017-08-15 15:11:10 +08:00
Baohua Yang
d8567a6171 Merge pull request #184 from liu4480/master
Update docker-registry repo
2017-07-28 14:13:21 +08:00
Bin Liu
fb75dd8e4d docker-registry is DEPRECATED 2017-07-28 14:06:48 +08:00
Baohua Yang
9686afcf6f Merge pull request #183 from wzcboss/master
Remove ";" in python code
2017-07-25 10:38:38 +08:00
wzcboss
c6245b2455 remove ;in index.py 2017-07-24 17:18:05 +08:00
Baohua Yang
fd8d7ac7ed Merge pull request #179 from alex8866/master
Update tencent cloud introduction
2017-07-18 20:53:59 +08:00
Lingfei Kong
6e0aff86ed change term 你 to 用户 2017-07-18 14:50:06 +08:00
Baohua Yang
c751613c57 Merge pull request #138 from rockcitystore/master
Fix docker registry path to 2.0 by default
2017-07-18 14:27:28 +08:00
Baohua Yang
50ef788efd Merge pull request #182 from leotian/fix-img
Fix missing image
2017-07-17 23:10:48 +08:00
leotian
e7719de38f refactor: image not found 2017-07-17 11:12:42 +08:00
Lingfei Kong
9c83eaa58b 腾讯云已经推出了容器服务,更新容器与云计算章节中的腾讯云部分介绍 2017-07-03 10:40:25 +08:00
Baohua Yang
d6f1b3bde2 Merge pull request #177 from wenfengshi/master
Fix typo and broken links
2017-06-18 14:59:13 +08:00
onephone
65d4e45c5e Fix issue #176: remove the dead links 2017-06-18 14:35:52 +08:00
onephone
f1445d7fb2 完善命令,补充新版本命令说明 2017-06-18 11:35:34 +08:00
onephone
82ecfd499a Fix issue: change github.org to github.com 2017-06-18 09:01:46 +08:00
Baohua Yang
aa3b036630 Merge pull request #175 from shuizhongyueming/f/RUN命令调整
Fix run cmd
2017-06-01 18:50:13 +08:00
shuizhongyueming
8aaf0927d2 修复在ONBUILD章节里面RUN命令的使用错误
在ONBUILD章节里面RUN后面要执行的命令被双引号括起来了
在基于demo提供的Dockerfile来构建镜像时,Docker会报类似"/bin/sh: 1: mkdir /app: not found"的错误
去掉之后就一切正常了
2017-06-01 18:11:18 +08:00
Baohua Yang
44346ba200 Update figure path 2017-05-24 11:44:57 +08:00
Baohua Yang
43f75a28b0 Update v2 registry path 2017-05-24 11:40:47 +08:00
Baohua Yang
bd34ba8077 Update figure location 2017-05-24 11:37:58 +08:00
Baohua Yang
18a91f783e Add os cases 2017-05-24 11:22:23 +08:00
Baohua Yang
b0e680dfe8 Remove unused content 2017-05-24 11:17:11 +08:00
Baohua Yang
212cd0289a Fix issue#174 2017-05-24 11:13:57 +08:00
Baohua Yang
6faf2b7b0e Update swarm and mesos chapter 2017-05-02 23:17:58 +08:00
Baohua Yang
b0c572a9fe Merge pull request #171 from glixingxian/master
Improve nsenter example
2017-05-02 11:31:51 +08:00
Xingxian LI
09d6c9f1a1 improve nsenter example 2017-05-01 16:35:43 +02:00
Baohua Yang
08534241df Merge pull request #170 from shuizhongyueming/master
Update using mirror at MacOS
2017-04-29 22:46:46 +08:00
happy wang
0a0d4a015e 更新mirror.md
新增macOS下配置加速器的方法
2017-04-27 18:53:06 +08:00
Baohua Yang
d7de30ef8a Merge pull request #167 from aleen42/patch-1
Add a plugin `page-treeview`
2017-04-24 16:49:30 +08:00
Aleen
16ef5d63ba Adding a plugin named page-treeview 2017-04-24 15:59:27 +08:00
Baohua Yang
118b26f0a2 Merge pull request #165 from wg1j/master
Fixed url and add footnote to new Docker Store
2017-04-24 10:32:11 +08:00
wg1j
293cd25271 Fixed url and add footnote to new Docker Store 2017-04-22 00:27:44 +08:00
Baohua Yang
121c23e8f1 Add new book link 2017-03-21 09:22:20 +08:00
Baohua Yang
11d7179051 Merge pull request #163 from shijinzhan/patch-1
Add space before title
2017-03-15 11:36:04 +08:00
shijinzhan
33b152c18f 标题细节调整 2017-03-15 09:48:29 +08:00
Baohua Yang
e553c0062b Merge pull request #162 from stenote/patch-1
Update WORKDIR usage
2017-03-14 20:47:39 +08:00
Rui Ma
d032b463e5 Update workdir.md
workdir 可以自动帮忙建立目录
2017-03-14 17:06:48 +08:00
Baohua Yang
c8f2f162ca Merge pull request #161 from Howld/master
Fix typos
2017-03-03 11:29:39 +08:00
Howld
34fc0e801a #160 2017-03-02 19:58:32 +08:00
Baohua Yang
5e7ae549f3 Merge branch 'master' of github.com:yeasy/docker_practice 2017-02-22 10:17:08 +08:00
Baohua Yang
a503c0708c Update china-pub link 2017-02-22 10:17:02 +08:00
Baohua Yang
e38f5be83c Merge pull request #158 from 374632897/master
Fix typos
2017-02-19 16:08:12 +08:00
Jason
394b6622f9 在 -> 再 2017-02-18 22:07:35 +08:00
Jason
aee43fea12 是用 -> 使用 2017-02-18 21:02:39 +08:00
Jason
f4bb30b9f4 至于修改为置于 2017-02-18 14:35:44 +08:00
Baohua Yang
366346e2a9 Merge pull request #157 from twang2218/fix-basic-concept-typo
Fix basic concept chapter's typo, make it clearer
2017-02-16 14:50:48 +08:00
Tao Wang
ef65832291 Fix basic concept chapter's typo, make it clearer
Signed-off-by: Tao Wang <twang2218@gmail.com>
2017-02-16 14:11:24 +11:00
Baohua Yang
a511565933 Merge pull request #155 from gerryke/master
Fix typo
2017-02-10 21:32:17 +08:00
gerryke
80a64ac0a4 修改Entrypoint介绍章节中错别字“远了”为“原来” 2017-02-09 17:12:26 +08:00
Baohua Yang
af4ac70ceb Merge branch 'master' of github.com:yeasy/docker_practice 2017-02-09 09:36:10 +08:00
Baohua Yang
bcd5fa4e58 Add version 2 release news 2017-02-09 09:36:05 +08:00
Baohua Yang
de81226f53 Merge pull request #154 from mzeht/master
Fix format
2017-02-07 22:15:49 +08:00
mzeht
25178fd616 appendix/repo目录下语法格式修改 2017-02-07 22:04:05 +08:00
mzeht
5bc5219fa2 appendix/repo/ubuntu.md语法格式修改 2017-02-07 21:59:32 +08:00
Baohua Yang
275644aa02 Merge pull request #150 from qiuyin/master
Update volume.md
2017-01-26 15:32:06 +08:00
qiuyin
1ab64b2775 Update volume.md 2017-01-26 11:10:42 +09:00
Baohua Yang
453e035885 Merge pull request #149 from qiuyin/master
Update volume, will need more explicit change point info
2017-01-25 20:10:17 +08:00
qiuyin
16247bb8c3 对查看数据卷的具体信息,补充了最新版的内容。 2017-01-21 20:18:39 +09:00
qiuyin
2376e1ea18 Update volume.md 2017-01-20 18:10:20 +09:00
Baohua Yang
5e6073f46e Merge pull request #148 from hkKimWu/master
Fix missing comma
2017-01-13 17:07:31 +08:00
Kim Wu
9f9151580d 改正输入错漏。
CMD ["nginx" "-g" "daemon off;"] -> CMD ["nginx", "-g", "daemon off;"]
2017-01-13 14:21:35 +08:00
yeasy
abce07cda6 Add cloud chapter 2017-01-12 16:11:33 +08:00
Baohua Yang
f5747f6a5c Add cloud chapter 2017-01-12 15:41:14 +08:00
Baohua Yang
b3d6b681cb Add revision and contribute section 2017-01-12 13:25:22 +08:00
Baohua Yang
d3f02b48cf Merge pull request #147 from QwertyJack/master
Fix typo
2017-01-11 17:44:36 +08:00
Baohua Yang
2ae37ecfa5 Add figure 2017-01-11 17:17:49 +08:00
jack@yfy
f6e1be3cc0 a little spelling mistake 2017-01-10 22:30:02 +08:00
chenan
e8389a46b3 fix:local_repo.md 2016-11-29 10:14:36 +08:00
315 changed files with 8415 additions and 5655 deletions

15
.drone.yml Normal file
View File

@@ -0,0 +1,15 @@
kind: pipeline
type: docker
name: build
steps:
- name: build
image: yeasy/docker_practice:latest
pull: if-not-exists # always never
environment:
TZ: Asia/Shanghai
commands:
- docker-entrypoint.sh build
trigger:
branch:
- master

29
.editorconfig Normal file
View File

@@ -0,0 +1,29 @@
# EditorConfig is awesome: https://EditorConfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[*.py]
indent_size = 4
[Makefile]
indent_style = tab

5
.gitattributes vendored Normal file
View File

@@ -0,0 +1,5 @@
* text=auto
*.sh text eol=lf
* linguist-language=go

41
.github/ISSUE_TEMPLATE/Bug_report.md vendored Normal file
View File

@@ -0,0 +1,41 @@
---
name: Bug report
about: Create a report to help us improve
---
* [ ] Have u googled the problem? If no, pls do that first!
### Environment
<!--请提供环境信息包括操作系统版本等保留你的操作系统其他选项删除-->
<!--Provides env info like OS version-->
* [x] Linux
* [x] CentOS 7
* [x] Fedora
* [x] Ubuntu 16.04 +
* [x] Debian 9 +
* [x] macOS
* [x] Windows 10
* [x] Raspberry Pi (ARM)
* [x] Others (Pls describe below)
### Docker Version
<!--如果你的 Docker 版本低于 19.03 请尽可能升级到该版本保留你的 Docker 版本其他选项删除-->
<!--if Docker version under 19.03, please upgrade Docker to 19.03-->
* [x] Edge (v19.03)
* [x] Stable (v19.03)
* [x] 1.13.0 or Before
### Problem Description
<!--描述你的问题请贴出操作步骤终端报错截图或文字信息-->
<!--describe problem with detailed steps and logs-->
<!--提交问题之前请点击预览标签符合要求之后再提交问题-->

41
.github/ISSUE_TEMPLATE/Custom.md vendored Normal file
View File

@@ -0,0 +1,41 @@
---
name: Custom issue template
about: Create a issue about Docker
---
* [ ] Have u googled the problem? If no, pls do that first!
### Environment
<!--请提供环境信息包括操作系统版本等保留你的操作系统其他选项删除-->
<!--Provides env info like OS version-->
* [x] Linux
* [x] CentOS 7
* [x] Fedora
* [x] Ubuntu 16.04 +
* [x] Debian 9 +
* [x] macOS
* [x] Windows 10
* [x] Raspberry Pi (ARM)
* [x] Others (Pls describe below)
### Docker Version
<!--如果你的 Docker 版本低于 19.03 请尽可能升级到该版本保留你的 Docker 版本其他选项删除-->
<!--if Docker version under 19.03, please upgrade Docker to 19.03-->
* [x] Edge (v19.03)
* [x] Stable (v19.03)
* [x] 1.13.0 or Before
### Problem Description
<!--描述你的问题请贴出操作步骤终端报错截图或文字信息-->
<!--describe problem with detailed steps and logs-->
<!--提交问题之前请点击预览标签符合要求之后再提交问题-->

View File

@@ -0,0 +1,5 @@
---
name: Feature request
about: Suggest an idea for docker_practice
---

20
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,20 @@
<!--
Thanks for your contribution.
See [CONTRIBUTING](CONTRIBUTING.md) for contribution guidelines.
-->
### Proposed changes (Mandatory)
<!--
Tell us what you did and why:
One line short description
And details in other paragraphs.
-->
### Fix issues (Optional)
<!--
Tell us what issues you fixed, e.g., fix #123
-->

18
.github/workflows/ci.yaml vendored Normal file
View File

@@ -0,0 +1,18 @@
on:
push:
pull_request:
name: CI
jobs:
build:
name: Build GitBook
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
with:
fetch-depth: 2
- name: Build
uses: docker://yeasy/docker_practice
with:
args: build

2
.gitignore vendored
View File

@@ -6,6 +6,4 @@ _book/
*.swp
*.edx
.DS_Store
node_modules/

53
.travis.yml Normal file
View File

@@ -0,0 +1,53 @@
language: bash
services:
- docker
before_install:
- openssl aes-256-cbc -K $encrypted_6cc8cff04075_key -iv $encrypted_6cc8cff04075_iv
-in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- export TZ='Asia/Shanghai'
- date
- git config --global user.name "khs1994"
- git config --global user.email "khs1994@khs1994.com"
script:
- docker run -it --rm -v $PWD:/srv/gitbook-src yeasy/docker_practice build
after_success:
- sudo chmod -R 777 _book
- echo "FROM nginx:alpine" >> Dockerfile
- echo "COPY _book /usr/share/nginx/html" >> Dockerfile
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
- docker build -t dockerpracticesig/docker_practice:us-en .
- docker run -dit --rm -p 4000:80 dockerpracticesig/docker_practice:us-en
- sleep 5
- curl 127.0.0.1:4000
- docker push dockerpracticesig/docker_practice:us-en
- cd _book
- git init
- git remote add origin "$DEPLOY_REPO"
- git add .
- COMMIT=`date "+%F %T"`
- git commit -m "Travis CI Site updated $COMMIT"
- git push -f origin master:"$DEPLOY_BRANCH"
env:
global:
- DEPLOY_BRANCH: master
- DEPLOY_REPO: git@github.com:docker-practice/us-en.git
addons:
ssh_known_hosts:
- github.com
branches:
only:
- english

26
.travis/Dockerfile Normal file
View File

@@ -0,0 +1,26 @@
FROM node:alpine
ENV TZ=Asia/Shanghai
WORKDIR /srv/gitbook
COPY book.json book.json
COPY docker-entrypoint.sh /usr/local/bin/
RUN apk add --no-cache \
tzdata \
&& npm install -g gitbook-cli \
&& gitbook install \
&& ln -s /usr/local/bin/docker-entrypoint.sh / \
&& rm -rf /root/.npm /tmp/*
EXPOSE 4000
VOLUME /srv/gitbook-src
WORKDIR /srv/gitbook-src
ENTRYPOINT ["docker-entrypoint.sh"]
CMD server

37
.travis/book.json Normal file
View File

@@ -0,0 +1,37 @@
{
"title": "Docker -- 从入门到实践",
"author": "yeasy",
"language": "zh-hans",
"links": {
"sidebar": {
"GitHub": "https://github.com/yeasy/docker_practice"
}
},
"plugins": [
"-livereload",
"image-captions",
"github",
"page-treeview@2.9.8",
"editlink"
],
"pluginsConfig": {
"image-captions": {
"attributes": {
"width": "600"
},
"caption": "图 _PAGE_LEVEL_._PAGE_IMAGE_NUMBER_ - _CAPTION_"
},
"github": {
"url": "https://github.com/yeasy/docker_practice"
},
"editlink": {
"base": "https://github.com/yeasy/docker_practice/blob/master/",
"label": "编辑本页"
},
"page-treeview": {
"copyright": "Copyright &#169; yeasy",
"minHeaderCount": "2",
"minHeaderDeep": "2"
}
}
}

43
.travis/conf.d/nginx.conf Normal file
View File

@@ -0,0 +1,43 @@
user root;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
index index.html index.php;
server {
server_name localhost;
listen 4000;
root /srv/www/;
index index.html;
}
}

View File

@@ -0,0 +1,5 @@
sut:
build: .
volumes:
- ../:/srv/gitbook-src
command: build

21
.travis/docker-entrypoint.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
START=`date "+%F %T"`
if [ $1 = "sh" ];then sh ; exit 0; fi
rm -rf node_modules _book
srcDir=$PWD
cp -a . /srv/gitbook
cd /srv/gitbook
main(){
if [ "$1" = build ];then gitbook build && cp -a _book $srcDir && echo $START && date "+%F %T" && exit 0; fi
exec gitbook serve
exit 0
}
main $1 $2 $3

BIN
.travis/id_rsa.enc Normal file

Binary file not shown.

8
.travis/update.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# cd .travis
# ./update.sh
if [ ! -f Dockerfile ];then exit 1; fi
cp -a ../book.json book.json

120
CHANGELOG.md Normal file
View File

@@ -0,0 +1,120 @@
## 主要修订记录
* 1.1.0 2019-12-31
* 全面支持 v19.x 新版本
* 增加 `BuildKit`
* 增加 `docker manifest` 命令使用说明
* 移除 `Ubuntu 14.04` `Debian 8` `Debian 7`
* 1.0.0: 2018-12-31
* 全面支持 v18.x 新版本
* 添加如何调试 Docker
* 错误修正
* 0.9.0: 2017-12-31
* v1.13.x 旧版本的最后支持
* 0.9.0-rc2: 2017-12-10
* 增加 Docker 中文资源链接
* 增加介绍基于 Docker CI/CD 工具 `Drone`
* 增加 `docker secret` 相关内容
* 增加 `docker config` 相关内容
* 增加 `LinuxKit` 相关内容
* 更新 `CoreOS` 章节
* 更新 `etcd` 章节基于 3.x 版本
* 删除 `Docker Compose` 中的 `links`指令
* 替换 `docker daemon` 命令为 `dockerd`
* 替换 `docker ps` 命令为 `docker container ls`
* 替换 `docker images` 命令为 `docker image ls`
* 修改 `安装 Docker` 一节中部分文字表述
* 移除历史遗留文件和错误的文件
* 优化文字排版
* 调整目录结构
* 修复内容逻辑错误
* 修复`404` 链接
* 0.9.0-rc1: 2017-11-29
* 根据最新版本v17.09修订内容
* 增加 `Dockerfile` 多阶段构建( `multistage builds` ) `Docker 17.05` 新增特性
* 增加 `docker exec` 子命令介绍
* 增加 `docker` 管理子命令 `container` `image` `network` `volume` 介绍
* 增加 `树莓派单片电脑` 安装 Docker
* 增加 Docker 存储驱动 `OverlayFS` 相关内容
* 更新 `Docker CE` `v17.x` 安装说明
* 更新 `Docker 网络` 一节
* 更新 `Docker Machine` 基于 0.13.0 版本
* 更新 `Docker Compose` 基于 3 文件格式
* 删除 `Docker Swarm` 相关内容替换为 `Swarm mode` `Docker 1.12.0` 新增特性
* 删除 `docker run` `--link` 参数
* 精简 `Docker Registry` 一节
* 替换 `docker run` `-v` 参数为 `--mount`
* 修复 `404` 链接
* 优化文字排版
* 增加离线阅读功能
* 0.8.0: 2017-01-08
* 修正文字内容
* 根据最新版本1.12修订安装使用
* 补充附录章节
* 0.7.0: 2016-06-12
* 根据最新版本进行命令调整
* 修正若干文字描述
* 0.6.0: 2015-12-24
* 补充 Machine 项目
* 修正若干 bug
* 0.5.0: 2015-06-29
* 添加 Compose 项目
* 添加 Machine 项目
* 添加 Swarm 项目
* 完善 Kubernetes 项目内容
* 添加 Mesos 项目内容
* 0.4.0: 2015-05-08
* 添加 Etcd 项目
* 添加 Fig 项目
* 添加 CoreOS 项目
* 添加 Kubernetes 项目
* 0.3.0: 2014-11-25
* 完成仓库章节
* 重写安全章节
* 修正底层实现章节的架构命名空间控制组文件系统容器格式等内容
* 添加对常见仓库和镜像的介绍
* 添加 Dockerfile 的介绍
* 重新校订中英文混排格式
* 修订文字表达
* 发布繁体版本分支zh-Hant
* 0.2.0: 2014-09-18
* 对照官方文档重写介绍基本概念安装镜像容器仓库数据管理网络等章节
* 添加底层实现章节
* 添加命令查询和资源链接章节
* 其它修正
* 0.1.0: 2014-09-05
* 添加基本内容
* 修正错别字和表达不通顺的地方

41
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,41 @@
## 如何贡献项目
领取或创建新的 [Issue](https://github.com/yeasy/docker_practice/issues),如 [issue 235](https://github.com/yeasy/docker_practice/issues/235),添加自己为 `Assignee`。
[GitHub](https://github.com/yeasy/docker_practice/fork) 上 `fork` 到自己的仓库,如 `docker_user/docker_practice`,然后 `clone` 到本地,并设置用户信息。
```bash
$ git clone git@github.com:docker_user/docker_practice.git
$ cd docker_practice
```
修改代码后提交并推送到自己的仓库注意修改提交消息为对应 Issue 号和描述
```bash
# Update the content
$ git commit -a -s
# In commit msg dialog, add content like "Fix issue #235: describe ur change"
$ git push
```
[GitHub](https://github.com/yeasy/docker_practice/pulls) 上提交 `Pull Request`,添加标签,并邀请维护者进行 `Review`。
定期使用项目仓库内容更新自己仓库内容
```bash
$ git remote add upstream https://github.com/yeasy/docker_practice
$ git fetch upstream
$ git rebase upstream/master
$ git push -f origin master
```
## 排版规范
本开源书籍遵循 [中文排版指南](https://github.com/mzlogin/chinese-copywriting-guidelines) 规范。

146
README.md
View File

@@ -1,19 +1,42 @@
# Docker 从入门到实践
# Docker 从入门到实践英文版
0.8.0
[![](https://img.shields.io/github/stars/yeasy/docker_practice.svg?style=social&label=Stars)](https://github.com/yeasy/docker_practice) [![](https://travis-ci.org/yeasy/docker_practice.svg?branch=master)](https://travis-ci.org/yeasy/docker_practice) [![](https://img.shields.io/github/release/yeasy/docker_practice/all.svg)](https://github.com/yeasy/docker_practice/releases) [![](https://img.shields.io/badge/Based-Docker%20CE%20v18.x-blue.svg)](https://github.com/docker/docker-ce) [![](https://img.shields.io/badge/Docker%20%E6%8A%80%E6%9C%AF%E5%85%A5%E9%97%A8%E4%B8%8E%E5%AE%9E%E6%88%98-jd.com-red.svg)](https://union-click.jd.com/jdc?e=&p=AyIGZRtYFAcXBFIZWR0yEgRQH1kXAhs3EUQDS10iXhBeGlcJDBkNXg9JHU4YDk5ER1xOGRNLGEEcVV8BXURFUFdfC0RVU1JRUy1OVxUBFwNXGVscMlVYLlAaXAV1Z1JHA0dWEHVXZTliY1QLWStaJQAWB10fXhwKEDdlG1wlUHzf462DsLMO0%2F%2BUjp2VIgZlG18RBBcCUBlbEAoTBWUcWxwySVI7HAhBBxEOBUgOFQYQUGUraxYyIjdVK1glQHxXUEhYEVEUUFQcC0IHGgRRSAgVARAPAhsLFgNCDl0ZWiUAEwZREg%3D%3D&t=W1dCFFlQCxxKQgFHREkdSVJKSQVJHFRXFk9FUlpGQUpLCVBaTFhbXQtWVmpSWRtYEAYQBVUS)
[Docker](http://www.docker.com) 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本! 使用 Docker可以让应用的部署、测试和分发都变得前所未有的高效和轻松
**v1.1.0**
无论是应用开发者运维人员还是其他信息技术从业人员都有必要认识和掌握 Docker以在有限的时间内做更多有意义的事
| 语言 | 构建状态 | - |
| :------------- | :------------- | :--- |
| [zh-hans](https://github.com/yeasy/docker_practice) | [![](https://travis-ci.org/yeasy/docker_practice.svg?branch=master)](https://travis-ci.org/yeasy/docker_practice)| [阅读](https://docker_practice.gitee.io/zh-cn) |
| [us-en](https://github.com/yeasy/docker_practice/tree/english) | [![](https://travis-ci.org/yeasy/docker_practice.svg?branch=english)](https://travis-ci.org/yeasy/docker_practice)| [阅读](https://docker_practice.gitee.io/us-en) |
| [zh-hant](https://github.com/yeasy/docker_practice/tree/zh-Hant) | [![](https://travis-ci.org/yeasy/docker_practice.svg?branch=zh-hant)](https://travis-ci.org/yeasy/docker_practice)| [阅读](https://docker_practice.gitee.io/zh_hant) |
本书既适用于具备基础 Linux 知识的 Docker 初学者也希望可供理解原理和实现的高级用户参考同时书中给出的实践案例可供在进行实际部署时借鉴前六章为基础内容供用户理解 Docker 的基本概念和操作7 ~ 9 章介绍一些高级操作 10 章给出典型的应用场景和实践案例1112 章介绍关于 Docker 安全和实现技术等高级话题后续章节则分别介绍一些相关的热门开源项目
[Docker](https://www.docker.com) 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker可以让应用的部署、测试和分发都变得前所未有的高效和轻松
在线阅读[GitBook](https://www.gitbook.io/book/yeasy/docker_practice) 或 [Github](https://github.com/yeasy/docker_practice/blob/master/SUMMARY.md)
无论是应用开发者运维人员还是其他信息技术从业人员都有必要认识和掌握 Docker节约有限的生命
* pdf 版本 [下载](https://www.gitbook.com/download/pdf/book/yeasy/docker_practice)
* epub 版本 [下载](https://www.gitbook.com/download/epub/book/yeasy/docker_practice)
本书既适用于具备基础 Linux 知识的 Docker 初学者也希望可供理解原理和实现的高级用户参考同时书中给出的实践案例可供在进行实际部署时借鉴前六章为基础内容供用户理解 Docker 的基本概念和操作7 ~ 9 章介绍包括数据管理网络等高级操作 10 ~ 13 章介绍了容器生态中的几个核心项目1415 章讨论了关于 Docker 安全和实现技术等高级话题后续章节则分别介绍包括 EtcdCoreOSKubernetesMesos容器云等相关热门开源项目最后还展示了使用容器技术的典型的应用场景和实践案例
欢迎关注 DockerPool 社区微博 [@dockerpool](http://weibo.com/u/5345404432),或加入 Docker 技术交流 QQ 群或微信组,分享 Docker 资源,交流 Docker 技术。
* 在线阅读[docker-practice.com](https://docker-practice.com/)[GitBook](https://yeasy.gitbooks.io/docker_practice/content/)[Github](https://github.com/yeasy/docker_practice/blob/master/SUMMARY.md)[GitBook 国内镜像](https://docker_practice.gitee.io/zh-cn)[GitBook 英文版国内镜像](https://docker_practice.gitee.io/us_en)[国内镜像](https://github.com/yeasy/docker_practice/wiki/%E9%A1%B9%E7%9B%AE%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F)
* 下载[pdf](https://github.com/yeasy/docker_practice/wiki/%E4%B8%8B%E8%BD%BD)[epub](https://github.com/yeasy/docker_practice/wiki/%E4%B8%8B%E8%BD%BD)
* [离线阅读 `$ docker run -it --rm -p 4000:80 dockerpracticesig/docker_practice`](https://github.com/yeasy/docker_practice/wiki/%E7%A6%BB%E7%BA%BF%E9%98%85%E8%AF%BB%E5%8A%9F%E8%83%BD%E8%AF%A6%E8%A7%A3)
* [英文翻译](https://github.com/yeasy/docker_practice/issues/363)
Docker 自身仍在快速发展中生态环境也在蓬勃成长建议初学者使用最新稳定版本的 Docker 进行学习实践欢迎 [参与项目维护](CONTRIBUTING.md)
* [修订记录](CHANGELOG.md)
* [贡献者名单](https://github.com/yeasy/docker_practice/graphs/contributors)
## 微信小程序
<p align="center">
<img width="200" src="https://user-images.githubusercontent.com/16733187/49682252-3ac4c500-faec-11e8-86ab-eafe0139be6b.jpg">
</p>
<p align="center"><strong>微信扫码 随时随地阅读~</strong></p>
## 技术交流
欢迎加入 Docker 技术交流 QQ 分享 Docker 资源交流 Docker 技术
* QQ I 已满341410255
* QQ II 已满419042067
@@ -24,106 +47,23 @@
* QQ VII 已满252403484
* QQ VIII已满544818750
* QQ IX 已满571502246
* QQ X 可加366203473
* QQ X 可加145983035
![Docker 技术入门与实战](_images/docker_primer.png)
>如果有问题请通过 [Issues](https://github.com/yeasy/docker_practice/issues/new/choose) 来提出。
[Docker 技术入门与实战](http://item.jd.com/11598400.html)》一书已经正式出版,包含大量第一手实战案例和更为深入的技术剖析,欢迎大家阅读使用并反馈建议。
## 进阶学习
* [China-Pub](http://product.china-pub.com/3770833)
* [京东图书](http://item.jd.com/11598400.html)
* [当当图书](http://product.dangdang.com/23620853.html)
* [亚马逊图书](http://www.amazon.cn/%E5%9B%BE%E4%B9%A6/dp/B00R5MYI7C/ref=lh_ni_t?ie=UTF8&psc=1&smid=A1AJ19PSB66TGU)
[![](https://github.com/yeasy/docker_practice/raw/master/_images/docker_primer3.png)](https://union-click.jd.com/jdc?e=&p=AyIGZRtYFAcXBFIZWR0yEgRQH1kXAhs3EUQDS10iXhBeGlcJDBkNXg9JHU4YDk5ER1xOGRNLGEEcVV8BXURFUFdfC0RVU1JRUy1OVxUBFwNXGVscMlVYLlAaXAV1Z1JHA0dWEHVXZTliY1QLWStaJQAWB10fXhwKEDdlG1wlUHzf462DsLMO0%2F%2BUjp2VIgZlG18RBBcCUBlbEAoTBWUcWxwySVI7HAhBBxEOBUgOFQYQUGUraxYyIjdVK1glQHxXUEhYEVEUUFQcC0IHGgRRSAgVARAPAhsLFgNCDl0ZWiUAEwZREg%3D%3D&t=W1dCFFlQCxxKQgFHREkdSVJKSQVJHFRXFk9FUlpGQUpLCVBaTFhbXQtWVmpSWRtYEAYQBVUS)
## 主要版本历史
[Docker 技术入门与实战](https://union-click.jd.com/jdc?e=&p=AyIGZRtYFAcXBFIZWR0yEgRQH1kXAhs3EUQDS10iXhBeGlcJDBkNXg9JHU4YDk5ER1xOGRNLGEEcVV8BXURFUFdfC0RVU1JRUy1OVxUBFwNXGVscMlVYLlAaXAV1Z1JHA0dWEHVXZTliY1QLWStaJQAWB10fXhwKEDdlG1wlUHzf462DsLMO0%2F%2BUjp2VIgZlG18RBBcCUBlbEAoTBWUcWxwySVI7HAhBBxEOBUgOFQYQUGUraxYyIjdVK1glQHxXUEhYEVEUUFQcC0IHGgRRSAgVARAPAhsLFgNCDl0ZWiUAEwZREg%3D%3D&t=W1dCFFlQCxxKQgFHREkdSVJKSQVJHFRXFk9FUlpGQUpLCVBaTFhbXQtWVmpSWRtYEAYQBVUS)》第三版已经面世,介绍最新的容器技术栈,欢迎大家阅读使用并反馈建议。
* 0.8.0: 2017-01-08
* [京东图书](https://union-click.jd.com/jdc?e=&p=AyIGZRtYFAcXBFIZWR0yEgRQH1kXAhs3EUQDS10iXhBeGlcJDBkNXg9JHU4YDk5ER1xOGRNLGEEcVV8BXURFUFdfC0RVU1JRUy1OVxUBFwNXGVscMlVYLlAaXAV1Z1JHA0dWEHVXZTliY1QLWStaJQAWB10fXhwKEDdlG1wlUHzf462DsLMO0%2F%2BUjp2VIgZlG18RBBcCUBlbEAoTBWUcWxwySVI7HAhBBxEOBUgOFQYQUGUraxYyIjdVK1glQHxXUEhYEVEUUFQcC0IHGgRRSAgVARAPAhsLFgNCDl0ZWiUAEwZREg%3D%3D&t=W1dCFFlQCxxKQgFHREkdSVJKSQVJHFRXFk9FUlpGQUpLCVBaTFhbXQtWVmpSWRtYEAYQBVUS)
* [China-Pub](http://product.china-pub.com/8052127)
* 修正文字内容
* 根据最新版本修订安装使用
* 补充附录章节
* 0.7.0: 2016-06-12
* 根据最新版本进行命令调整
* 修正若干文字描述
* 0.6.0: 2015-12-24
* 补充 Machine 项目
* 修正若干 bug
* 0.5.0: 2015-06-29
* 添加 Compose 项目
* 添加 Machine 项目
* 添加 Swarm 项目
* 完善 Kubernetes 项目内容
* 添加 Mesos 项目内容
* 0.4.0: 2015-05-08
* 添加 Etcd 项目
* 添加 Fig 项目
* 添加 CoreOS 项目
* 添加 Kubernetes 项目
* 0.3.0: 2014-11-25
* 完成仓库章节
* 重写安全章节
* 修正底层实现章节的架构命名空间控制组文件系统容器格式等内容
* 添加对常见仓库和镜像的介绍
* 添加 Dockerfile 的介绍
* 重新校订中英文混排格式
* 修订文字表达
* 发布繁体版本分支zh-Hant
* 0.2.0: 2014-09-18
* 对照官方文档重写介绍基本概念安装镜像容器仓库数据管理网络等章节
* 添加底层实现章节
* 添加命令查询和资源链接章节
* 其它修正
* 0.1.0: 2014-09-05
* 添加基本内容;
* 修正错别字和表达不通顺的地方
Docker 自身仍在快速发展中生态环境也在蓬勃成长源码开源托管在 Github 欢迎参与维护[https://github.com/yeasy/docker_practice](https://github.com/yeasy/docker_practice)。贡献者 [名单](https://github.com/yeasy/docker_practice/graphs/contributors)。
## 参加步骤
* GitHub `fork` 到自己的仓库 `docker_user/docker_practice`然后 `clone` 到本地并设置用户信息
```sh
$ git clone git@github.com:docker_user/docker_practice.git
$ cd docker_practice
$ git config user.name "yourname"
$ git config user.email "your email"
```
* 修改代码后提交并推送到自己的仓库
```sh
$ #do some change on the content
$ git commit -am "Fix issue #1: change helo to hello"
$ git push
```
* GitHub 网站上提交 pull request
* 定期使用项目仓库内容更新自己仓库内容
```sh
$ git remote add upstream https://github.com/yeasy/docker_practice
$ git fetch upstream
$ git checkout master
$ git rebase upstream/master
$ git push -f origin master
```
## 鼓励项目
欢迎鼓励项目一杯 coffee~
<p align="center">
<img width="200" src="https://github.com/yeasy/docker_practice/raw/master/_images/donate.jpeg">
</p>
![coffee](_images/donate.jpeg)
<p align="center"><strong>欢迎鼓励项目一杯 coffee~</strong></p>

View File

@@ -1,137 +1,155 @@
# Summary
# [Docker 从入门到实践英文版](https://github.com/yeasy/docker_practice/blob/english/SUMMARY.md)
* [前言](README.md)
* [Docker 简介](introduction/README.md)
* [什么是 Docker](introduction/what.md)
* [为什么要用 Docker](introduction/why.md)
* [基本概念](basic_concept/README.md)
* [镜像](basic_concept/image.md)
* [容器](basic_concept/container.md)
* [仓库](basic_concept/repository.md)
* [安装](install/README.md)
* [UbuntuDebian](install/ubuntu.md)
* [README](README.md)
* [CHANGELOG](CHANGELOG.md)
* [CONTRIBUTING](CONTRIBUTING.md)
* [Introduction](introduction/README.md)
* [What is Docker](introduction/what.md)
* [Why Docker](introduction/why.md)
* [Basic concept](basic_concept/README.md)
* [Image](basic_concept/image.md)
* [Container](basic_concept/container.md)
* [Repository](basic_concept/repository.md)
* [Get Docker](install/README.md)
* [Ubuntu](install/ubuntu.md)
* [Debian](install/debian.md)
* [Fedora](install/fedora.md)
* [CentOS](install/centos.md)
* [Raspberry Pi](install/raspberry-pi.md)
* [macOS](install/mac.md)
* [镜像加速器](install/mirror.md)
* [镜像](image/README.md)
* [获取镜像](image/pull.md)
* [列出镜像](image/list.md)
* [利用 commit 理解镜像构成](image/commit.md)
* [使用 Dockerfile 定制镜像](image/build.md)
* [Dockerfile 指令详解](image/dockerfile/README.md)
* [COPY 复制文件](image/dockerfile/copy.md)
* [ADD 更高级的复制文件](image/dockerfile/add.md)
* [CMD 容器启动命令](image/dockerfile/cmd.md)
* [ENTRYPOINT 入口点](image/dockerfile/entrypoint.md)
* [ENV 设置环境变量](image/dockerfile/env.md)
* [ARG 构建参数](image/dockerfile/arg.md)
* [VOLUME 定义匿名卷](image/dockerfile/volume.md)
* [EXPOSE 暴露端口](image/dockerfile/expose.md)
* [WORKDIR 指定工作目录](image/dockerfile/workdir.md)
* [USER 指定当前用户](image/dockerfile/user.md)
* [HEALTHCHECK 健康检查](image/dockerfile/healthcheck.md)
* [ONBUILD 为他人作嫁衣裳](image/dockerfile/onbuild.md)
* [参考文档](image/dockerfile/references.md)
* [其它制作镜像的方式](image/other.md)
* [删除本地镜像](image/rmi.md)
* [实现原理](image/internal.md)
* [容器](container/README.md)
* [启动](container/run.md)
* [守护态运行](container/daemon.md)
* [终止](container/stop.md)
* [进入容器](container/enter.md)
* [导出和导入](container/import_export.md)
* [删除](container/rm.md)
* [仓库](repository/README.md)
* [Windows PC](install/windows.md)
* [Mirror](install/mirror.md)
* [Image](image/README.md)
* [pull](image/pull.md)
* [list](image/list.md)
* [Delete](image/rm.md)
* [commit](image/commit.md)
* [Dockerfile](image/build.md)
* [Dockerfile reference](image/dockerfile/README.md)
* [COPY](image/dockerfile/copy.md)
* [ADD](image/dockerfile/add.md)
* [CMD](image/dockerfile/cmd.md)
* [ENTRYPOINT](image/dockerfile/entrypoint.md)
* [ENV](image/dockerfile/env.md)
* [ARG](image/dockerfile/arg.md)
* [VOLUME](image/dockerfile/volume.md)
* [EXPOSE](image/dockerfile/expose.md)
* [WORKDIR](image/dockerfile/workdir.md)
* [USER](image/dockerfile/user.md)
* [HEALTHCHECK](image/dockerfile/healthcheck.md)
* [ONBUILD](image/dockerfile/onbuild.md)
* [References](image/dockerfile/references.md)
* [Multistage builds](image/multistage-builds/README.md)
* [Multistage builds Laravel](image/multistage-builds/laravel.md)
* [manifest](image/manifest.md)
* [BuildKit](image/buildkit.md)
* [Other](image/other.md)
* [Internal](image/internal.md)
* [Container](container/README.md)
* [run](container/run.md)
* [Daemon](container/daemon.md)
* [stop](container/stop.md)
* [exec](container/attach_exec.md)
* [Import and export](container/import_export.md)
* [Delete](container/rm.md)
* [Repository](repository/README.md)
* [Docker Hub](repository/dockerhub.md)
* [私有仓库](repository/local_repo.md)
* [配置文件](repository/config.md)
* [数据管理](data_management/README.md)
* [数据卷](data_management/volume.md)
* [数据卷容器](data_management/container.md)
* [备份恢复迁移数据卷](data_management/management.md)
* [使用网络](network/README.md)
* [外部访问容器](network/port_mapping.md)
* [容器互联](network/linking.md)
* [高级网络配置](advanced_network/README.md)
* [快速配置指南](advanced_network/quick_guide.md)
* [配置 DNS](advanced_network/dns.md)
* [容器访问控制](advanced_network/access_control.md)
* [端口映射实现](advanced_network/port_mapping.md)
* [配置 docker0 网桥](advanced_network/docker0.md)
* [自定义网桥](advanced_network/bridge.md)
* [工具和示例](advanced_network/example.md)
* [编辑网络配置文件](advanced_network/config_file.md)
* [实例创建一个点到点连接](advanced_network/ptp.md)
* [实战案例](cases/README.md)
* [使用 Supervisor 来管理进程](cases/supervisor.md)
* [创建 tomcat\/weblogic 集群](cases/tomcat.md)
* [多台物理主机之间的容器互联](cases/container_connect.md)
* [标准化开发测试和生产环境](cases/environment.md)
* [安全](security/README.md)
* [内核命名空间](security/kernel_ns.md)
* [控制组](security/control_group.md)
* [服务端防护](security/daemon_sec.md)
* [内核能力机制](security/kernel_capability.md)
* [其它安全特性](security/other_feature.md)
* [总结](security/summary.md)
* [底层实现](underly/README.md)
* [基本架构](underly/arch.md)
* [命名空间](underly/namespace.md)
* [控制组](underly/cgroups.md)
* [联合文件系统](underly/ufs.md)
* [容器格式](underly/container_format.md)
* [网络](underly/network.md)
* [Docker Compose 项目](compose/README.md)
* [简介](compose/intro.md)
* [安装与卸载](compose/install.md)
* [使用](compose/usage.md)
* [命令说明](compose/commands.md)
* [YAML 模板文件](compose/yaml_file.md)
* [实战 Django](compose/django.md)
* [实战 Rails](compose/rails.md)
* [实战 wordpress](compose/wordpress.md)
* [Docker Machine 项目](machine/README.md)
* [简介](machine/intro.md)
* [安装](machine/install.md)
* [使用](machine/usage.md)
* [Docker Swarm 项目](swarm/README.md)
* [简介](swarm/intro.md)
* [安装](swarm/install.md)
* [使用](swarm/usage.md)
* [调度器](swarm/scheduling.md)
* [过滤器](swarm/filter.md)
* [Etcd 项目](etcd/README.md)
* [简介](etcd/intro.md)
* [安装](etcd/install.md)
* [使用 etcdctl](etcd/etcdctl.md)
* [CoreOS 项目](coreos/README.md)
* [简介](coreos/intro.md)
* [工具](coreos/intro_tools.md)
* [快速搭建CoreOS集群](coreos/quickstart.md)
* [Kubernetes 项目](kubernetes/README.md)
* [简介](kubernetes/intro.md)
* [快速上手](kubernetes/quickstart.md)
* [基本概念](kubernetes/concepts.md)
* [kubectl 使用](kubernetes/kubectl.md)
* [架构设计](kubernetes/design.md)
* [Mesos 项目](mesos/README.md)
* [简介](mesos/intro.md)
* [安装与使用](mesos/installation.md)
* [原理与架构](mesos/architecture.md)
* [配置项解析](mesos/configuration.md)
* [常见框架](mesos/framework.md)
* [附录](appendix/README.md)
* [附录一常见问题总结](appendix/faq/README.md)
* [附录二热门镜像介绍](appendix/repo/README.md)
* [Docker Registry](repository/registry.md)
* [Docker Registry TLS](repository/registry_auth.md)
* [Nexus 3](repository/nexus3_registry.md)
* [Data management](data_management/README.md)
* [Volumes](data_management/volume.md)
* [Bind mounts](data_management/bind-mounts.md)
* [Network](network/README.md)
* [Port mapping](network/port_mapping.md)
* [Linking](network/linking.md)
* [DNS](network/dns.md)
* [Advanced network](advanced_network/README.md)
* [Guide](advanced_network/quick_guide.md)
* [Access control](advanced_network/access_control.md)
* [Port mapping](advanced_network/port_mapping.md)
* [docker0](advanced_network/docker0.md)
* [Bridge](advanced_network/bridge.md)
* [Example](advanced_network/example.md)
* [Config](advanced_network/config_file.md)
* [PTP](advanced_network/ptp.md)
* [Docker Compose](compose/README.md)
* [Introduction](compose/introduction.md)
* [Install](compose/install.md)
* [Usage](compose/usage.md)
* [Commands](compose/commands.md)
* [Compose file reference](compose/compose_file.md)
* [Django](compose/django.md)
* [Rails](compose/rails.md)
* [WordPress](compose/wordpress.md)
* [Docker Swarm](swarm/README.md)
* [Swarm mode](swarm_mode/README.md)
* [Overview](swarm_mode/overview.md)
* [Create](swarm_mode/create.md)
* [Deploy](swarm_mode/deploy.md)
* [Stack](swarm_mode/stack.md)
* [Secret](swarm_mode/secret.md)
* [Config](swarm_mode/config.md)
* [Rolling update](swarm_mode/rolling_update.md)
* [Security](security/README.md)
* [namespace](security/kernel_ns.md)
* [cgroups](security/control_group.md)
* [Daemon sec](security/daemon_sec.md)
* [Kernel capability](security/kernel_capability.md)
* [Other feature](security/other_feature.md)
* [SUMMARY](security/summary.md)
* [Underly](underly/README.md)
* [Arch](underly/arch.md)
* [namespace](underly/namespace.md)
* [cgroups](underly/cgroups.md)
* [ufs](underly/ufs.md)
* [Container format](underly/container_format.md)
* [Network](underly/network.md)
* [Etcd](etcd/README.md)
* [Introduction](etcd/intro.md)
* [Install](etcd/install.md)
* [Cluster](etcd/cluster.md)
* [etcdctl](etcd/etcdctl.md)
* [CoreOS](coreos/README.md)
* [Introduction](coreos/intro.md)
* [Tools](coreos/intro_tools.md)
* [Kubernetes](kubernetes/README.md)
* [Introduction](kubernetes/intro.md)
* [Quick start](kubernetes/quickstart.md)
* [Concepts](kubernetes/concepts.md)
* [kubectl](kubernetes/kubectl.md)
* [Design](kubernetes/design.md)
* [Cloud](cloud/README.md)
* [Introduction](cloud/intro.md)
* [AWS](cloud/aws.md)
* [Tencent Cloud](cloud/tencentCloud.md)
* [Alibaba Cloud](cloud/alicloud.md)
* [SUMMARY](cloud/summary.md)
* [OS](cases/os/README.md)
* [Busybox](cases/os/busybox.md)
* [Alpine](cases/os/alpine.md)
* [Debian Ubuntu](cases/os/debian.md)
* [CentOS Fedora](cases/os/centos.md)
* [SUMMARY](cases/os/summary.md)
* [CI/CD](cases/ci/README.md)
* [GitHub Actions](cases/ci/actions/README.md)
* [Drone](cases/ci/drone/README.md)
* [Install Drone](cases/ci/drone/install.md)
* [Travis CI](cases/ci/travis/README.md)
* [Docker Open Source](opensource/README.md)
* [LinuxKit](opensource/linuxkit.md)
* [Appendix](appendix/README.md)
* [FAQ](appendix/faq/README.md)
* [Sample Docker Image](appendix/repo/README.md)
* [Ubuntu](appendix/repo/ubuntu.md)
* [CentOS](appendix/repo/centos.md)
* [Nginx](appendix/repo/nginx.md)
* [PHP](appendix/repo/php.md)
* [MySQL](appendix/repo/mysql.md)
* [WordPress](appendix/repo/wordpress.md)
* [MongoDB](appendix/repo/mongodb.md)
* [Redis](appendix/repo/redis.md)
* [Nginx](appendix/repo/nginx.md)
* [WordPress](appendix/repo/wordpress.md)
* [Node.js](appendix/repo/nodejs.md)
* [附录三Docker 命令查询](appendix/command/README.md)
* [附录四资源链接](appendix/resources/README.md)
* [Docker commands](appendix/command/README.md)
* [Docker debug](appendix/debug.md)
* [Resources](appendix/resources.md)

2
_config.yml Normal file
View File

@@ -0,0 +1,2 @@
theme: jekyll-theme-slate
include: [_images]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

BIN
_images/cover.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

BIN
_images/docker_primer2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
_images/docker_primer3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -1,12 +0,0 @@
{% extends template.self %}
{% block head %}
{{ super() }}
<style>
@media only screen and (max-width: 640px) {
.book-header .btn[aria-label="github"] {
display: none;
}
}
</style>
{% endblock %}

View File

@@ -1,49 +0,0 @@
# Some useful commands to use docker.
# Author: yeasy@github
# Created:2014-09-25
alias docker-pid="sudo docker inspect --format '{{.State.Pid}}'"
alias docker-ip="sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}'"
#the implementation refs from https://github.com/jpetazzo/nsenter/blob/master/docker-enter
function docker-enter() {
#if [ -e $(dirname "$0")/nsenter ]; then
#Change for centos bash running
if [ -e $(dirname '$0')/nsenter ]; then
# with boot2docker, nsenter is not in the PATH but it is in the same folder
NSENTER=$(dirname "$0")/nsenter
else
# if nsenter has already been installed with path notified, here will be clarified
NSENTER=$(which nsenter)
#NSENTER=nsenter
fi
[ -z "$NSENTER" ] && echo "WARN Cannot find nsenter" && return
if [ -z "$1" ]; then
echo "Usage: `basename "$0"` CONTAINER [COMMAND [ARG]...]"
echo ""
echo "Enters the Docker CONTAINER and executes the specified COMMAND."
echo "If COMMAND is not specified, runs an interactive shell in CONTAINER."
else
PID=$(sudo docker inspect --format "{{.State.Pid}}" "$1")
if [ -z "$PID" ]; then
echo "WARN Cannot find the given container"
return
fi
shift
OPTS="--target $PID --mount --uts --ipc --net --pid"
if [ -z "$1" ]; then
# No command given.
# Use su to clear all host environment variables except for TERM,
# initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH,
# and start a login shell.
#sudo $NSENTER "$OPTS" su - root
sudo $NSENTER --target $PID --mount --uts --ipc --net --pid su - root
else
# Use env to clear all host environment variables.
sudo $NSENTER --target $PID --mount --uts --ipc --net --pid env -i $@
fi
fi
}

Binary file not shown.

View File

@@ -1,13 +0,0 @@
#!/bin/sh
# This script will update all local images
# See: https://github.com/yeasy/docker_practice/blob/master/_local/pull_all.sh
# Usage: pull_all
# Author: yeasy@github
# Create: 2014-09-23
for image in `sudo docker images|grep -v "REPOSITORY"|grep -v "<none>"|awk '{print $1":"$2}'`
do
sudo docker pull $image
done

View File

@@ -1,12 +0,0 @@
#!/bin/sh
# This script will upload all local images to a registry server ($registry is the default value).
# This script requires the push_images, which can be found at https://github.com/yeasy/docker_practice/blob/master/_local/push_images.sh
# Usage: push_all
# Author: yeasy@github
# Create: 2014-09-23
for image in `sudo docker images|grep -v "REPOSITORY"|grep -v "<none>"|awk '{print $1":"$2}'`
do
push_images $image
done

View File

@@ -1,47 +0,0 @@
#!/bin/sh
# This script will upload the given local images to a registry server ($registry is the default value).
# See: https://github.com/yeasy/docker_practice/blob/master/_local/push_images.sh
# Usage: push_images image1 [image2...]
# Author: yeasy@github
# Create: 2014-09-23
#The registry server address where you want push the images into
registry=127.0.0.1:5000
### DO NOT MODIFY THE FOLLOWING PART, UNLESS YOU KNOW WHAT IT MEANS ###
echo_r () {
[ $# -ne 1 ] && return 0
echo -e "\033[31m$1\033[0m"
}
echo_g () {
[ $# -ne 1 ] && return 0
echo -e "\033[32m$1\033[0m"
}
echo_y () {
[ $# -ne 1 ] && return 0
echo -e "\033[33m$1\033[0m"
}
echo_b () {
[ $# -ne 1 ] && return 0
echo -e "\033[34m$1\033[0m"
}
usage() {
sudo docker images
echo "Usage: $0 registry1:tag1 [registry2:tag2...]"
}
[ $# -lt 1 ] && usage && exit
echo_b "The registry server is $registry"
for image in "$@"
do
echo_b "Uploading $image..."
sudo docker tag $image $registry/$image
sudo docker push $registry/$image
sudo docker rmi $registry/$image
echo_g "Done"
done

View File

@@ -1,12 +1,15 @@
# 高级网络配置
>注意本章属于 `Docker` 高级配置如果您是初学者您可以暂时跳过本章节直接学习 [Docker Compose](../compose) 一节
本章将介绍 Docker 的一些高级网络配置和选项
Docker 启动时会自动在主机上创建一个 `docker0` 虚拟网桥实际上是 Linux 的一个 bridge可以理解为一个软件交换机它会在挂载到它的网口之间进行转发
同时Docker 随机分配一个本地未占用的私有网段 [RFC1918](http://tools.ietf.org/html/rfc1918) 中定义)中的一个地址给 `docker0` 接口。比如典型的 `172.17.42.1`,掩码为 `255.255.0.0`。此后启动的容器内的网口也会自动分配一个同一网段(`172.17.0.0/16`)的地址。
同时Docker 随机分配一个本地未占用的私有网段 [RFC1918](https://tools.ietf.org/html/rfc1918) 中定义)中的一个地址给 `docker0` 接口。比如典型的 `172.17.42.1`,掩码为 `255.255.0.0`。此后启动的容器内的网口也会自动分配一个同一网段(`172.17.0.0/16`)的地址。
当创建一个 Docker 容器的时候同时会创建了一对 `veth pair` 接口当数据包发送到一个接口时另外一个接口也可以收到相同的数据包这对接口一端在容器内 `eth0`另一端在本地并被挂载到 `docker0` 网桥名称以 `veth` 开头例如 `vethAQI2QT`通过这种方式主机可以跟容器通信容器之间也可以相互通信Docker 就创建了在主机和所有容器之间一个虚拟共享网络
![Docker 网络](../_images/network.png)
![Docker 网络](_images/network.png)
接下来的部分将介绍在一些场景中Docker 所有的网络定制配置以及通过 Linux 命令来调整补充甚至替换 Docker 默认的网络配置

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -4,12 +4,12 @@
### 容器访问外部网络
容器要想访问外部网络需要本地系统的转发支持在Linux 系统中检查转发是否打开
```
```bash
$sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
```
如果为 0说明没有开启转发则需要手动打开
```
```bash
$sysctl -w net.ipv4.ip_forward=1
```
如果在启动 Docker 服务的时候设定 `--ip-forward=true`, Docker 就会自动设定系统的 `ip_forward` 参数为 1
@@ -20,9 +20,9 @@ $sysctl -w net.ipv4.ip_forward=1
* 本地系统的防火墙软件 -- `iptables` 是否允许通过
#### 访问所有端口
当启动 Docker 服务时候默认会添加一条转发策略到 iptables FORWARD 链上策略为通过`ACCEPT`还是禁止`DROP`取决于配置`--icc=true`缺省值还是 `--icc=false`当然如果手动指定 `--iptables=false` 则不会添加 `iptables` 规则
当启动 Docker 服务 dockerd时候默认会添加一条转发策略到本地主机 iptables FORWARD 链上策略为通过`ACCEPT`还是禁止`DROP`取决于配置`--icc=true`缺省值还是 `--icc=false`当然如果手动指定 `--iptables=false` 则不会添加 `iptables` 规则
可见默认情况下不同容器之间是允许网络互通的如果为了安全考虑可以在 `/etc/default/docker` 文件中配置 `DOCKER_OPTS=--icc=false` 来禁止它
可见默认情况下不同容器之间是允许网络互通的如果为了安全考虑可以在 `/etc/docker/daemon.json` 文件中配置 `{"icc": false}` 来禁止它
#### 访问指定端口
在通过 `-icc=false` 关闭网络访问后还可以通过 `--link=CONTAINER_NAME:ALIAS` 选项来访问容器的开放端口
@@ -30,7 +30,7 @@ $sysctl -w net.ipv4.ip_forward=1
例如在启动 Docker 服务时可以同时使用 `icc=false --iptables=true` 参数来关闭允许相互的网络访问并让 Docker 可以修改系统中的 `iptables` 规则
此时系统中的 `iptables` 规则可能是类似
```
```bash
$ sudo iptables -nL
...
Chain FORWARD (policy ACCEPT)
@@ -39,10 +39,10 @@ DROP all -- 0.0.0.0/0 0.0.0.0/0
...
```
之后启动容器`docker run`时使用 `--link=CONTAINER_NAME:ALIAS` 选项Docker 会在 `iptable` 中为 两个容器分别添加一条 `ACCEPT` 规则允许相互访问开放的端口取决于 Dockerfile 中的 EXPOSE
之后启动容器`docker run`时使用 `--link=CONTAINER_NAME:ALIAS` 选项Docker 会在 `iptable` 中为 两个容器分别添加一条 `ACCEPT` 规则允许相互访问开放的端口取决于 `Dockerfile` 中的 `EXPOSE` 指令
当添加了 `--link=CONTAINER_NAME:ALIAS` 选项后添加了 `iptables` 规则
```
```bash
$ sudo iptables -nL
...
Chain FORWARD (policy ACCEPT)

View File

@@ -1,34 +1,45 @@
## 自定义网桥
除了默认的 `docker0` 网桥用户也可以指定网桥来连接各个容器
在启动 Docker 服务的时候使用 `-b BRIDGE``--bridge=BRIDGE` 来指定使用的网桥
如果服务已经运行那需要先停止服务并删除旧的网桥
```
$ sudo service docker stop
```bash
$ sudo systemctl stop docker
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0
```
然后创建一个网桥 `bridge0`
```
```bash
$ sudo brctl addbr bridge0
$ sudo ip addr add 192.168.5.1/24 dev bridge0
$ sudo ip link set dev bridge0 up
```
查看确认网桥创建并启动
```
```bash
$ ip addr show bridge0
4: bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default
link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.1/24 scope global bridge0
valid_lft forever preferred_lft forever
```
配置 Docker 服务默认桥接到创建的网桥上
```
$ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
$ sudo service docker start
Docker 配置文件 `/etc/docker/daemon.json` 中添加如下内容即可将 Docker 默认桥接到创建的网桥上
```json
{
"bridge": "bridge0",
}
```
启动 Docker 服务
新建一个容器可以看到它已经桥接到了 `bridge0`
可以继续用 `brctl show` 命令查看桥接的信息另外在容器中可以使用 `ip addr` `ip route` 命令来查看 IP 地址配置和路由信息

View File

@@ -1,5 +1,5 @@
## 编辑网络配置文件
Docker 1.2.0 开始支持在运行中的容器里编辑 `/etc/hosts`, `/etc/hostname` `/etc/resolve.conf` 文件
Docker 1.2.0 开始支持在运行中的容器里编辑 `/etc/hosts`, `/etc/hostname` `/etc/resolv.conf` 文件
但是这些修改是临时的只在运行的容器中保留容器终止或重启后并不会被保存下来也不会被 `docker commit` 提交
但是这些修改是临时的只在运行的容器中保留容器终止或重启后并不会被保存下来也不会被 `docker commit` 提交

View File

@@ -1,29 +0,0 @@
## 配置 DNS
Docker 没有为每个容器专门定制镜像那么怎么自定义配置容器的主机名和 DNS 配置呢
秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件
在容器中使用 mount 命令可以看到挂载信息
```
$ mount
...
/dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...
/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...
tmpfs on /etc/resolv.conf type tmpfs ...
...
```
这种机制可以让宿主主机 DNS 信息发生更新后所有 Docker 容器的 dns 配置通过 `/etc/resolv.conf` 文件立刻得到更新
如果用户想要手动指定容器的配置可以利用下面的选项
`-h HOSTNAME or --hostname=HOSTNAME`
设定容器的主机名它会被写到容器内的 `/etc/hostname` `/etc/hosts`但它在容器外部看不到既不会在 `docker ps` 中显示也不会在其他的容器的 `/etc/hosts` 看到
`--link=CONTAINER_NAME:ALIAS`
选项会在创建容器的时候添加一个其他容器的主机名到 `/etc/hosts` 文件中让新容器的进程可以使用主机名 ALIAS 就可以连接它
`--dns=IP_ADDRESS`
添加 DNS 服务器到容器的 `/etc/resolv.conf` 让容器用这个服务器来解析所有不在 `/etc/hosts` 中的主机名
`--dns-search=DOMAIN`
设定容器的搜索域当设定搜索域为 `.example.com` 在搜索一个名为 host 的主机时DNS 不仅搜索host还会搜索 `host.example.com`
注意如果没有上述最后 2 个选项Docker 会默认用主机上的 `/etc/resolv.conf` 来配置容器

View File

@@ -1,13 +1,17 @@
## 配置 docker0 网桥
Docker 服务默认会创建一个 `docker0` 网桥其上有一个 `docker0` 内部接口它在内核层连通了其他的物理或虚拟网卡这就将所有容器和本地主机都放到同一个物理网络
Docker 默认指定了 `docker0` 接口 IP 地址和子网掩码让主机和容器之间可以通过网桥相互通信它还给出了 MTU接口允许接收的最大传输单元通常是 1500 Bytes或宿主主机网络路由上支持的默认值这些值都可以在服务启动的时候进行配置
* `--bip=CIDR` -- IP 地址加掩码格式例如 192.168.1.5/24
* `--mtu=BYTES` -- 覆盖默认的 Docker mtu 配置
* `--bip=CIDR` IP 地址加掩码格式例如 192.168.1.5/24
* `--mtu=BYTES` 覆盖默认的 Docker mtu 配置
也可以在配置文件中配置 DOCKER_OPTS然后重启服务
由于目前 Docker 网桥是 Linux 网桥用户可以使用 `brctl show` 来查看网桥和端口连接信息
```
```bash
$ sudo brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.3a1d7362b4ee no veth65f9
@@ -17,7 +21,8 @@ docker0 8000.3a1d7362b4ee no veth65f9
每次创建一个新容器的时候Docker 从可用的地址段中选择一个空闲的 IP 地址分配给容器的 eth0 端口使用本地主机上 `docker0` 接口的 IP 作为所有容器的默认网关
```
```bash
$ sudo docker run -i -t --rm base /bin/bash
$ ip addr show eth0
24: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
@@ -29,5 +34,4 @@ $ ip addr show eth0
$ ip route
default via 172.17.42.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.3
$ exit
```

View File

@@ -1,11 +1,14 @@
## 映射容器端口到宿主主机的实现
默认情况下容器可以主动访问到外部网络的连接但是外部网络无法访问到容器
### 容器访问外部实现
容器所有到外部网络的连接源地址都会被NAT成本地系统的IP地址这是使用 `iptables` 的源地址伪装操作实现的
容器所有到外部网络的连接源地址都会被 NAT 成本地系统的 IP 地址这是使用 `iptables` 的源地址伪装操作实现的
查看主机的 NAT 规则
```
```bash
$ sudo iptables -t nat -nL
...
Chain POSTROUTING (policy ACCEPT)
@@ -13,6 +16,7 @@ target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 !172.17.0.0/16
...
```
其中上述规则将所有源地址在 `172.17.0.0/16` 网段目标地址为其他网段外部网络的流量动态伪装为从系统网卡发出MASQUERADE 跟传统 SNAT 的好处是它能动态从网卡获取地址
### 外部访问容器实现
@@ -22,7 +26,8 @@ MASQUERADE all -- 172.17.0.0/16 !172.17.0.0/16
不管用那种办法其实也是在本地的 `iptable` nat 表中添加相应的规则
使用 `-P`
```
```bash
$ iptables -t nat -nL
...
Chain DOCKER (2 references)
@@ -31,13 +36,22 @@ DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:49153 to:1
```
使用 `-p 80:80`
```
```bash
$ iptables -t nat -nL
Chain DOCKER (2 references)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.2:80
```
注意
* 这里的规则映射了 0.0.0.0意味着将接受主机来自所有接口的流量用户可以通过 `-p IP:host_port:container_port` `-p
IP::port` 来指定允许访问容器的主机上的 IP接口等以制定更严格的规则
* 如果希望永久绑定到某个固定的 IP 地址可以在 Docker 配置文件 `/etc/default/docker` 中指定 `DOCKER_OPTS="--ip=IP_ADDRESS"`之后重启 Docker 服务即可生效
* 这里的规则映射了 `0.0.0.0`意味着将接受主机来自所有接口的流量用户可以通过 `-p IP:host_port:container_port` `-p IP::port` 来指定允许访问容器的主机上的 IP接口等以制定更严格的规则
* 如果希望永久绑定到某个固定的 IP 地址可以在 Docker 配置文件 `/etc/docker/daemon.json` 中添加如下内容
```json
{
"ip": "0.0.0.0"
}
```

View File

@@ -6,18 +6,18 @@
解决办法很简单创建一对 `peer` 接口分别放到两个容器中配置成点到点链路类型即可
首先启动 2 个容器
```
$ sudo docker run -i -t --rm --net=none base /bin/bash
```bash
$ docker run -i -t --rm --net=none base /bin/bash
root@1f1f4c1f931a:/#
$ sudo docker run -i -t --rm --net=none base /bin/bash
$ docker run -i -t --rm --net=none base /bin/bash
root@12e343489d2f:/#
```
找到进程号然后创建网络命名空间的跟踪文件
```
$ sudo docker inspect -f '{{.State.Pid}}' 1f1f4c1f931a
```bash
$ docker inspect -f '{{.State.Pid}}' 1f1f4c1f931a
2989
$ sudo docker inspect -f '{{.State.Pid}}' 12e343489d2f
$ docker inspect -f '{{.State.Pid}}' 12e343489d2f
3004
$ sudo mkdir -p /var/run/netns
$ sudo ln -s /proc/2989/ns/net /var/run/netns/2989
@@ -25,7 +25,7 @@ $ sudo ln -s /proc/3004/ns/net /var/run/netns/3004
```
创建一对 `peer` 接口然后配置路由
```
```bash
$ sudo ip link add A type veth peer name B
$ sudo ip link set A netns 2989

View File

@@ -3,21 +3,24 @@
下面是一个跟 Docker 网络相关的命令列表
其中有些命令选项只有在 Docker 服务启动的时候才能配置而且不能马上生效
* `-b BRIDGE or --bridge=BRIDGE` --指定容器挂载的网桥
* `--bip=CIDR` --定制 docker0 的掩码
* `-H SOCKET... or --host=SOCKET...` --Docker 服务端接收命令的通道
* `--icc=true|false` --是否支持容器之间进行通信
* `--ip-forward=true|false` --请看下文容器之间的通信
* `--iptables=true|false` --是否允许 Docker 添加 iptables 规则
* `--mtu=BYTES` --容器网络中的 MTU
下面2个命令选项既可以在启动服务时指定也可以 Docker 容器启动`docker run`时候指定 Docker 服务启动的时候指定则会成为默认值后面执行 `docker run` 时可以覆盖设置的默认值
* `--dns=IP_ADDRESS...` --使用指定的DNS服务器
* `--dns-search=DOMAIN...` --指定DNS搜索域
* `-b BRIDGE` `--bridge=BRIDGE` 指定容器挂载的网桥
* `--bip=CIDR` 定制 docker0 的掩码
* `-H SOCKET...` `--host=SOCKET...` Docker 服务端接收命令的通道
* `--icc=true|false` 是否支持容器之间进行通信
* `--ip-forward=true|false` 请看下文容器之间的通信
* `--iptables=true|false` 是否允许 Docker 添加 iptables 规则
* `--mtu=BYTES` 容器网络中的 MTU
下面2个命令选项既可以在启动服务时指定也可以在启动容器时指定 Docker 服务启动的时候指定则会成为默认值后面执行 `docker run` 时可以覆盖设置的默认值
* `--dns=IP_ADDRESS...` 使用指定的DNS服务器
* `--dns-search=DOMAIN...` 指定DNS搜索域
最后这些选项只有在 `docker run` 执行时使用因为它是针对容器的特性内容
* `-h HOSTNAME or --hostname=HOSTNAME` --配置容器主机名
* `--link=CONTAINER_NAME:ALIAS` --添加到另一个容器的连接
* `--net=bridge|none|container:NAME_or_ID|host` --配置容器的桥接模式
* `-p SPEC or --publish=SPEC` --映射容器端口到宿主主机
* `-P or --publish-all=true|false` --映射容器所有端口到宿主主机
* `-h HOSTNAME` `--hostname=HOSTNAME` 配置容器主机名
* `--link=CONTAINER_NAME:ALIAS` 添加到另一个容器的连接
* `--net=bridge|none|container:NAME_or_ID|host` 配置容器的桥接模式
* `-p SPEC` `--publish=SPEC` 映射容器端口到宿主主机
* `-P or --publish-all=true|false` 映射容器所有端口到宿主主机

View File

@@ -0,0 +1 @@
# [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)

View File

@@ -1,126 +1,129 @@
# Docker 命令查询
## 基本语法
Docker 命令有两大类客户端命令和服务端命令前者是主要的操作接口后者用来启动 Docker daemon
Docker 命令有两大类客户端命令和服务端命令前者是主要的操作接口后者用来启动 Docker Daemon
* 客户端命令基本命令格式为 `docker [OPTIONS] COMMAND [arg...]`
* 服务端命令基本命令格式为 `docker daemon [OPTIONS]`
* 服务端命令基本命令格式为 `dockerd [OPTIONS]`
可以通过 `man docker` `docker help` 来查看这些命令
## 客户端命令选项
* --config=""指定客户端配置文件默认为 `/.docker`
* -D=true|false是否使用 debug 模式默认不开启
* -H, --host=[]指定命令对应 Docker daemon 的监听接口可以为 unix 套接字unix:///path/to/socket文件句柄fd://socketfd或 tcp 套接字(tcp://[host[:port]]),默认为 unix:///var/run/docker.sock
* -l, --log-level="debug|info|warn|error|fatal"指定日志输出级别
* --tls=true|false是否对 Docker daemon 启用 TLS 安全机制默认为否
* --tlscacert= /.docker/ca.pemTLS CA 签名的可信证书文件路径
* --tlscert= /.docker/cert.pemTLS 可信证书文件路径
* --tlscert= /.docker/key.pemTLS 密钥文件路径
* --tlsverify=true|false启用 TLS 校验默认为否
* `--config=""`指定客户端配置文件默认为 `~/.docker`
* `-D=true|false`是否使用 debug 模式默认不开启
* `-H, --host=[]`指定命令对应 Docker 守护进程的监听接口可以为 unix 套接字 `unix:///path/to/socket`文件句柄 `fd://socketfd` tcp 套接字 `tcp://[host[:port]]`默认为 `unix:///var/run/docker.sock`
* `-l, --log-level="debug|info|warn|error|fatal"`指定日志输出级别
* `--tls=true|false`是否对 Docker 守护进程启用 TLS 安全机制默认为否
* `--tlscacert=/.docker/ca.pem`TLS CA 签名的可信证书文件路径
* `--tlscert=/.docker/cert.pem`TLS 可信证书文件路径
* `--tlscert=/.docker/key.pem`TLS 密钥文件路径
* `--tlsverify=true|false`启用 TLS 校验默认为否
## daemon 命令选项
* --api-cors-header=""CORS 头部域默认不允许 CORS要允许任意的跨域访问可以指定为 *
* --authorization-plugin=""载入认证的插件
* -b=""将容器挂载到一个已存在的网桥上指定为 'none' 时则禁用容器的网络 --bip 选项互斥
* --bip=""让动态创建的 docker0 网桥采用给定的 CIDR 地址; -b 选项互斥
* --cgroup-parent=""指定 cgroup 的父组默认 fs cgroup 驱动为 `/docker`systemd cgroup 驱动为 `system.slice`
* --cluster-store=""构成集群 Swarm集群键值数据库服务地址
* --cluster-advertise=""构成集群自身的被访问地址可以为 `host:port` `interface:port`
* --cluster-store-opt=""构成集群时键值数据库的配置选项
* --config-file="/etc/docker/daemon.json"daemon 配置文件路径
* --containerd=""containerd 文件路径
* -D, --debug=true|false是否使用 Debug 模式缺省为 false
* --default-gateway=""容器的 IPv4 网关地址必须在网桥的子网段内
* --default-gateway-v6=""容器的 IPv6 网关地址
* --default-ulimit=[]默认 ulimit
* --disable-legacy-registry=true|false是否允许访问旧版本的镜像仓库服务器
* --dns=""指定容器使用的 DNS 服务器地址
* --dns-opt=""DNS 选项
* --dns-search=[]DNS 搜索域
* --exec-opt=[]运行时的执行选项
* --exec-root=""容器执行状态文件的根路径默认为 `/var/run/docker`
* --fixed-cidr=""限定分配 IPv4 地址范围
* --fixed-cidr-v6=""限定分配 IPv6 地址范围
* -G, --group=""分配 unix 套接字的组默认为 `docker`
* -g, --graph=""Docker 运行时的根路径默认为 `/var/lib/docker`
* -H, --host=[]指定命令对应 Docker daemon 的监听接口可以为 unix 套接字unix:///path/to/socket文件句柄fd://socketfd或 tcp 套接字tcp://[host[:port]]),默认为 unix:///var/run/docker.sock
* --icc=true|false是否启用容器间以及跟 daemon 所在主机的通信默认为 true
* --insecure-registry=[]允许访问给定的非安全仓库服务
* --ip=""绑定容器端口时候的默认 IP 地址缺省为 0.0.0.0
* --ip-forward=true|false是否检查启动在 Docker 主机上的启用 IP 转发服务默认开启注意关闭该选项将不对系统转发能力进行任何检查修改
* --ip-masq=true|false是否进行地址伪装用于容器访问外部网络默认开启
* --iptables=true|false是否允许 Docker 添加 iptables 规则缺省为 true
* --ipv6=true|false是否启用 IPv6 支持默认关闭
* -l, --log-level="debug|info|warn|error|fatal"指定日志输出级别
* --label="[]"添加指定的键值对标注
* --log-driver="json-file|syslog|journald|gelf|fluentd|awslogs|splunk|etwlogs|gcplogs|none"指定日志后端驱动默认为 json-file
* --log-opt=[]日志后端的选项
* --mtu=VALUE指定容器网络的 mtu
* -p=""指定 daemon PID 文件路径缺省为 `/var/run/docker.pid`
* --raw-logs输出原始未加色彩的日志信息
* --registry-mirror=<scheme>://<host>:指定 `docker pull` 时使用的注册服务器镜像地址
* -s, --storage-driver=""指定使用给定的存储后端
* --selinux-enabled=true|false是否启用 SELinux 支持缺省值为 falseSELinux 目前尚不支持 overlay 存储驱动
* --storage-opt=[]驱动后端选项
* --tls=true|false是否对 Docker daemon 启用 TLS 安全机制默认为否
* --tlscacert= /.docker/ca.pemTLS CA 签名的可信证书文件路径
* --tlscert= /.docker/cert.pemTLS 可信证书文件路径
* --tlscert= /.docker/key.pemTLS 密钥文件路径
* --tlsverify=true|false启用 TLS 校验默认为否
* --userland-proxy=true|false是否使用用户态代理来实现容器间和出容器的回环通信默认为 true
* --userns-remap=default|uid:gid|user:group|user|uid指定容器的用户命名空间默认是创建新的 UID GID 映射到容器内进程
## dockerd 命令选项
* `--api-cors-header=""`CORS 头部域默认不允许 CORS要允许任意的跨域访问可以指定为 "*"
* `--authorization-plugin=""`载入认证的插件
* `-b=""`将容器挂载到一个已存在的网桥上指定为 `none` 时则禁用容器的网络 `--bip` 选项互斥
* `--bip=""`让动态创建的 `docker0` 网桥采用给定的 CIDR 地址; `-b` 选项互斥
* `--cgroup-parent=""`指定 cgroup 的父组默认 fs cgroup 驱动为 `/docker`systemd cgroup 驱动为 `system.slice`
* `--cluster-store=""`构成集群 `Swarm`集群键值数据库服务地址
* `--cluster-advertise=""`构成集群时自身的被访问地址可以为 `host:port` `interface:port`
* `--cluster-store-opt=""`构成集群时键值数据库的配置选项
* `--config-file="/etc/docker/daemon.json"`daemon 配置文件路径
* `--containerd=""`containerd 文件的路径
* `-D, --debug=true|false`是否使用 Debug 模式缺省为 false
* `--default-gateway=""`容器的 IPv4 网关地址必须在网桥的子网段内
* `--default-gateway-v6=""`容器 IPv6 网关地址
* `--default-ulimit=[]`默认的 ulimit
* `--disable-legacy-registry=true|false`是否允许访问旧版本的镜像仓库服务器
* `--dns=""`指定容器使用的 DNS 服务器地址
* `--dns-opt=""`DNS 选项
* `--dns-search=[]`DNS 搜索域
* `--exec-opt=[]`运行时的执行选项
* `--exec-root=""`容器执行状态文件的根路径默认为 `/var/run/docker`
* `--fixed-cidr=""`限定分配 IPv4 地址范围
* `--fixed-cidr-v6=""`限定分配 IPv6 地址范围
* `-G, --group=""`分配给 unix 套接字的组默认为 `docker`
* `-g, --graph=""`Docker 运行时的根路径默认为 `/var/lib/docker`
* `-H, --host=[]`指定命令对应 Docker daemon 的监听接口可以为 unix 套接字 `unix:///path/to/socket`文件句柄 `fd://socketfd` tcp 套接字 `tcp://[host[:port]]`默认为 `unix:///var/run/docker.sock`
* `--icc=true|false`是否启用容器间以及跟 daemon 所在主机的通信默认为 true
* `--insecure-registry=[]`允许访问给定的非安全仓库服务
* `--ip=""`绑定容器端口时候的默认 IP 地址缺省为 `0.0.0.0`
* `--ip-forward=true|false`是否检查启动在 Docker 主机上的启用 IP 转发服务默认开启注意关闭该选项将不对系统转发能力进行任何检查修改
* `--ip-masq=true|false`是否进行地址伪装用于容器访问外部网络默认开启
* `--iptables=true|false`是否允许 Docker 添加 iptables 规则缺省为 true
* `--ipv6=true|false`是否启用 IPv6 支持默认关闭
* `-l, --log-level="debug|info|warn|error|fatal"`指定日志输出级别
* `--label="[]"`添加指定的键值对标注
* `--log-driver="json-file|syslog|journald|gelf|fluentd|awslogs|splunk|etwlogs|gcplogs|none"`指定日志后端驱动默认为 `json-file`
* `--log-opt=[]`日志后端的选项
* `--mtu=VALUE`指定容器网络的 `mtu`
* `-p=""`指定 daemon PID 文件路径缺省为 `/var/run/docker.pid`
* `--raw-logs`输出原始未加色彩的日志信息
* `--registry-mirror=<scheme>://<host>`指定 `docker pull` 时使用的注册服务器镜像地址
* `-s, --storage-driver=""`指定使用给定的存储后端
* `--selinux-enabled=true|false`是否启用 SELinux 支持缺省值为 falseSELinux 目前尚不支持 overlay 存储驱动
* `--storage-opt=[]`驱动后端选项
* `--tls=true|false`是否对 Docker daemon 启用 TLS 安全机制默认为否
* `--tlscacert=/.docker/ca.pem`TLS CA 签名的可信证书文件路径
* `--tlscert=/.docker/cert.pem`TLS 可信证书文件路径
* `--tlscert=/.docker/key.pem`TLS 密钥文件路径
* `--tlsverify=true|false`启用 TLS 校验默认为
* `--userland-proxy=true|false`是否使用用户态代理来实现容器间和出容器的回环通信默认为 true
* `--userns-remap=default|uid:gid|user:group|user|uid`指定容器的用户命名空间默认是创建新的 UID GID 映射到容器内进程
## 客户端命令
可以通过 `man docker-COMMAND` `docker help COMMAND` 来查看这些命令的具体用法
可以通过 `docker COMMAND --help` 来查看这些命令的具体用法
* attach依附到一个正在运行的容器中
* build从一个 Dockerfile 创建一个镜像
* commit从一个容器的修改中创建一个新的镜像
* cp在容器和本地宿主系统之间复制文件中
* create创建一个新容器但并不运行它
* diff检查一个容器内文件系统的修改包括修改和增加
* events从服务端获取实时的事件
* exec在运行的容器内执行命令
* export导出容器内容为一个 tar
* history显示一个镜像的历史信息
* images列出存在的镜像
* import导入一个文件典型为 tar 路径或目录来创建一个本地镜像
* info显示一些相关的系统信息
* inspect显示一个容器的具体配置信息
* kill关闭一个运行中的容器 (包括进程和所有相关资源)
* load从一个 tar 包中加载一个镜像
* login注册或登录到一个 Docker 的仓库服务器
* logout Docker 的仓库服务器登出
* logs获取容器的 log 信息
* network管理 Docker 的网络包括查看创建删除挂载卸载等
* node管理 swarm 集群中的节点包括查看更新删除提升/取消管理节点等
* pause暂停一个容器中的所有进程
* port查找一个 nat 到一个私有网口的公共口
* ps列出主机上的容器
* pull从一个Docker的仓库服务器下拉一个镜像或仓库
* push将一个镜像或者仓库推送到一个 Docker 的注册服务器
* rename重命名一个容器
* restart重启一个运行中的容器
* rm删除给定的若干个容器
* rmi删除给定的若干个镜像
* run创建一个新容器并在其中运行给定命令
* save保存一个镜像为 tar 包文件
* search Docker index 中搜索一个镜像
* service管理 Docker 所启动的应用服务包括创建更新删除等
* start启动一个容器
* stats输出一个或多个容器的资源使用统计信息
* stop终止一个运行中的容器
* swarm管理 Docker swarm 集群包括创建加入退出更新等
* tag为一个镜像打标签
* top查看一个容器中的正在运行的进程信息
* unpause将一个容器内所有的进程从暂停状态中恢复
* update更新指定的若干容器的配置信息
* version输出 Docker 的版本信息
* volume管理 Docker volume包括查看创建删除等
* wait阻塞直到一个容器终止然后输出它的退出符
* `attach`依附到一个正在运行的容器中
* `build`从一个 Dockerfile 创建一个镜像
* `commit`从一个容器的修改中创建一个新的镜像
* `cp`在容器和本地宿主系统之间复制文件中
* `create`创建一个新容器但并不运行它
* `diff`检查一个容器内文件系统的修改包括修改和增加
* `events`从服务端获取实时的事件
* `exec`在运行的容器内执行命令
* `export`导出容器内容为一个 `tar`
* `history`显示一个镜像的历史信息
* `images`列出存在的镜像
* `import`导入一个文件典型为 `tar` 路径或目录来创建一个本地镜像
* `info`显示一些相关的系统信息
* `inspect`显示一个容器的具体配置信息
* `kill`关闭一个运行中的容器 (包括进程和所有相关资源)
* `load`从一个 tar 包中加载一个镜像
* `login`注册或登录到一个 Docker 的仓库服务器
* `logout` Docker 的仓库服务器登出
* `logs`获取容器的 log 信息
* `network`管理 Docker 的网络包括查看创建删除挂载卸载等
* `node`管理 swarm 集群中的节点包括查看更新删除提升/取消管理节点等
* `pause`暂停一个容器中的所有进程
* `port`查找一个 nat 到一个私有网口的公共口
* `ps`列出主机上的容器
* `pull`从一个Docker的仓库服务器下拉一个镜像或仓库
* `push`将一个镜像或者仓库推送到一个 Docker 的注册服务器
* `rename`重命名一个容器
* `restart`重启一个运行中的容器
* `rm`删除给定的若干个容器
* `rmi`删除给定的若干个镜像
* `run`创建一个新容器并在其中运行给定命令
* `save`保存一个镜像为 tar 包文件
* `search` Docker index 中搜索一个镜像
* `service`管理 Docker 所启动的应用服务包括创建更新删除等
* `start`启动一个容器
* `stats`输出一个或多个容器的资源使用统计信息
* `stop`终止一个运行中的容器
* `swarm`管理 Docker swarm 集群包括创建加入退出更新等
* `tag`为一个镜像打标签
* `top`查看一个容器中的正在运行的进程信息
* `unpause`将一个容器内所有的进程从暂停状态中恢复
* `update`更新指定的若干容器的配置信息
* `version`输出 Docker 的版本信息
* `volume`管理 Docker volume包括查看创建删除等
* `wait`阻塞直到一个容器终止然后输出它的退出符
## 一张图总结 Docker 的命令
![Docker 命令总结](../_images/cmd_logic.png)

42
appendix/debug.md Normal file
View File

@@ -0,0 +1,42 @@
# 如何调试 Docker
## 开启 Debug 模式
dockerd 配置文件 daemon.json默认位于 /etc/docker/中添加
```json
{
"debug": true
}
```
重启守护进程
```bash
$ sudo kill -SIGHUP $(pidof dockerd)
```
此时 dockerd 会在日志中输入更多信息供分析
## 检查内核日志
```bash
$ sudo dmesag |grep dockerd
$ sudo dmesag |grep runc
```
## Docker 不响应时处理
可以杀死 dockerd 进程查看其堆栈调用情况
```bash
$ sudo kill -SIGUSR1 $(pidof dockerd)
```
## 重置 Docker 本地数据
*注意本操作会移除所有的 Docker 本地数据包括镜像和容器等*
```bash
$ sudo rm -rf /var/lib/docker
```

View File

@@ -1,99 +1,111 @@
# 常见问题总结
## 镜像相关
### 如何批量清理临时镜像文件
可以使用 `docker rmi $(docker images -q -f dangling=true)` 命令
### 如何批量清理临时镜像文件
可以使用 `docker image prune` 命令
### 如何查看镜像支持的环境变量
可以使用 `docker run IMAGE env` 命令
### 本地的镜像文件都存放在哪里
Docker 相关的本地资源都存放在 `/var/lib/docker/` 目录下 aufs 文件系统为例其中 container 目录存放容器信息graph 目录存放镜像信息aufs 目录下存放具体的镜像层文件
Docker 相关的本地资源默认存放在 `/var/lib/docker/` 目录下 `aufs` 文件系统为例其中 `container` 目录存放容器信息`graph` 目录存放镜像信息`aufs` 目录下存放具体的镜像层文件
### 构建 Docker 镜像应该遵循哪些原则
整体原则上尽量保持镜像功能的明确和内容的精简要点包括
* 尽量选取满足需求但较小的基础系统镜像例如大部分时候可以选择 debian:wheezy debian:jessie 镜像仅有不足百兆大小;
* 尽量选取满足需求但较小的基础系统镜像例如大部分时候可以选择 debian:wheezy debian:stretch 镜像仅有不足百兆大小
* 清理编译生成文件安装包的缓存等临时文件
* 安装各个软件时候要指定准确的版本号并避免引入不需要的依赖
* 从安全角度考虑应用要尽量使用系统的库和依赖
* 如果安装应用时候需要配置一些特殊的环境变量在安装后要还原不需要保持的变量值
* 使用 Dockerfile 创建镜像时候要添加 .dockerignore 文件或使用干净的工作目录
更多内容请查看 [Dockerfile 最佳实践](../best_practices.md)
### 碰到网络问题无法 pull 镜像命令行指定 http_proxy 无效
Docker 配置文件中添加 `export http_proxy="http://<PROXY_HOST>:<PROXY_PORT>"`之后重启 Docker 服务即可
## 容器相关
### 容器退出后通过 docker ps 命令查看不到数据会丢失么
容器退出后会处于终止exited状态此时可以通过 `docker ps -a` 查看其中的数据也不会丢失还可以通过 `docker start` 命令来启动它只有删除掉容器才会清除所有数据
### 如何停止所有正在运行的容器
可以使用 `docker kill $(docker ps -q)` 命令
### 容器退出后通过 docker container ls 命令查看不到数据会丢失么
### 如何清理批量后台停止的容器
可以使用 `docker rm -f $(docker ps -qa)` 命令
容器退出后会处于终止exited状态此时可以通过 `docker container ls -a` 查看其中的数据也不会丢失还可以通过 `docker start` 命令来启动它只有删除掉容器才会清除所有数据
### 如何停止所有正在运行的容器
可以使用 `docker stop $(docker container ls -q)` 命令
### 如何批量清理已经停止的容器
可以使用 `docker container prune` 命令
### 如何获取某个容器的 PID 信息
可以使用 `docker inspect --format '{{ .State.Pid }}' <CONTAINER ID or NAME>` 命令
### 如何获取某个容器的 IP 地址
可以使用 `docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID or NAME>` 命令
### 如何给容器指定一个固定 IP 地址而不是每次重启容器 IP 地址都会变
目前 Docker 并没有提供直接的对容器 IP 地址的管理支持用户可以考虑参考第三部分中高级网络配置章节中介绍的创建点对点连接例子来手动配置容器的静态 IP或者在启动容器后再手动进行修改可参考其它类的问题 *如何进入 Docker 容器的网络命名空间*
使用以下命令启动容器可以使容器 IP 固定不变
```bash
$ docker network create -d bridge --subnet 172.25.0.0/16 my-net
$ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox
```
### 如何临时退出一个正在交互的容器的终端而不终止它
`Ctrl-p Ctrl-q`如果按 `Ctrl-c` 往往会让容器内应用进程终止进而会终止容器
### 使用 `docker port` 命令映射容器的端口时系统报错Error: No public port '80' published for xxx
* 创建镜像时 Dockerfile 要通过 EXPOSE 指定正确的开放端口
* 创建镜像时 `Dockerfile` 要通过 `EXPOSE` 指定正确的开放端口
* 容器启动时指定 `PublishAllPort = true`
### 可以在一个容器中同时运行多个应用进程么
一般并不推荐在同一个容器内运行多个应用进程如果有类似需求可以通过一些额外的进程管理机制比如 supervisord 来管理所运行的进程可以参考 https://docs.docker.com/articles/using_supervisord/。
一般并不推荐在同一个容器内运行多个应用进程如果有类似需求可以通过一些额外的进程管理机制比如 `supervisord` 来管理所运行的进程可以参考 https://docs.docker.com/config/containers/multi-service_container/ 。
### 如何控制容器占用系统资源CPU内存的份额
在使用 `docker create` 命令创建容器或使用 `docker run` 创建并启动容器的时候可以使用 -c|--cpu-shares[=0] 参数来调整容器使用 CPU 的权重使用 -m|--memory[=MEMORY] 参数来调整容器使用内存的大小
## 仓库相关
### 仓库Repository注册服务器Registry注册索引Index 有何关系
首先仓库是存放一组关联镜像的集合比如同一个应用的不同版本的镜像
注册服务器是存放实际的镜像文件的地方注册索引则负责维护用户的账号权限搜索标签等的管理因此注册服务器利用注册索引来实现认证等管理
### 从非官方仓库例如 non-official-repo.com下载镜像时候有时候会提示Error: Invalid registry endpoint https://non-official-repo.com/v1/……”?
Docker 1.3.0 版本往后加强了对镜像安全性的验证需要添加私有仓库证书或者手动添加对非官方仓库的信任
编辑 Docker 配置文件在其中添加
```sh
DOCKER_OPTS="--insecure-registry non-official-repo"
```
之后重启 Docker 服务即可
## 配置相关
### Docker 的配置文件放在哪里如何修改配置
使用 upstart 的系统如Ubuntu 14.04的配置文件在 `/etc/default/docker`使用systemd 的系统 Ubuntu 16.04Centos 的配置文件在 `/etc/systemd/system/docker.service.d/docker.conf`
Ubuntu 下面的配置文件内容如下读者可以参考配如果出现该文件不存在的情况重启或者自己新建一个文件都可以解决
使用 `systemd` 的系统 Ubuntu 16.04Centos 的配置文件在 `/etc/docker/daemon.json`
```sh
# Customize location of Docker binary (especially for development testing).
#DOCKERD="/usr/local/bin/dockerd"
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"
# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"
```
### 如何更改 Docker 的默认存储位置
Docker 的默认存储位置是 `/var/lib/docker`如果希望将 Docker 的本地文件存储到其他分区可以使用 Linux 软连接的方式来完成或者在启动 daemon 时通过 `-g` 参数指定
Docker 的默认存储位置是 `/var/lib/docker`如果希望将 Docker 的本地文件存储到其他分区可以使用 Linux 软连接的方式来完成或者在启动 daemon 时通过 `-g` 参数指定或者修改配置文件 `/etc/docker/daemon.json` "data-root" 可以使用 `docker system info | grep "Root Dir"` 查看当前使用的存储位置
例如如下操作将默认存储位置迁移到 /storage/docker
@@ -114,16 +126,20 @@ lrwxrwxrwx. 1 root root 15 11月 17 13:43 docker -> /storage/docker
[root@s26 lib]# service docker start
```
### 使用内存和 swap 限制启动容器时候报警告WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
### 使用内存和 swap 限制启动容器时候报警告"WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded."
这是因为系统默认没有开启对内存和 swap 使用的统计功能引入该功能会带来性能的下降要开启该功能可以采取如下操作
* 编辑 `/etc/default/grub` 文件Ubuntu 系统为例配置 `GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"`
* 更新 grub`$ sudo update-grub`
* 编辑 `/etc/default/grub` 文件Ubuntu 系统为例配置 `GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"`
* 更新 grub`$ sudo update-grub`
* 重启系统即可
## Docker 与虚拟化
### Docker LXCLinux Container有何不同
LXC 利用 Linux 上相关技术实现了容器Docker 则在如下的几个方面进行了改进
* 移植性通过抽象容器配置容器可以实现从一个平台移植到另一个平台
* 镜像系统基于 AUFS 的镜像系统为容器的分发带来了很多的便利同时共同的镜像层只需要存储一份实现高效率的存储
@@ -132,6 +148,7 @@ lrwxrwxrwx. 1 root root 15 11月 17 13:43 docker -> /storage/docker
* 周边工具各种现有工具配置管理云平台 Docker 的支持以及基于 Docker的 PaaSCI 等系统 Docker 的应用更加方便和多样化
### Docker Vagrant 有何不同
两者的定位完全不同
* Vagrant 类似 Boot2Docker一款运行 Docker 的最小内核是一套虚拟机的管理环境Vagrant 可以在多种系统上和虚拟机软件中运行可以在 WindowsMac 等非 Linux 平台上为 Docker 提供支持自身具有较好的包装性和移植性
@@ -141,52 +158,57 @@ lrwxrwxrwx. 1 root root 15 11月 17 13:43 docker -> /storage/docker
简单说Vagrant 适合用来管理虚拟机 Docker 适合用来管理应用环境
### 开发环境中 Docker Vagrant 该如何选择
Docker 不是虚拟机而是进程隔离对于资源的消耗很少但是目前需要 Linux 环境支持Vagrant 是虚拟机上做的封装虚拟机本身会消耗资源
Docker 不是虚拟机而是进程隔离对于资源的消耗很少但是目前需要 Linux 环境支持Vagrant 是虚拟机上做的封装虚拟机本身会消耗资源
如果本地使用的 Linux 环境推荐都使用 Docker
如果本地使用的是 OSX 或者 Windows 环境那就需要开虚拟机单一开发环境下 Vagrant 更简单多环境开发下推荐在 Vagrant 里面再使用 Docker 进行环境隔离
如果本地使用的是 macOS 或者 Windows 环境那就需要开虚拟机单一开发环境下 Vagrant 更简单多环境开发下推荐在 Vagrant 里面再使用 Docker 进行环境隔离
## 其它
### Docker 能在非 Linux 平台比如 Windows MacOS上运行么
可以目前需要使用 docker for macboot2docker 等软件创建一个轻量级的 Linux 虚拟机层
### Docker 能在非 Linux 平台比如 Windows macOS 上运行么
完全可以安装方法请查看 [安装 Docker](../../install/) 一节
### 如何将一台宿主主机的 Docker 环境迁移到另外一台宿主主机
### 如何将一台宿主主机的 docker 环境迁移到另外一台宿主主机
停止 Docker 服务将整个 Docker 存储文件夹复制到另外一台宿主主机然后调整另外一台宿主主机的配置即可
### 如何进入 Docker 容器的网络命名空间
Docker 在创建容器后删除了宿主主机上 `/var/run/netns` 目录中的相关的网络命名空间文件因此在宿主主机上是无法看到或访问容器的网络命名空间的
用户可以通过如下方法来手动恢复它
首先使用下面的命令查看容器进程信息比如这里的1234
首先使用下面的命令查看容器进程信息比如这里的 1234
```sh
```bash
$ docker inspect --format='{{. State.Pid}} ' $container_id
1234
```
接下来 /proc 目录下把对应的网络命名空间文件链接到 /var/run/netns 目录
```sh
接下来 `/proc` 目录下把对应的网络命名空间文件链接到 `/var/run/netns` 目录
```bash
$ sudo ln -s /proc/1234/ns/net /var/run/netns/
```
然后在宿主主机上就可以看到容器的网络命名空间信息例如
```sh
```bash
$ sudo ip netns show
1234
```
此时用户可以通过正常的系统命令来查看或操作容器的命名空间了例如修改容器的 IP 地址信息为 `172.17.0.100/16`
```sh
```bash
$ sudo ip netns exec 1234 ifconfig eth0 172.17.0.100/16
```
### 如何获取容器绑定到本地那个 veth 接口上
Docker 容器启动后会通过 veth 接口对连接到本地网桥veth 接口命名跟容器命名毫无关系十分难以找到对应关系
最简单的一种方式是通过查看接口的索引号在容器中执行 `ip a` 命令查看到本地接口最前面的接口索引号 `205`将此值加上 1 `206`然后在本地主机执行 `ip a` 命令查找接口索引号为 `206` 的接口两者即为连接的 veth 接口对

View File

@@ -1,2 +1,3 @@
# 热门镜像介绍
本章将介绍一些热门镜像的功能使用方法和生成它们的 Dockerfile 包括 UbuntuCentOSMySQLMongoDBRedisNginxWordpressNode.js
本章将介绍一些热门镜像的功能使用方法等包括 UbuntuCentOSMySQLMongoDBRedisNginxWordpressNode.js

View File

@@ -1,58 +1,20 @@
## [CentOS](https://hub.docker.com/_/centos/)
## [CentOS](https://hub.docker.com/_/centos)
### 基本信息
[CentOS](https://en.wikipedia.org/wiki/CentOS) 是流行的 Linux 发行版,其软件包大多跟 RedHat 系列保持一致。
该仓库位于 https://hub.docker.com/_/centos/,提供了 CentOS 从 5 ~ 7 各个版本的镜像。
该仓库位于 `https://hub.docker.com/_/centos` 提供了 CentOS 5 ~ 7 各个版本的镜像
### 使用方法
默认会启动一个最小化的 CentOS 环境
```sh
$ docker run --name some-centos -i -t centos bash
```bash
$ docker run --name centos -it centos bash
bash-4.2#
```
### Dockerfile
#### CentOS 5 版本
```
FROM scratch
MAINTAINER The CentOS Project <cloud-ops@centos.org>
ADD c5-docker.tar.xz /
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="2016-03-31"
# Default command
CMD ["/bin/bash"]
```
#### CentOS 6 版本
```
FROM scratch
MAINTAINER https://github.com/CentOS/sig-cloud-instance-images
ADD centos-6-docker.tar.xz /
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="20160729"
CMD ["/bin/bash"]
```
#### CentOS 7 版本
```
FROM scratch
MAINTAINER https://github.com/CentOS/sig-cloud-instance-images
ADD centos-7-docker.tar.xz /
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="20160729"
CMD ["/bin/bash"]
```
请到 https://github.com/docker-library/docs/tree/master/centos 查看。

View File

@@ -1,263 +1,34 @@
## [MongoDB](https://hub.docker.com/_/mongo/)
### 基本信息
[MongoDB](https://en.wikipedia.org/wiki/MongoDB) 是开源的 NoSQL 数据库实现。
该仓库位于 https://hub.docker.com/_/mongo/,提供了 MongoDB 2.x ~ 3.x 各个版本的镜像。
该仓库位于 `https://hub.docker.com/_/mongo/` 提供了 MongoDB 2.x ~ 4.x 各个版本的镜像
### 使用方法
默认会在 `27017` 端口启动数据库
```sh
$ docker run --name some-mongo -d mongo
```bash
$ docker run --name mongo -d mongo
```
使用其他应用连接到容器可以用
```sh
```bash
$ docker run --name some-app --link some-mongo:mongo -d application-that-uses-mongo
```
或者通过 `mongo`
```sh
$ docker run -it --link some-mongo:mongo --rm mongo sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'
```bash
$ docker run -it --rm \
--link some-mongo:mongo \
mongo \
sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'
```
### Dockerfile
#### 2.6 版本
```
FROM debian:wheezy
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mongodb && useradd -r -g mongodb mongodb
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates wget \
numactl \
&& rm -rf /var/lib/apt/lists/*
# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true
ENV MONGO_VERSION 2.6.12
RUN set -x \
&& wget -O mongo.tgz "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-$MONGO_VERSION.tgz" \
&& wget -O mongo.tgz.sig "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-$MONGO_VERSION.tgz.sig" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys DFFA3DCF326E302C4787673A01C4E7FAAAB2461C \
&& gpg --batch --verify mongo.tgz.sig mongo.tgz \
&& rm -r "$GNUPGHOME" mongo.tgz.sig \
&& tar -xvf mongo.tgz -C /usr/local --strip-components=1 \
&& rm mongo.tgz
RUN mkdir -p /data/db /data/configdb \
&& chown -R mongodb:mongodb /data/db /data/configdb
VOLUME /data/db /data/configdb
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
```
#### 3.0 版本
```
FROM debian:wheezy
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mongodb && useradd -r -g mongodb mongodb
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
numactl \
&& rm -rf /var/lib/apt/lists/*
# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true \
&& apt-get purge -y --auto-remove ca-certificates wget
# gpg: key 7F0CEB10: public key "Richard Kreuter <richard@10gen.com>" imported
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10
ENV MONGO_MAJOR 3.0
ENV MONGO_VERSION 3.0.12
RUN echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/$MONGO_MAJOR main" > /etc/apt/sources.list.d/mongodb-org.list
RUN set -x \
&& apt-get update \
&& apt-get install -y \
mongodb-org=$MONGO_VERSION \
mongodb-org-server=$MONGO_VERSION \
mongodb-org-shell=$MONGO_VERSION \
mongodb-org-mongos=$MONGO_VERSION \
mongodb-org-tools=$MONGO_VERSION \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/lib/mongodb \
&& mv /etc/mongod.conf /etc/mongod.conf.orig
RUN mkdir -p /data/db /data/configdb \
&& chown -R mongodb:mongodb /data/db /data/configdb
VOLUME /data/db /data/configdb
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
```
#### 3.2 版本
```
FROM debian:wheezy
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mongodb && useradd -r -g mongodb mongodb
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
numactl \
&& rm -rf /var/lib/apt/lists/*
# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true \
&& apt-get purge -y --auto-remove ca-certificates wget
# pub 4096R/AAB2461C 2014-02-25 [expires: 2016-02-25]
# Key fingerprint = DFFA 3DCF 326E 302C 4787 673A 01C4 E7FA AAB2 461C
# uid MongoDB 2.6 Release Signing Key <packaging@mongodb.com>
#
# pub 4096R/EA312927 2015-10-09 [expires: 2017-10-08]
# Key fingerprint = 42F3 E95A 2C4F 0827 9C49 60AD D68F A50F EA31 2927
# uid MongoDB 3.2 Release Signing Key <packaging@mongodb.com>
#
ENV GPG_KEYS \
DFFA3DCF326E302C4787673A01C4E7FAAAB2461C \
42F3E95A2C4F08279C4960ADD68FA50FEA312927
RUN set -ex \
&& for key in $GPG_KEYS; do \
apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
ENV MONGO_MAJOR 3.2
ENV MONGO_VERSION 3.2.8
RUN echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/$MONGO_MAJOR main" > /etc/apt/sources.list.d/mongodb-org.list
RUN set -x \
&& apt-get update \
&& apt-get install -y \
mongodb-org=$MONGO_VERSION \
mongodb-org-server=$MONGO_VERSION \
mongodb-org-shell=$MONGO_VERSION \
mongodb-org-mongos=$MONGO_VERSION \
mongodb-org-tools=$MONGO_VERSION \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/lib/mongodb \
&& mv /etc/mongod.conf /etc/mongod.conf.orig
RUN mkdir -p /data/db /data/configdb \
&& chown -R mongodb:mongodb /data/db /data/configdb
VOLUME /data/db /data/configdb
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
```
#### 3.3 版本
```
FROM debian:jessie
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mongodb && useradd -r -g mongodb mongodb
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
numactl \
&& rm -rf /var/lib/apt/lists/*
# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true \
&& apt-get purge -y --auto-remove ca-certificates wget
# pub 4096R/A15703C6 2016-01-11 [expires: 2018-01-10]
# Key fingerprint = 0C49 F373 0359 A145 1858 5931 BC71 1F9B A157 03C6
# uid MongoDB 3.4 Release Signing Key <packaging@mongodb.com>
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 0C49F3730359A14518585931BC711F9BA15703C6
ENV MONGO_MAJOR 3.3
ENV MONGO_VERSION 3.3.10
RUN echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/$MONGO_MAJOR main" > /etc/apt/sources.list.d/mongodb-org.list
RUN set -x \
&& apt-get update \
&& apt-get install -y \
mongodb-org-unstable=$MONGO_VERSION \
mongodb-org-unstable-server=$MONGO_VERSION \
mongodb-org-unstable-shell=$MONGO_VERSION \
mongodb-org-unstable-mongos=$MONGO_VERSION \
mongodb-org-unstable-tools=$MONGO_VERSION \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/lib/mongodb \
&& mv /etc/mongod.conf /etc/mongod.conf.orig
RUN mkdir -p /data/db /data/configdb \
&& chown -R mongodb:mongodb /data/db /data/configdb
VOLUME /data/db /data/configdb
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
```
请到 https://github.com/docker-library/docs/tree/master/mongo 查看。

View File

@@ -1,124 +1,34 @@
## [MySQL](https://hub.docker.com/_/mysql/)
### 基本信息
[MySQL](https://en.wikipedia.org/wiki/MySQL) 是开源的关系数据库实现。
该仓库位于 https://hub.docker.com/_/mysql/,提供了 MySQL 各个版本的镜像,包括 5.6 系列、5.7 系列等
该仓库位于 `https://hub.docker.com/_/mysql/` 提供了 MySQL 5.5 ~ 8.x 各个版本的镜像
### 使用方法
默认会在 `3306` 端口启动数据库
```
```bash
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
```
之后就可以使用其它应用来连接到该容器
```
```bash
$ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
```
或者通过 `mysql`
```
$ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
或者通过 `mysql` 命令行连接
```bash
$ docker run -it --rm \
--link some-mysql:mysql \
mysql \
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
```
### Dockerfile
#### 5.6 版本
```
FROM debian:wheezy
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mysql && useradd -r -g mysql mysql
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
# File::Basename
# File::Copy
# Sys::Hostname
# Data::Dumper
RUN apt-get update && apt-get install -y perl --no-install-recommends && rm -rf /var/lib/apt/lists/*
# mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
RUN apt-get update && apt-get install -y libaio1 && rm -rf /var/lib/apt/lists/*
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
RUN gpg --keyserver pgp.mit.edu --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5
ENV MYSQL_MAJOR 5.6
ENV MYSQL_VERSION 5.6.20
# note: we're pulling the *.asc file from mysql.he.net instead of dev.mysql.com because the official mirror 404s that file for whatever reason - maybe it's at a different path?
RUN apt-get update && apt-get install -y curl --no-install-recommends && rm -rf /var/lib/apt/lists/* \
&& curl -SL "http://dev.mysql.com/get/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz" -o mysql.tar.gz \
&& curl -SL "http://mysql.he.net/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz.asc" -o mysql.tar.gz.asc \
&& apt-get purge -y --auto-remove curl \
&& gpg --verify mysql.tar.gz.asc \
&& mkdir /usr/local/mysql \
&& tar -xzf mysql.tar.gz -C /usr/local/mysql --strip-components=1 \
&& rm mysql.tar.gz* \
&& rm -rf /usr/local/mysql/mysql-test /usr/local/mysql/sql-bench \
&& rm -rf /usr/local/mysql/bin/*-debug /usr/local/mysql/bin/*_embedded \
&& find /usr/local/mysql -type f -name "*.a" -delete \
&& apt-get update && apt-get install -y binutils && rm -rf /var/lib/apt/lists/* \
&& { find /usr/local/mysql -type f -executable -exec strip --strip-all '{}' + || true; } \
&& apt-get purge -y --auto-remove binutils
ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts
WORKDIR /usr/local/mysql
VOLUME /var/lib/mysql
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 3306
CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]
```
#### 5.7 版本
```
FROM debian:wheezy
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mysql && useradd -r -g mysql mysql
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
# File::Basename
# File::Copy
# Sys::Hostname
# Data::Dumper
RUN apt-get update && apt-get install -y perl --no-install-recommends && rm -rf /var/lib/apt/lists/*
# mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
RUN apt-get update && apt-get install -y libaio1 && rm -rf /var/lib/apt/lists/*
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
RUN gpg --keyserver pgp.mit.edu --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5
ENV MYSQL_MAJOR 5.7
ENV MYSQL_VERSION 5.7.4-m14
# note: we're pulling the *.asc file from mysql.he.net instead of dev.mysql.com because the official mirror 404s that file for whatever reason - maybe it's at a different path?
RUN apt-get update && apt-get install -y curl --no-install-recommends && rm -rf /var/lib/apt/lists/* \
&& curl -SL "http://dev.mysql.com/get/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz" -o mysql.tar.gz \
&& curl -SL "http://mysql.he.net/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz.asc" -o mysql.tar.gz.asc \
&& apt-get purge -y --auto-remove curl \
&& gpg --verify mysql.tar.gz.asc \
&& mkdir /usr/local/mysql \
&& tar -xzf mysql.tar.gz -C /usr/local/mysql --strip-components=1 \
&& rm mysql.tar.gz* \
&& rm -rf /usr/local/mysql/mysql-test /usr/local/mysql/sql-bench \
&& rm -rf /usr/local/mysql/bin/*-debug /usr/local/mysql/bin/*_embedded \
&& find /usr/local/mysql -type f -name "*.a" -delete \
&& apt-get update && apt-get install -y binutils && rm -rf /var/lib/apt/lists/* \
&& { find /usr/local/mysql -type f -executable -exec strip --strip-all '{}' + || true; } \
&& apt-get purge -y --auto-remove binutils
ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts
WORKDIR /usr/local/mysql
VOLUME /var/lib/mysql
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 3306
CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]
```
请到 https://github.com/docker-library/docs/tree/master/mysql 查看

View File

@@ -1,101 +1,48 @@
## [Nginx](https://hub.docker.com/_/nginx/)
### 基本信息
[Nginx](https://en.wikipedia.org/wiki/Nginx) 是开源的高效的 Web 服务器实现,支持 HTTP、HTTPS、SMTP、POP3、IMAP 等协议。
该仓库位于 https://hub.docker.com/_/nginx/,提供了 Nginx 1.0 ~ 1.11.x 各个版本的镜像。
该仓库位于 `https://hub.docker.com/_/nginx/` 提供了 Nginx 1.0 ~ 1.17.x 各个版本的镜像
### 使用方法
下面的命令将作为一个静态页面服务器启动
```
```bash
$ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
```
用户也可以不使用这种映射方式通过利用 Dockerfile 来直接将静态页面内容放到镜像中内容为
```
```bash
FROM nginx
COPY static-html-directory /usr/share/nginx/html
```
之后生成新的镜像并启动一个容器
```
```bash
$ docker build -t some-content-nginx .
$ docker run --name some-nginx -d some-content-nginx
```
开放端口并映射到本地的 `8080` 端口
```
docker run --name some-nginx -d -p 8080:80 some-content-nginx
```bash
$ docker run --name some-nginx -d -p 8080:80 some-content-nginx
```
Nginx的默认配置文件路径为 `/etc/nginx/nginx.conf`可以通过映射它来使用本地的配置文件例如
```bash
$ docker run -d \
--name some-nginx \
-v /some/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx
```
docker run --name some-nginx -v /some/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
```
使用配置文件时为了在容器中正常运行需要保持 `daemon off;`
### Dockerfile
#### stable 版本
```
FROM debian:jessie
MAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"
ENV NGINX_VERSION 1.10.1-1~jessie
RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
&& echo "deb http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
ca-certificates \
nginx=${NGINX_VERSION} \
nginx-module-xslt \
nginx-module-geoip \
nginx-module-image-filter \
nginx-module-perl \
nginx-module-njs \
gettext-base \
&& rm -rf /var/lib/apt/lists/*
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
```
#### 1.11.x 版本
```
FROM debian:jessie
MAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"
ENV NGINX_VERSION 1.11.1-1~jessie
RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
&& echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
ca-certificates \
nginx=${NGINX_VERSION} \
nginx-module-xslt \
nginx-module-geoip \
nginx-module-image-filter \
nginx-module-perl \
nginx-module-njs \
gettext-base \
&& rm -rf /var/lib/apt/lists/*
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
```
请到 https://github.com/docker-library/docs/tree/master/nginx 查看。

View File

@@ -1,151 +1,40 @@
## [Node.js](https://hub.docker.com/_/node/)
### 基本信息
[Node.js](https://en.wikipedia.org/wiki/Node.js)是基于 JavaScript 的可扩展服务端和网络软件开发平台。
该仓库位于 https://hub.docker.com/_/node/,提供了 Node.js 0.10 ~ 6.3.x 各个版本的镜像
[Node.js](https://en.wikipedia.org/wiki/Node.js) 是基于 JavaScript 的可扩展服务端和网络软件开发平台
该仓库位于 `https://hub.docker.com/_/node/` 提供了 Node.js 0.10 ~ 12.x 各个版本的镜像
### 使用方法
在项目中创建一个 Dockerfile
```
FROM node:0.10-onbuild
```bash
FROM node:9
# replace this with your application's default port
EXPOSE 8888
```
然后创建镜像并启动容器
```
```bash
$ docker build -t my-nodejs-app
$ docker run -it --rm --name my-running-app my-nodejs-app
```
也可以直接运行一个简单容器
```
$ docker run -it --rm --name my-running-script -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp node:0.10 node your-daemon-or-script.js
```bash
$ docker run -it --rm \
--name my-running-script \
# -v "$(pwd)":/usr/src/myapp \
--mount type=bind,src=`$(pwd)`,target=/usr/src/myapp \
-w /usr/src/myapp \
node:9-alpine \
node your-daemon-or-script.js
```
### Dockerfile
#### 0.10 版本
```
FROM buildpack-deps
RUN apt-get update && apt-get install -y \
ca-certificates \
curl
# verify gpg and sha256: http://nodejs.org/dist/v0.10.31/SHASUMS256.txt.asc
# gpg: aka "Timothy J Fontaine (Work) <tj.fontaine@joyent.com>"
RUN gpg --keyserver pgp.mit.edu --recv-keys 7937DFD2AB06298B2293C3187D33FF9D0246406D
ENV NODE_VERSION 0.10.32
RUN curl -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" \
&& curl -SLO "http://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --verify SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.gz\$" SHASUMS256.txt.asc | sha256sum -c - \
&& tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt.asc
CMD [ "node" ]
```
#### 4.x 版本
```
FROM buildpack-deps:jessie
# gpg keys listed at https://github.com/nodejs/node
RUN set -ex \
&& for key in \
9554F04D7259F04124DE6B476D5A82AC7E37093B \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
ENV NPM_CONFIG_LOGLEVEL info
ENV NODE_VERSION 4.4.7
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
CMD [ "node" ]
```
#### 5.x 版本
```
FROM buildpack-deps:jessie
# gpg keys listed at https://github.com/nodejs/node
RUN set -ex \
&& for key in \
9554F04D7259F04124DE6B476D5A82AC7E37093B \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
ENV NPM_CONFIG_LOGLEVEL info
ENV NODE_VERSION 5.12.0
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
CMD [ "node" ]
```
#### 6.x 版本
```
FROM buildpack-deps:jessie
# gpg keys listed at https://github.com/nodejs/node
RUN set -ex \
&& for key in \
9554F04D7259F04124DE6B476D5A82AC7E37093B \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
ENV NPM_CONFIG_LOGLEVEL info
ENV NODE_VERSION 6.3.1
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
CMD [ "node" ]
```
请到 https://github.com/docker-library/docs/tree/master/node 查看。

19
appendix/repo/php.md Normal file
View File

@@ -0,0 +1,19 @@
## [PHP](https://hub.docker.com/_/php/)
### 基本信息
[PHP](https://en.wikipedia.org/wiki/php)Hypertext Preprocessor 超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML 中,尤其适合 web 开发。
该仓库位于 `https://hub.docker.com/_/php/` 提供了 PHP 5.x ~ 7.x 各个版本的镜像
### 使用方法
下面的命令将运行一个已有的 PHP 脚本
```bash
$ docker run -it --rm -v "$PWD":/app -w /app php:alpine php your-script.php
```
### Dockerfile
请到 https://github.com/docker-library/docs/tree/master/php 查看。

View File

@@ -1,141 +1,42 @@
## [Redis](https://hub.docker.com/_/redis/)
### 基本信息
[Redis](https://en.wikipedia.org/wiki/Redis) 是开源的内存 Key-Value 数据库实现。
该仓库位于 https://hub.docker.com/_/redis/,提供了 Redis 3.x 各个版本的镜像。
该仓库位于 `https://hub.docker.com/_/redis/` 提供了 Redis 3.x ~ 5.x 各个版本的镜像
### 使用方法
默认会在 `6379` 端口启动数据库
```bash
$ docker run --name some-redis -d -p 6379:6379 redis
```
$ docker run --name some-redis -d redis
```
另外还可以启用 [持久存储](http://redis.io/topics/persistence)。
```
$ docker run --name some-redis -d redis redis-server --appendonly yes
另外还可以启用 [持久存储](https://redis.io/topics/persistence)。
```bash
$ docker run --name some-redis -d -p 6379:6379 redis redis-server --appendonly yes
```
默认数据存储位置在 `VOLUME/data`可以使用 `--volumes-from some-volume-container` `-v /docker/host/dir:/data` 将数据存放到本地
使用其他应用连接到容器可以用
```
```bash
$ docker run --name some-app --link some-redis:redis -d application-that-uses-redis
```
或者通过 `redis-cli`
```
$ docker run -it --link some-redis:redis --rm redis sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'
```bash
$ docker run -it --rm \
--link some-redis:redis \
redis \
sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'
```
### Dockerfile
#### 3.0 版本
```
FROM debian:jessie
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r redis && useradd -r -g redis redis
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
wget \
&& rm -rf /var/lib/apt/lists/*
# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true
ENV REDIS_VERSION 3.0.7
ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.0.7.tar.gz
ENV REDIS_DOWNLOAD_SHA1 e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c
# for redis-sentinel see: http://redis.io/topics/sentinel
RUN buildDeps='gcc libc6-dev make' \
&& set -x \
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \
&& echo "$REDIS_DOWNLOAD_SHA1 *redis.tar.gz" | sha1sum -c - \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& rm redis.tar.gz \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps
RUN mkdir /data && chown redis:redis /data
VOLUME /data
WORKDIR /data
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 6379
CMD [ "redis-server" ]
```
#### 3.2 版本
```
FROM debian:jessie
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r redis && useradd -r -g redis redis
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
wget \
&& rm -rf /var/lib/apt/lists/*
# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true
ENV REDIS_VERSION 3.2.3
ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.2.3.tar.gz
ENV REDIS_DOWNLOAD_SHA1 92d6d93ef2efc91e595c8bf578bf72baff397507
# for redis-sentinel see: http://redis.io/topics/sentinel
RUN buildDeps='gcc libc6-dev make' \
&& set -x \
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \
&& echo "$REDIS_DOWNLOAD_SHA1 *redis.tar.gz" | sha1sum -c - \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& rm redis.tar.gz \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps
RUN mkdir /data && chown redis:redis /data
VOLUME /data
WORKDIR /data
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 6379
CMD [ "redis-server" ]
```
请到 https://github.com/docker-library/docs/tree/master/redis 查看。

View File

@@ -1,142 +1,20 @@
## [Ubuntu](https://hub.docker.com/_/ubuntu/)
### 基本信息
[Ubuntu](https://en.wikipedia.org/wiki/Ubuntu) 是流行的 Linux 发行版,其自带软件版本往往较新一些。
该仓库位于 https://hub.docker.com/_/ubuntu/,提供了 Ubuntu 从 12.04 ~ 16.10 各个版本的镜像。
该仓库位于 `https://hub.docker.com/_/ubuntu/` 提供了 Ubuntu 12.04 ~ 19.04 各个版本的镜像
### 使用方法
默认会启动一个最小化的 Ubuntu 环境
```
$ docker run --name some-ubuntu -i -t ubuntu
```bash
$ docker run --name some-ubuntu -it ubuntu:18.04
root@523c70904d54:/#
```
### Dockerfile
#### 12.04 版本
```
FROM scratch
ADD precise-core-amd64.tar.gz /
# a few minor docker-specific tweaks
# see https://github.com/dotcloud/docker/blob/master/contrib/mkimage/debootstrap
RUN echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
&& echo 'exit 101' >> /usr/sbin/policy-rc.d \
&& chmod +x /usr/sbin/policy-rc.d \
\
&& dpkg-divert --local --rename --add /sbin/initctl \
&& cp -a /usr/sbin/policy-rc.d /sbin/initctl \
&& sed -i 's/^exit.*/exit 0/' /sbin/initctl \
\
&& echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
\
&& echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
&& echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
&& echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
\
&& echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
\
&& echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes
# delete all the apt list files since they're big and get stale quickly
RUN rm -rf /var/lib/apt/lists/*
# this forces "apt-get update" in dependent images, which is also good
# enable the universe
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list
# upgrade packages for now, since the tarballs aren't updated frequently enough
RUN apt-get update && apt-get dist-upgrade -y && rm -rf /var/lib/apt/lists/*
# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
```
#### 14.04 版本
```
FROM scratch
ADD trusty-core-amd64.tar.gz /
# a few minor docker-specific tweaks
# see https://github.com/dotcloud/docker/blob/master/contrib/mkimage/debootstrap
RUN echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
&& echo 'exit 101' >> /usr/sbin/policy-rc.d \
&& chmod +x /usr/sbin/policy-rc.d \
\
&& dpkg-divert --local --rename --add /sbin/initctl \
&& cp -a /usr/sbin/policy-rc.d /sbin/initctl \
&& sed -i 's/^exit.*/exit 0/' /sbin/initctl \
\
&& echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
\
&& echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
&& echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
&& echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
\
&& echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
\
&& echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes
# delete all the apt list files since they're big and get stale quickly
RUN rm -rf /var/lib/apt/lists/*
# this forces "apt-get update" in dependent images, which is also good
# enable the universe
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list
# upgrade packages for now, since the tarballs aren't updated frequently enough
RUN apt-get update && apt-get dist-upgrade -y && rm -rf /var/lib/apt/lists/*
# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
```
#### 16.04 版本
```
FROM scratch
ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
# a few minor docker-specific tweaks
# see https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap
RUN set -xe \
\
# https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L40-L48
&& echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
&& echo 'exit 101' >> /usr/sbin/policy-rc.d \
&& chmod +x /usr/sbin/policy-rc.d \
\
# https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L54-L56
&& dpkg-divert --local --rename --add /sbin/initctl \
&& cp -a /usr/sbin/policy-rc.d /sbin/initctl \
&& sed -i 's/^exit.*/exit 0/' /sbin/initctl \
\
# https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L71-L78
&& echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
\
# https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L85-L105
&& echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
&& echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
&& echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
\
# https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L109-L115
&& echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
\
# https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L118-L130
&& echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes \
\
# https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L134-L151
&& echo 'Apt::AutoRemove::SuggestsImportant "false";' > /etc/apt/apt.conf.d/docker-autoremove-suggests
# delete all the apt list files since they're big and get stale quickly
RUN rm -rf /var/lib/apt/lists/*
# this forces "apt-get update" in dependent images, which is also good
# enable the universe
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list
# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
```
请到 https://github.com/docker-library/docs/tree/master/ubuntu 查看。

View File

@@ -1,117 +1,25 @@
## [WordPress](https://hub.docker.com/_/wordpress/)
### 基本信息
[WordPress](https://en.wikipedia.org/wiki/WordPress) 是开源的 Blog 和内容管理系统框架,它基于 PhP 和 MySQL。
该仓库位于 https://hub.docker.com/_/wordpress/,提供了 WordPress 4.x 版本的镜像
[WordPress](https://en.wikipedia.org/wiki/WordPress) 是开源的 Blog 和内容管理系统框架,它基于 PHP 和 MySQL
该仓库位于 `https://hub.docker.com/_/wordpress/` 提供了 WordPress 4.x ~ 5.x 版本的镜像
### 使用方法
启动容器需要 MySQL 的支持默认端口为 `80`
```
```bash
$ docker run --name some-wordpress --link some-mysql:mysql -d wordpress
```
启动 WordPress 容器时可以指定的一些环境参数包括
* `-e WORDPRESS_DB_USER=...` 缺省为 root
* `-e WORDPRESS_DB_PASSWORD=...` 缺省为连接 mysql 容器的环境变量 `MYSQL_ROOT_PASSWORD` 的值
* `-e WORDPRESS_DB_NAME=...` 缺省为 wordpress
* `-e WORDPRESS_AUTH_KEY=...`, `-e WORDPRESS_SECURE_AUTH_KEY=...`, `-e WORDPRESS_LOGGED_IN_KEY=...`, `-e WORDPRESS_NONCE_KEY=...`, `-e WORDPRESS_AUTH_SALT=...`, `-e WORDPRESS_SECURE_AUTH_SALT=...`, `-e WORDPRESS_LOGGED_IN_SALT=...`, `-e WORDPRESS_NONCE_SALT=...` 缺省为随机 sha1
启动 WordPress 容器时可以指定的一些环境变量包括
* `WORDPRESS_DB_USER` 缺省为 `root`
* `WORDPRESS_DB_PASSWORD` 缺省为连接 mysql 容器的环境变量 `MYSQL_ROOT_PASSWORD` 的值
* `WORDPRESS_DB_NAME` 缺省为 `wordpress`
### Dockerfile
#### 4.0 版本
```
FROM debian:wheezy
RUN apt-get update && apt-get install -y \
apache2 \
curl \
libapache2-mod-php5 \
php5-curl \
php5-gd \
php5-mysql \
rsync \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN a2enmod rewrite
# copy a few things from apache's init script that it requires to be setup
ENV APACHE_CONFDIR /etc/apache2
ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars
# and then a few more from $APACHE_CONFDIR/envvars itself
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_PID_FILE $APACHE_RUN_DIR/apache2.pid
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_LOG_DIR /var/log/apache2
ENV LANG C
RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR
# make CustomLog (access log) go to stdout instead of files
# and ErrorLog to stderr
RUN find "$APACHE_CONFDIR" -type f -exec sed -ri ' \
s!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g; \
s!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g; \
' '{}' ';'
RUN rm -rf /var/www/html && mkdir /var/www/html
VOLUME /var/www/html
WORKDIR /var/www/html
ENV WORDPRESS_VERSION 4.0.0
ENV WORDPRESS_UPSTREAM_VERSION 4.0
# upstream tarballs include ./wordpress/ so this gives us /usr/src/wordpress
RUN curl -SL http://wordpress.org/wordpress-${WORDPRESS_UPSTREAM_VERSION}.tar.gz | tar -xzC /usr/src/
COPY docker-apache.conf /etc/apache2/sites-available/wordpress
RUN a2dissite 000-default && a2ensite wordpress
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 80
CMD ["apache2", "-DFOREGROUND"]
```
#### 4.5 版本
```
FROM php:5.6-apache
RUN a2enmod rewrite expires
# install the PHP extensions we need
RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev && rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
&& docker-php-ext-install gd mysqli opcache
# set recommended PHP.ini settings
# see https://secure.php.net/manual/en/opcache.installation.php
RUN { \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=60'; \
echo 'opcache.fast_shutdown=1'; \
echo 'opcache.enable_cli=1'; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini
VOLUME /var/www/html
ENV WORDPRESS_VERSION 4.5.3
ENV WORDPRESS_SHA1 835b68748dae5a9d31c059313cd0150f03a49269
# upstream tarballs include ./wordpress/ so this gives us /usr/src/wordpress
RUN curl -o wordpress.tar.gz -SL https://wordpress.org/wordpress-${WORDPRESS_VERSION}.tar.gz \
&& echo "$WORDPRESS_SHA1 *wordpress.tar.gz" | sha1sum -c - \
&& tar -xzf wordpress.tar.gz -C /usr/src/ \
&& rm wordpress.tar.gz \
&& chown -R www-data:www-data /usr/src/wordpress
COPY docker-entrypoint.sh /entrypoint.sh
# grr, ENTRYPOINT resets CMD now
ENTRYPOINT ["/entrypoint.sh"]
CMD ["apache2-foreground"]
```
请到 https://github.com/docker-library/docs/tree/master/wordpress 查看。

27
appendix/resources.md Normal file
View File

@@ -0,0 +1,27 @@
# 资源链接
## 官方网站
* Docker 官方主页https://www.docker.com
* Docker 官方博客https://blog.docker.com/
* Docker 官方文档https://docs.docker.com/
* Docker Hubhttps://hub.docker.com
* Docker 的源代码仓库https://github.com/moby/moby
* Docker 发布版本历史https://docs.docker.com/release-notes/
* Docker 常见问题https://docs.docker.com/engine/faq/
* Docker 远端应用 APIhttps://docs.docker.com/develop/sdk/
## 实践参考
* Dockerfile 参考https://docs.docker.com/engine/reference/builder/
* Dockerfile 最佳实践https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
## 技术交流
* Docker 邮件列表 https://groups.google.com/forum/#!forum/docker-user
* Docker IRC 频道https://chat.freenode.net#docker
* Docker Twitter 主页https://twitter.com/docker
## 其它
* Docker StackOverflow 问答主页https://stackoverflow.com/search?q=docker

View File

@@ -1,23 +0,0 @@
# 资源链接
## 官方网站
* Docker 官方主页: https://www.docker.com
* Docker 官方博客: https://blog.docker.com/
* Docker 官方文档: https://docs.docker.com/
* Docker Hub: https://hub.docker.com
* Docker 的源代码仓库: https://github.com/docker/docker
* Docker 发布版本历史https://docs.docker.com/release-notes/
* Docker 常见问题https://docs.docker.com/engine/faq/
* Docker 远端应用 API: https://docs.docker.com/reference/api/docker_remote_api/
## 实践参考
* Dockerfile 参考https://docs.docker.com/reference/builder/
* Dockerfile 最佳实践https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
## 技术交流
* Docker 邮件列表: https://groups.google.com/forum/#!forum/docker-user
* Docker IRC 频道: https://chat.freenode.net#docker
* Docker Twitter 主页: https://twitter.com/docker
## 其它
* Docker StackOverflow 问答主页: https://stackoverflow.com/search?q=docker

View File

@@ -1,126 +0,0 @@
# Docker命令查询
## 基本语法
Docker 命令有两大类客户端命令和服务端命令前者是主要的操作接口后者用来启动 Docker daemon
* 客户端命令基本命令格式为 `docker [OPTIONS] COMMAND [arg...]`
* 服务端命令基本命令格式为 `docker daemon [OPTIONS]`
可以通过 `man docker` `docker help` 来查看这些命令
## 客户端命令选项
* --config=""指定客户端配置文件默认为 `/.docker`
* -D=true|false是否使用 debug 模式默认不开启
* -H, --host=[]指定命令对应 Docker daemon 的监听接口可以为 unix 套接字unix:///path/to/socket文件句柄fd://socketfd或 tcp 套接字tcp://[host[:port]]),默认为 unix:///var/run/docker.sock
* -l, --log-level="debug|info|warn|error|fatal"指定日志输出级别
* --tls=true|false是否对 Docker daemon 启用 TLS 安全机制默认为否
* --tlscacert= /.docker/ca.pemTLS CA 签名的可信证书文件路径
* --tlscert= /.docker/cert.pemTLS 可信证书文件路径
* --tlscert= /.docker/key.pemTLS 密钥文件路径
* --tlsverify=true|false启用 TLS 校验默认为否
## daemon 命令选项
* --api-cors-header=""CORS 头部域默认不允许 CORS要允许任意的跨域访问可以指定为 *
* --authorization-plugin=""载入认证的插件
* -b=""将容器挂载到一个已存在的网桥上指定为 'none' 时则禁用容器的网络 --bip 选项互斥
* --bip=""让动态创建的 docker0 网桥采用给定的 CIDR 地址; -b 选项互斥
* --cgroup-parent=""指定 cgroup 的父组默认 fs cgroup 驱动为 `/docker`systemd cgroup 驱动为 `system.slice`
* --cluster-store=""构成集群 Swarm集群键值数据库服务地址
* --cluster-advertise=""构成集群时自身的被访问地址可以为 `host:port` `interface:port`
* --cluster-store-opt=""构成集群时键值数据库的配置选项
* --config-file="/etc/docker/daemon.json"daemon 配置文件路径
* --containerd=""containerd 文件的路径
* -D, --debug=true|false是否使用 Debug 模式缺省为 false
* --default-gateway=""容器的 IPv4 网关地址必须在网桥的子网段内
* --default-gateway-v6=""容器的 IPv6 网关地址
* --default-ulimit=[]默认的 ulimit
* --disable-legacy-registry=true|false是否允许访问旧版本的镜像仓库服务器
* --dns=""指定容器使用的 DNS 服务器地址
* --dns-opt=""DNS 选项
* --dns-search=[]DNS 搜索域
* --exec-opt=[]运行时的执行选项
* --exec-root=""容器执行状态文件的根路径默认为 `/var/run/docker`
* --fixed-cidr=""限定分配 IPv4 地址范围
* --fixed-cidr-v6=""限定分配 IPv6 地址范围
* -G, --group=""分配给 unix 套接字的组默认为 `docker`
* -g, --graph=""Docker 运行时的根路径默认为 `/var/lib/docker`
* -H, --host=[]指定命令对应 Docker daemon 的监听接口可以为 unix 套接字unix:///path/to/socket文件句柄fd://socketfd或 tcp 套接字tcp://[host[:port]]),默认为 unix:///var/run/docker.sock
* --icc=true|false是否启用容器间以及跟 daemon 所在主机的通信默认为 true
* --insecure-registry=[]允许访问给定的非安全仓库服务
* --ip=""绑定容器端口时候的默认 IP 地址缺省为 0.0.0.0
* --ip-forward=true|false是否检查启动在 Docker 主机上的启用 IP 转发服务默认开启注意关闭该选项将不对系统转发能力进行任何检查修改
* --ip-masq=true|false是否进行地址伪装用于容器访问外部网络默认开启
* --iptables=true|false是否允许 Docker 添加 iptables 规则缺省为 true
* --ipv6=true|false是否启用 IPv6 支持默认关闭
* -l, --log-level="debug|info|warn|error|fatal"指定日志输出级别
* --label="[]"添加指定的键值对标注
* --log-driver="json-file|syslog|journald|gelf|fluentd|awslogs|splunk|etwlogs|gcplogs|none"指定日志后端驱动默认为 json-file
* --log-opt=[]日志后端的选项
* --mtu=VALUE指定容器网络的 mtu
* -p=""指定 daemon PID 文件路径缺省为 `/var/run/docker.pid`
* --raw-logs输出原始未加色彩的日志信息
* --registry-mirror=<scheme>://<host>:指定 `docker pull` 时使用的注册服务器镜像地址;
* -s, --storage-driver=""指定使用给定的存储后端
* --selinux-enabled=true|false是否启用 SELinux 支持缺省值为 falseSELinux 目前尚不支持 overlay 存储驱动
* --storage-opt=[]驱动后端选项
* --tls=true|false是否对 Docker daemon 启用 TLS 安全机制默认为否
* --tlscacert= /.docker/ca.pemTLS CA 签名的可信证书文件路径
* --tlscert= /.docker/cert.pemTLS 可信证书文件路径
* --tlscert= /.docker/key.pemTLS 密钥文件路径
* --tlsverify=true|false启用 TLS 校验默认为否
* --userland-proxy=true|false是否使用用户态代理来实现容器间和出容器的回环通信默认为 true
* --userns-remap=default|uid:gid|user:group|user|uid指定容器的用户命名空间默认是创建新的 UID GID 映射到容器内进程
## 子命令
可以通过 `man docker-COMMAND` 来查看这些命令的具体用法
* attach依附到一个正在运行的容器中
* build从一个 Dockerfile 创建一个镜像
* commit从一个容器的修改中创建一个新的镜像
* cp在容器和本地宿主系统之间复制文件中
* create创建一个新容器但并不运行它
* diff检查一个容器文件系统的修改
* events从服务端获取实时的事件
* exec在运行的容器内执行命令
* export导出容器内容为一个 tar
* history显示一个镜像的历史信息
* images列出存在的镜像
* import导入一个文件典型为 tar 路径或目录来创建一个本地镜像
* info显示一些相关的系统信息
* inspect显示一个容器的具体配置信息
* kill关闭一个运行中的容器 (包括进程和所有相关资源)
* load从一个 tar 包中加载一个镜像
* login注册或登录到一个 Docker 的仓库服务器
* logout Docker 的仓库服务器登出
* logs获取容器的 log 信息
* network管理 Docker 的网络包括查看创建删除挂载卸载等
* node管理 swarm 集群中的节点包括查看更新删除提升/取消管理节点等
* pause暂停一个容器中的所有进程
* port查找一个 nat 到一个私有网口的公共口
* ps列出主机上的容器
* pull从一个Docker的仓库服务器下拉一个镜像或仓库
* push将一个镜像或者仓库推送到一个 Docker 的注册服务器
* rename重命名一个容器
* restart重启一个运行中的容器
* rm删除给定的若干个容器
* rmi删除给定的若干个镜像
* run创建一个新容器并在其中运行给定命令
* save保存一个镜像为 tar 包文件
* search Docker index 中搜索一个镜像
* service管理 Docker 所启动的应用服务包括创建更新删除等
* start启动一个容器
* stats输出一个或多个容器的资源使用统计信息
* stop终止一个运行中的容器
* swarm管理 Docker swarm 集群包括创建加入退出更新等
* tag为一个镜像打标签
* top查看一个容器中的正在运行的进程信息
* unpause将一个容器内所有的进程从暂停状态中恢复
* update更新指定的若干容器的配置信息
* version输出 Docker 的版本信息
* volume管理 Docker volume包括查看创建删除等
* wait阻塞直到一个容器终止然后输出它的退出符
## 一张图总结 Docker 的命令
![命令周期](../_images/cmd_logic.png)

View File

@@ -1,8 +1,7 @@
# 基本概念
Docker 包括三个基本概念
* 镜像Image
* 容器Container
* 仓库Repository
理解了这三个概念就理解了 Docker 的整个生命周期
# Basic Concepts
Docker contains 3 basic concepts
* `Image`
* `Container`
* `Repository`
Only after knowing the above 3 concepts will we get a deeper understanding of the lifecyle of docker.

View File

@@ -1,13 +1,13 @@
## Docker 容器
## Docker Container
镜像Image和容器Container的关系就像是面向对象程序设计中的```实例`一样镜像是静态的定义容器是镜像运行时的实体容器可以被创建启动停止删除暂停等
The relationship between `Image` and `Container` is just as `Class` and `Instance` in [OOP](https://en.wikipedia.org/wiki/Object-oriented_programming). `Image` is the static definition of `container`, while `containers` are the `images` in running state. `Containers` can be created, started, paused, deleted or stopped.
容器的实质是进程但与直接在宿主执行的进程不同容器进程运行于属于自己的独立的 [命名空间](https://en.wikipedia.org/wiki/Linux_namespaces)。因此容器可以拥有自己的 `root` 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学 Docker 时常常会把容器和虚拟机搞混。
The essence of `container` is `process`, but different from that in the host OS, the container processes run in their individual [`namespaces`](https://en.wikipedia.org/wiki/Linux_namespaces). With the namespace, a container can have its own `root` filesystem, network configurations, process space and even an ID space for users. The processes in a container run in an isolated environment, thus can be used as if it were an individual OS independent of the host OS. This feature makes docker-encapsulated applications safer than those running directly on the host. And that's also an important factor that confuses the novices to tell it from virtual machines.
前面讲过镜像使用的是分层存储容器也是如此每一个容器运行时是以镜像为基础层在其上创建一个当前容器的存储层我们可以称这个为容器运行时读写而准备的存储层为**容器存储层**
As we've discussed, `multi-layered filesystem` is applied to images, and so as the containers. When a container is running, it is based on its image, with a writable layer created on top of it. We call this layer prepared for R/W at runtime [**`Container Layer`**](https://docs.docker.com/storage/storagedriver/#images-and-layers).
容器存储层的生存周期和容器一样容器消亡时容器存储层也随之消亡因此任何保存于容器存储层的信息都会随容器删除而丢失
The lifecyle of the container layer is the same as contaier. The container layer dies as soon as the container dies. Therefore, anything stored at the container layer will be discarded when the container is deleted.
按照 Docker 最佳实践的要求容器不应该向其存储层内写入任何数据容器存储层要保持无状态化所有的文件写入操作都应该使用 [数据卷Volume](https://docs.docker.com/engine/tutorials/dockervolumes/)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
As recommended by the [Docker Development Best Practices](https://docs.docker.com/develop/dev-best-practices/#where-and-how-to-persist-application-data), we should not write any data to the container layer to make it stateless. All file write operations should adhere to [`Volume`](../data_management/volume.md) or bind mounts. Writing to volume or bind mounts skips the container layer and R/W to host storage(or network storage) directly, which achieves better performance and stability.
数据卷的生存周期独立于容器容器消亡数据卷不会消亡因此使用数据卷后容器可以随意删除重新 `run`数据却不会丢失
The lifecyle of volume is independent of the container, and will not vanish when the container is deleted. In light of it, the data persists when a container is deleted or restarted.

View File

@@ -1,15 +1,15 @@
## Docker 镜像
## Docker Image
我们都知道操作系统分为内核和用户空间对于 Linux 而言内核启动后会挂载 `root` 文件系统为其提供用户空间支持 Docker 镜像Image就相当于是一个 `root` 文件系统比如官方镜像 `ubuntu:14.04` 就包含了完整的一套 Ubuntu 14.04 最小系统的 `root` 文件系统
As we all know, Operating System consists of kernel space and user space. For linux, it will mount `root` filesystem to support user space. For Docker Image, it is similar to a `root` filesystem in Linux. For example, the offical image `ubuntu:18:04` contains a micro `root` filesystem of complete opreating system.
Docker 镜像是一个特殊的文件系统除了提供容器运行时所需的程序资源配置等文件外还包含了一些为运行时准备的一些配置参数如匿名卷环境变量用户等镜像不包含任何动态数据其内容在构建之后也不会被改变
Docker Image is a special filesystem. Apart from programs, libs, resources and config which support running container, Docker Image also includes config parameters like anonymous volumes, environment variables, users and others. Images don't have any dynamic data. Its content will not be changed after build.
### 分层存储
## Advanced Multi-layered Unification Filesystem (AUFS)
因为镜像包含操作系统完整的 `root` 文件系统其体积往往是庞大的因此在 Docker 设计时就充分利用 [Union FS](https://en.wikipedia.org/wiki/Union_mount) 的技术,将其设计为分层存储的架构。所以严格来说,镜像并非是像一个 ISO 那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。
Because the image contains the complete `root` file system of the operating system, its volume is often huge. So Docker made full use of [Union FS](https://en.wikipedia.org/wiki/Union_mount) and was designed as AUFS when it was designed. So strictly speaking, image is not a packaged file like an ISO image file. Image is just a virtual concept. It is not composed of a single file, but a group of file systems, or a combination of multi-layered filesystems.
镜像构建时会一层层构建前一层是后一层的基础每一层构建完就不会再发生改变后一层上的任何改变只发生在自己这一层比如删除前一层文件的操作实际不是真的删除前一层的文件而是仅在当前层标记为该文件已删除在最终容器运行的时候虽然不会看到这个文件但是实际上该文件会一直跟随镜像因此在构建镜像的时候需要额外小心每一层尽量只包含该层需要添加的东西任何额外的东西应该在该层构建结束前清理掉
When building an image, it builds layer by layer, and the former is the basis for the latter. Once each layer is built, it will not change later. Any change on the latter layer will only occur on its own level. For example, deleting the previous layer of files is not really deleting the files, but only marked as deleted in the current layer. When the final container runs, you won't see the file, but in fact the file will always follow the image. Therefore, take more care when building the image, and any redundant file should be cleared up in ahead of the layer's final construction.
分层存储的特征还使得镜像的复用定制变的更为容易甚至可以用之前构建好的镜像作为基础层然后进一步添加新的层以定制自己所需的内容构建新的镜像
The layered storage feature also makes it easier to reuse and customize images. You can even use a previously built image as the base layer, and then add a new layer to customize the content to meet your need to build a new image.
关于镜像构建将会在后续相关章节中做进一步的讲解
As for image building, further explanations will be given in subsequent relevant chapters.

View File

@@ -1,29 +1,29 @@
## Docker Registry
镜像构建完成后可以很容易的在当前宿主上运行但是如果需要在其它服务器上使用这个镜像我们就需要一个集中的存储分发镜像的服务[Docker Registry](https://docs.docker.com/registry/) 就是这样的服务。
After the construction of an image, we can easily run it on a host. However, if we want to use the image on other servers, we need a centralized image storage and distribution service. The [Docker Registry](../repository/registry.md) we will introduce is such a service.
一个 **Docker Registry** 中可以包含多个**仓库**Repository每个仓库可以包含多个**标签**Tag每个标签对应一个镜像
A **Docker Registry** can contain several `Repositories`, where each repository can contain several tags and each tag corresponds to an image.
一般而言一个仓库包含的是同一个软件的不同版本的镜像而标签则用于对应于软件的的不同版本我们可以通过 `<仓库名>:<标签>` 的格式来指定具体是哪个版本的镜像如果不给出标签将以 `latest` 作为默认标签
Typically, a repository contains images for different versions of the same software, where each tags corresponds to different versions of the software. We can uniquely identify an image of the same software with `repository:tag`. In case not explicitly specified, `latest` is taken as default tag.
[Ubuntu 镜像](https://hub.docker.com/_/ubuntu/) 为例,`ubuntu` 是仓库的名字,其内包含有不同的版本标签,如,`14.04`, `16.04`。我们可以通过 `ubuntu:14.04`,或者 `ubuntu:16.04` 来具体指定所需哪个版本的镜像。如果忽略了标签,比如 `ubuntu`,那将视为 `ubuntu:latest`
Taking the [Ubuntu Image](https://hub.docker.com/_/ubuntu) as an example. `ubuntu` is the name for repository, and inside it are tags for different versions, for instance, `16.04`, `18.04`. We can use `ubuntu:16.04` or `ubuntu:18.04` to specify the particular image we want. If the tag is omitted, for example, `ubuntu`, then it will be considered as `ubuntu:latest`.
仓库名经常以 *两段式路径* 形式出现比如 `jwilder/nginx-proxy`前者往往意味着 Docker Registry 多用户环境下的用户名后者则往往是对应的软件名但这并非绝对取决于所使用的具体 Docker Registry 的软件或服务
Repository name is typically seperated by a forward slash(/), for example, `jwilder/nginx-proxy`, the former is to identify a particular user in a multi-user Docker Registry, while the latter corresponds to the software name. But it is not always the case. It also depends on the Docker Registry software or service you are using.
### Docker Registry 公开服务
### Docker Registry Public Services
Docker Registry 公开服务是开放给用户使用允许用户管理镜像的 Registry 服务一般这类公开服务允许用户免费上传下载公开的镜像并可能提供收费服务供用户管理私有镜像
`Docker Registry Public Services` are registry services open to users, allowing users to manage their images. Typically, those public services offer user free image uploads and downloads, and possibly provide charged service for privately managed images.
最常使用的 Registry 公开服务是官方的 [Docker Hub](https://hub.docker.com/),这也是默认的 Registry并拥有大量的高质量的官方镜像。除此以外还有 [CoreOS](https://coreos.com/) 的 [Quay.io](https://quay.io/repository/)CoreOS 相关的镜像存储在这里;Google [Google Container Registry](https://cloud.google.com/container-registry/)[Kubernetes](http://kubernetes.io/) 的镜像使用的就是这个服务。
The most commonly used registry public service is the official [Docker Hub](https://hub.docker.com/), which is the default registry with thousands of high quality official images. Besides, the images for [Quay.io](https://quay.io/repository/) and CoreOS of [CoreOS](https://coreos.com/) are stored there. Google's [Google Container Registry](https://cloud.google.com/container-registry/) and [Kubernetes](https://kubernetes.io/) also use this service.
由于某些原因在国内访问这些服务可能会比较慢国内的一些云服务商提供了针对 Docker Hub 的镜像服务Registry Mirror这些镜像服务被称为**加速器**常见的有 [阿里云加速器](https://cr.console.aliyun.com/#/accelerator)[DaoCloud 加速器](https://www.daocloud.io/mirror#accelerator-doc)、[灵雀云加速器](http://docs.alauda.cn/feature/accelerator.html)等。使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从官方网站下载速度会提高很多。在后面的章节中会有进一步如何配置加速器的讲解。
Due to some reasons knwon to all, accessing those services from China mainland is slow. There are some cloud service providers in China providing `Registry Mirror` for Docker Hub, those mirror services are called `accelerators`. The well-known ones are [Ali Cloud Image Accelerator](https://cr.console.aliyun.com/#/accelerator) and [DaoCloud Accelerator](https://www.daocloud.io/mirror#accelerator-doc). In China, downloading from these services are much faster than from Docker Hub. The detailed image source configuration tutorial is in the [Docker Installation](../install/mirror.md) section.
国内也有一些云服务商提供类似于 Docker Hub 的公开服务比如 [时速云镜像仓库](https://hub.tenxcloud.com/)、[网易云镜像服务](https://c.163.com/hub#/m/library/)[DaoCloud 镜像市场](https://hub.daocloud.io/)、[阿里云镜像库](https://cr.console.aliyun.com)等。
There are also some cloud service providers that provide public services similar to Docker Hub in China. For example, [Tenxcloud Mirror Registry](https://hub.tenxcloud.com/), [NetEase Mirror Registry](https://c.163.com/hub#/m/library/), [DaoCloud Mirror Market](https://hub.daocloud.io/), [Ali Cloud Mirror Registry](https://cr.console.aliyun.com), etc.
### 私有 Docker Registry
### Private Docker Registry
除了使用公开服务外用户还可以在本地搭建私有 Docker RegistryDocker 官方提供了 [Docker Registry 镜像](https://hub.docker.com/_/registry/),可以直接使用做为私有 Registry 服务。在后续的相关章节中,会有进一步的搭建私有 Registry 服务的讲解。
Apart from using public service, a user can set up private Docker Registry. Docker offical offers the [Docker Registry](https://hub.docker.com/_/registry/) docker image, which can be deployed for private registry service. We will explain how to set it up in detail in the [Private Registry](../repository/registry.md) section.
开源的 Docker Registry 镜像只提供了 [Docker Registry API](https://docs.docker.com/registry/spec/api/) 的服务端实现,足以支持 `docker` 命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。在官方的商业化版本 [Docker Trusted Registry](https://docs.docker.com/datacenter/dtr/2.0/) 中,提供了这些高级功能。
The open source Docker Registry image only provides the backend of [Docker Registry API](https://docs.docker.com/registry/spec/api/), which supports the `docker` commands and is enough for personal use, although the advanced functionalities like GUI(Graphical User Interface), Image Maintenance and Access Control are not supported. However, they are provided in the commercial version - [Docker Trusted Registry](https://docs.docker.com/datacenter/dtr/2.0/).
除了官方的 Docker Registry 还有第三方软件实现了 Docker Registry API甚至提供了用户界面以及一些高级功能比如[VMWare Harbor](http://vmware.github.io/harbor/index_cn.html) 和 [Sonatype Nexus](https://www.sonatype.com/docker)。
Except for the official Docker Registry, there are third-party softwares that implement Docker Registry API, even with some advanced features like user interface. For example, [Harbor](https://github.com/goharbor/harbor) and [Sonatype Nexus](../repository/nexus3_registry.md).

View File

@@ -1,24 +1,36 @@
{
"title": "Docker -- 从入门到实践",
"title": "Docker Practice",
"author": "yeasy",
"language": "en",
"links": {
"sidebar": {
"GitHub": "https://github.com/yeasy/docker_practice"
}
},
"plugins": [
"-livereload",
"image-captions",
"github-buttons"
"github",
"page-treeview@2.9.8",
"editlink"
],
"pluginsConfig": {
"image-captions": {
"attributes": {
"width": "600"
},
"caption": " _PAGE_LEVEL_._PAGE_IMAGE_NUMBER_ - _CAPTION_"
"caption": "Image _PAGE_LEVEL_._PAGE_IMAGE_NUMBER_ - _CAPTION_"
},
"github-buttons": {
"repo": "yeasy/docker_practice",
"types": [
"star",
"watch"
],
"size": "small"
"github": {
"url": "https://github.com/yeasy/docker_practice"
},
"editlink": {
"base": "https://github.com/yeasy/docker_practice/blob/english/"
},
"page-treeview": {
"copyright": "Copyright &#169; yeasy",
"minHeaderCount": "2",
"minHeaderDeep": "2"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -1,2 +0,0 @@
#实战案例
介绍一些典型的应用场景和案例

7
cases/ci/README.md Normal file
View File

@@ -0,0 +1,7 @@
# CI/CD
持续集成(Continuous integration)是一种软件开发实践每次集成都通过自动化的构建包括编译发布自动化测试来验证从而尽早地发现集成错误
持续部署continuous deployment是通过自动化的构建测试和部署循环来快速交付高质量的产品
`Jenkins` 不同的是基于 Docker CI/CD 每一步都运行在 Docker 镜像中所以理论上支持所有的编程语言

View File

@@ -0,0 +1,28 @@
# GitHub Actions
GitGub Actions GitHub 推出的一款 CI/CD 工具
我们可以在每个 job step 中使用 Docker 执行构建步骤
```yaml
on: push
name: CI
jobs:
my-job:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
with:
fetch-depth: 2
- name: run docker container
uses: docker://golang:alpine
with:
args: go version
```
## 参考资料
* [Actions Docs](https://help.github.com/en/categories/automating-your-workflow-with-github-actions)

View File

@@ -0,0 +1,6 @@
DRONE_SERVER_HOST=
DRONE_SERVER_PROTO=
DRONE_RPC_SECRET=
HOSTNAME=
DRONE_GITHUB_CLIENT_ID=
DRONE_GITHUB_CLIENT_SECRET=

2
cases/ci/drone/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.env
ssl/*

99
cases/ci/drone/README.md Normal file
View File

@@ -0,0 +1,99 @@
# Drone
基于 `Docker` `CI/CD` 工具 `Drone` 所有编译测试的流程都在 `Docker` 容器中进行
开发者只需在项目中包含 `.drone.yml` 文件将代码推送到 git 仓库`Drone` 就能够自动化的进行编译测试发布
本小节以 `GitHub` + `Drone` 来演示 `Drone` 的工作流程当然在实际开发过程中你的代码也许不在 GitHub 托管那么你可以尝试使用 `Gogs` + `Drone` 来进行 `CI/CD`
## Drone 关联项目
Github 新建一个名为 `drone-demo` 的仓库
打开我们已经 [部署好的 Drone 网站](install.md) 或者 [Drone Cloud](https://cloud.drone.io),使用 GitHub 账号登录,在界面中关联刚刚新建的 `drone-demo` 仓库。
## 编写项目源代码
初始化一个 git 仓库
```bash
$ mkdir drone-demo
$ cd drone-demo
$ git init
$ git remote add origin git@github.com:username/drone-demo.git
```
这里以一个简单的 `Go` 程序为例该程序输出 `Hello World!`
编写 `app.go` 文件
```go
package main
import "fmt"
func main(){
fmt.Printf("Hello World!\n");
}
```
编写 `.drone.yml` 文件
```yaml
kind: pipeline
type: docker
name: build
steps:
- name: build
image: golang:alpine
pull: if-not-exists # always never
environment:
KEY: VALUE
commands:
- echo $KEY
- pwd
- ls
- CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
- ./app
trigger:
branch:
- master
```
现在目录结构如下
```bash
.
├── .drone.yml
└── app.go
```
## 推送项目源代码到 GitHub
```bash
$ git add .
$ git commit -m "test drone ci"
$ git push origin master
```
## 查看项目构建过程及结果
打开我们部署好的 `Drone` 网站或者 Drone Cloud即可看到构建结果
![](../.image/drone-build.png)
当然我们也可以把构建结果上传到 GitHubDocker Registry云服务商提供的对象存储或者生产环境中
本书 GitBook 也使用 Drone 进行 CI/CD具体配置信息请查看本书根目录 [`.drone.yml`](https://github.com/yeasy/docker_practice/blob/master/.drone.yml) 文件。
## 参考链接
* [Drone Github](https://github.com/drone/drone)
* [Drone 文档](http://docs.drone.io/)
* [Drone 示例](https://github.com/docker-practice/drone-demo)

View File

@@ -0,0 +1,19 @@
kind: pipeline
type: docker
name: build
steps:
- name: build
image: golang:alpine
pull: if-not-exists # always never
environment:
KEY: VALUE
commands:
- echo $KEY
- pwd
- ls
- CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
- ./app
trigger:
branch:
- master

View File

@@ -0,0 +1 @@
# Drone Demo

View File

@@ -0,0 +1,7 @@
package main
import "fmt"
func main(){
fmt.Printf("Hello World!\n");
}

View File

@@ -0,0 +1,39 @@
version: '3'
services:
drone-server:
image: drone/drone:1
ports:
- 443:443
- 80:80
volumes:
- drone-data:/data:rw
- ./ssl:/etc/certs
restart: always
environment:
- DRONE_AGENTS_ENABLED=true
- DRONE_SERVER_HOST=${DRONE_SERVER_HOST:-drone.domain.com}
- DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO:-https}
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET:-secret}
- DRONE_GITHUB_SERVER=https://github.com
- DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
- DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
drone-agent:
image: drone/agent:1
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=drone-server
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET:-secret}
- DRONE_RUNNER_NAME=${HOSTNAME:-demo}
- DRONE_RUNNER_CAPACITY=2
dns: 114.114.114.114
volumes:
drone-data:

87
cases/ci/drone/install.md Normal file
View File

@@ -0,0 +1,87 @@
# 部署 Drone
## 要求
* 拥有公网 IP域名 (如果你不满足要求可以尝试在本地使用 Gogs + Drone)
* 域名 SSL 证书 (目前国内有很多云服务商提供免费证书)
* 熟悉 `Docker` 以及 `Docker Compose`
* 熟悉 `Git` 基本命令
* `CI/CD` 有一定了解
## 新建 GitHub 应用
登录 GitHub https://github.com/settings/applications/new 新建一个应用。
![](https://docs.drone.io/screenshots/github_application_create.png)
接下来查看这个应用的详情记录 `Client ID` `Client Secret`之后配置 Drone 会用到
## 配置 Drone
我们通过使用 `Docker Compose` 来启动 `Drone`编写 `docker-compose.yml` 文件
```yaml
version: '3'
services:
drone-server:
image: drone/drone:1
ports:
- 443:443
- 80:80
volumes:
- drone-data:/data:rw
- ./ssl:/etc/certs
restart: always
environment:
- DRONE_AGENTS_ENABLED=true
- DRONE_SERVER_HOST=${DRONE_SERVER_HOST:-https://drone.yeasy.com}
- DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO:-https}
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET:-secret}
- DRONE_GITHUB_SERVER=https://github.com
- DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
- DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
drone-agent:
image: drone/agent:1
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=drone-server
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET:-secret}
- DRONE_RUNNER_NAME=${HOSTNAME:-demo}
- DRONE_RUNNER_CAPACITY=2
dns: 114.114.114.114
volumes:
drone-data:
```
新建 `.env` 文件输入变量及其值
```bash
# 必填 服务器地址,例如 drone.domain.com
DRONE_SERVER_HOST=
DRONE_SERVER_PROTO=https
DRONE_RPC_SECRET=secret
HOSTNAME=demo
# 必填 在 GitHub 应用页面查看
DRONE_GITHUB_CLIENT_ID=
# 必填 在 GitHub 应用页面查看
DRONE_GITHUB_CLIENT_SECRET=
```
### 启动 Drone
```bash
$ docker-compose up -d
```

47
cases/ci/travis/README.md Normal file
View File

@@ -0,0 +1,47 @@
## Travis CI 中使用 Docker
当代码提交到 GitHub [Travis CI](https://travis-ci.com/) 会根据项目根目录 `.travis.yml` 文件设置的指令,执行一系列操作。
本小节介绍如何在 Travis CI 中使用 Docker 进行持续集成/持续部署CI/CD这里以当代码提交到 GitHub 时自动构建 Docker 镜像并推送到 Docker Hub 为例进行介绍
### 准备
首先登录 https://travis-ci.com/account/repositories 选择 GitHub 仓库,按照指引安装 GitHub App 来启用 GitHub 仓库构建。
在项目根目录新建一个 `Dockerfile` 文件
```dockerfile
FROM alpine
RUN echo "Hello World"
```
新建 Travis CI 配置文件 `.travis.yml` 文件
```yml
language: bash
dist: xenial
services:
- docker
before_script:
# 登录到 docker hub
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
script:
# 这里编写测试代码的命令
- echo "test code"
after_success:
# 当代码测试通过后执行的命令
- docker build -t username/alpine .
- docker push username/alpine
```
> 请提前在 Travis CI 仓库设置页面配置 `DOCKER_PASSWORD` `DOCKER_USERNAME` 变量
### 查看结果
将项目推送到 GitHub, 登录 [Travis CI](https://travis-ci.com/) 查看构建详情。

View File

@@ -0,0 +1,16 @@
language: bash
dist: xenial
services:
- docker
before_script:
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
script:
- echo "test code"
after_success:
- docker build -t username/alpine .
- docker push username/alpine

View File

@@ -0,0 +1,3 @@
FROM alpine
RUN echo "Hello World"

View File

@@ -1,78 +0,0 @@
## 多台物理主机之间的容器互联暴露容器到真实网络中
Docker 默认的桥接网卡是 docker0它只会在本机桥接所有的容器网卡举例来说容器的虚拟网卡在主机上看一般叫做 veth*** Docker 只是把所有这些网卡桥接在一起如下
```
[root@opnvz ~]# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.56847afe9799 no veth0889
veth3c7b
veth4061
```
在容器中看到的地址一般是像下面这样的地址
```
root@ac6474aeb31d:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
11: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 4a:7d:68:da:09:cf brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::487d:68ff:feda:9cf/64 scope link
valid_lft forever preferred_lft forever
```
这样就可以把这个网络看成是一个私有的网络通过 nat 连接外网如果要让外网连接到容器中就需要做端口映射 -p 参数
如果在企业内部应用或者做多个物理主机的集群可能需要将多个物理主机的容器组到一个物理网络中来那么就需要将这个网桥桥接到我们指定的网卡上
### 拓扑图
主机 A 和主机 B 的网卡一都连着物理交换机的同一个 vlan 101,这样网桥一和网桥三就相当于在同一个物理网络中了而容器一容器三容器四也在同一物理网络中了他们之间可以相互通信而且可以跟同一 vlan 中的其他物理机器互联
![物理拓扑图](../_images/container_connect_topology.png)
### ubuntu 示例
下面以 ubuntu 为例创建多个主机的容器联网:
创建自己的网桥,编辑 /etc/network/interface 文件
```
auto br0
iface br0 inet static
address 192.168.7.31
netmask 255.255.240.0
gateway 192.168.7.254
bridge_ports em1
bridge_stp off
dns-nameservers 8.8.8.8 192.168.6.1
```
Docker 的默认网桥绑定到这个新建的 br0 上面这样就将这台机器上容器绑定到 em1 这个网卡所对应的物理网络上了
ubuntu 修改 /etc/default/docker 文件添加最后一行内容
```
# Docker Upstart and SysVinit configuration file
# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"
# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"
DOCKER_OPTS="-b=br0"
```
在启动 Docker 的时候 使用 -b 参数 将容器绑定到物理网络上重启 Docker 服务后再进入容器可以看到它已经绑定到你的物理网络上了
```
root@ubuntudocker:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58b043aa05eb desk_hz:v1 "/startup.sh" 5 days ago Up 2 seconds 5900/tcp, 6080/tcp, 22/tcp yanlx
root@ubuntudocker:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.7e6e617c8d53 no em1
vethe6e5
```
这样就直接把容器暴露到物理网络上了多台物理主机的容器也可以相互联网了需要注意的是这样就需要自己来保证容器的网络安全了

View File

@@ -1,14 +0,0 @@
## 标准化开发测试和生产环境
对于大部分企业来说搭建 PaaS 既没有那个精力也没那个必要 Docker 做个人的 sandbox 用处又小了点
可以用 Docker 来标准化开发测试生产环境
![企业应用结构](../_images/enterprise_usage.png)
Docker 占用资源小在一台 E5 128 G 内存的服务器上部署 100 个容器都绰绰有余可以单独抽一个容器或者直接在宿主物理主机上部署 samba利用 samba home 分享方案将每个用户的 home 目录映射到开发中心和测试部门的 Windows 机器上
针对某个项目组由架构师搭建好一个标准的容器环境供项目组和测试部门使用每个开发工程师可以拥有自己单独的容器通过 `docker run -v` 将用户的 home 目录映射到容器中需要提交测试时只需要将代码移交给测试部门然后分配一个容器使用 `-v` 加载测试部门的 home 目录启动即可这样在公司内部的开发测试基本就统一了不会出现开发部门提交的代码测试部门部署不了的问题
测试部门发布测试通过的报告后架构师再一次检测容器环境就可以直接交由部署工程师将代码和容器分别部署到生产环境中了这种方式的部署横向性能的扩展性也极好

9
cases/os/README.md Normal file
View File

@@ -0,0 +1,9 @@
# 操作系统
目前常用的 Linux 发行版主要包括 Debian/Ubuntu 系列和 CentOS/Fedora 系列
前者以自带软件包版本较新而出名后者则宣称运行更稳定一些选择哪个操作系统取决于读者的具体需求
使用 Docker读者只需要一个命令就能快速获取一个 Linux 发行版镜像这是以往包括各种虚拟化技术都难以实现的这些镜像一般都很精简但是可以支持完整 Linux 系统的大部分功能
本章将介绍如何使用 Docker 安装和使用 BusyboxAlphineDebian/UbuntuCentOS/Fedora 等操作系统

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More