1. 安裝 docker
# yum install docker
2. 開機啟動及啟動 docker 服務
# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
# systemctl start docker.service
3. 查看 docker 版本資訊
# docker -v
Docker version 1.12.6, build 96d83a5/1.12.6
# docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-common-1.12.6-11.el7.centos.x86_64
Go version: go1.7.4
Git commit: 96d83a5/1.12.6
Built: Tue Mar 7 09:23:34 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-common-1.12.6-11.el7.centos.x86_64
Go version: go1.7.4
Git commit: 96d83a5/1.12.6
Built: Tue Mar 7 09:23:34 2017
OS/Arch: linux/amd64[@more@]
4. 搜尋 FreeBSD & Arch Linux 映像檔
# docker search freebsd
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/lexaguskov/freebsd FreeBSD operating system 9
docker.io docker.io/auchida/freebsd FreeBSD docker image from distribution arc… 4 [OK]
docker.io docker.io/egypcio/freebsd FreeBSD Containers (12.0, 11.0, 10.x, or 9.3) 4
docker.io docker.io/kazuyoshi/freebsd-minimal 4
docker.io docker.io/amontalban/freebsd FreeBSD Images for Docker. 3 [OK]
docker.io docker.io/roobixx/docker-dg DansGuardian is an award winning Open Sour… 2 [OK]
docker.io docker.io/vongrippen/freebsd FreeBSD with pkg installed 1
docker.io docker.io/alexcrichton/port-prebuilt-freebsd 0
docker.io docker.io/bbabich/docker-mfi-controller UBNT mfi-controller FreeBSD w/ZFS Docker S… 0 [OK]
docker.io docker.io/catskillmts/freebsdminimal 0
docker.io docker.io/danielstaleiny/freebsd 0
docker.io docker.io/jamesandariese/go-freebsd-386 0 [OK]
docker.io docker.io/jamesandariese/go-freebsd-amd64 0 [OK]
docker.io docker.io/jamesandariese/go-freebsd-arm 0 [OK]
docker.io docker.io/japaric/i686-unknown-freebsd 0
docker.io docker.io/japaric/x86_64-unknown-freebsd 0
docker.io docker.io/mattboll/freebsd testing freebsd images 0
docker.io docker.io/ptomulik/freebsd FreeBSD base images 0
docker.io docker.io/ptomulik/freebsd-ports FreeBSD images with ports preinstalled 0
docker.io docker.io/qlkao/freebsd 0
docker.io docker.io/rustci/rustci-x86_64-freebsd 0
docker.io docker.io/siffland/freebsd-memcached FreeBSD memcached docker 0
docker.io docker.io/supsup5642/freebsd_ubuntu 0
docker.io docker.io/tunisiano187/docker-freebsd FreeBSD template automated 0 [OK]
# docker search archlinux
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/base/archlinux Basic ArchLinux installation 212 [OK]
docker.io docker.io/finalduty/archlinux A minimal Arch Linux base image for Docker… 17 [OK]
docker.io docker.io/logankoester/archlinux A fully updated Arch Linux base image buil… 8 [OK]
docker.io docker.io/derjudge/archlinux 7 [OK]
docker.io docker.io/greyltc/archlinux Baseline Arch Linux image with an open, tr… 5 [OK]
docker.io docker.io/archlinuxjp/archlinux The latest Arch Linux Docker image 4 [OK]
docker.io docker.io/thedcg/tl-archlinux tl-archlinux 2 [OK]
docker.io docker.io/archlinuxjp/archlinux-min The mini Arch Linux Docker image 1 [OK]
docker.io docker.io/archlinuxjp/archlinux-yaourt + Yaourt to base image 1 [OK]
docker.io docker.io/finalduty/archlinux-base Personalised ArchLinux image 1 [OK]
docker.io docker.io/obedmr/archlinux ArchLinux Base Image 1 [OK]
docker.io docker.io/opamp/archlinux my archlinux base image with yaourt 1 [OK]
docker.io docker.io/ac1965/archlinux A minimum environment of ArchLinux with Do… 0 [OK]
docker.io docker.io/admiringworm/archlinux Archlinux base image based on pritunl/arch… 0 [OK]
docker.io docker.io/alekzonder/archlinux fresh archlinux image every day 0 [OK]
docker.io docker.io/alekzonder/archlinux-yaourt fresh archlinux with yaourt tool for build… 0 [OK]
docker.io docker.io/archlinuxjp/archlinux-test test image 0 [OK]
docker.io docker.io/colajam93/archlinux Arch Linux Dockerfile for my testing / pac… 0 [OK]
docker.io docker.io/desiato/build-archlinux archlinux-bootstrap builder 0 [OK]
docker.io docker.io/freenas/archlinux Simple Arch Linux interactive container 0 [OK]
docker.io docker.io/jackus/archlinux Archlinux updated on build 0 [OK]
docker.io docker.io/masm/archlinux A fully updated Arch Linux base image buil… 0 [OK]
docker.io docker.io/oblique/archlinux-pacaur ArchLinux + pacaur 0 [OK]
docker.io docker.io/smartentry/archlinux archlinux with smartentry 0 [OK]
docker.io docker.io/soem/archlinux Archlinux Minimal installation 0 [OK]
5. 下載
# docker pull docker.io/egypcio/freebsd
Using default tag: latest
Trying to pull repository docker.io/egypcio/freebsd …
latest: Pulling from docker.io/egypcio/freebsd
a3ed95caeb02: Pull complete
14a15dd57b8b: Pull complete
Digest: sha256:02f6c33382982db829ba63a52ed2467145c290f71f83ae5d8b304c274f809bbd
# docker pull docker.io/base/archlinux
Using default tag: latest
Trying to pull repository docker.io/base/archlinux …
latest: Pulling from docker.io/base/archlinux
ae06c652a19e: Pull complete
dd332190f0f1: Pull complete
3e401a3e6fe9: Pull complete
Digest: sha256:fe0829b6d78fd834a5300a84c559eab9cfe2056fe3c54b5418984ea374075506
6. 已下載安裝的映像檔
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/base/archlinux latest ef9803580a16 16 hours ago 563.4 MB
docker.io/egypcio/freebsd latest 8f539b0870b1 6 months ago 331.3 MB
7. 在容器中執行命令
# docker run docker.io/base/archlinux ls -l
total 4
lrwxrwxrwx 1 root root 7 Dec 5 23:43 bin -> usr/bin
drwxr-xr-x 2 root root 6 Dec 5 23:43 boot
drwxr-xr-x 5 root root 360 Apr 1 03:44 dev
drwxr-xr-x 27 root root 4096 Apr 1 03:44 etc
drwxr-xr-x 2 root root 6 Dec 5 23:43 home
lrwxrwxrwx 1 root root 7 Dec 5 23:43 lib -> usr/lib
lrwxrwxrwx 1 root root 7 Dec 5 23:43 lib64 -> usr/lib
drwxr-xr-x 2 root root 6 Dec 5 23:43 mnt
drwxr-xr-x 2 root root 6 Dec 5 23:43 opt
dr-xr-xr-x 187 root root 0 Apr 1 03:44 proc
drwxr-x— 3 root root 20 Mar 31 11:21 root
drwxr-xr-x 4 root root 33 Apr 1 03:44 run
lrwxrwxrwx 1 root root 7 Dec 5 23:43 sbin -> usr/bin
drwxr-xr-x 4 root root 29 Mar 31 11:21 srv
dr-xr-xr-x 13 root root 0 Apr 1 03:15 sys
drwxrwxrwt 2 root root 6 Mar 31 11:21 tmp
drwxr-xr-x 8 root root 105 Mar 31 11:21 usr
drwxr-xr-x 12 root root 160 Mar 31 11:22 var
當使用 docker run 來建立容器時,Docker 在後台會進行下列的工作:
- 檢查本地端是否存在指定的映像檔,如果不存在就從公有的倉庫下載
- 利用映像檔建立並啟動一個容器
- 分配一個檔案系統,並在唯讀的映像檔層外面掛載一層可讀寫層
- 從 Host 主機設定的網路橋接介面中橋接一個虛擬埠到容器之中
- 從位址 Pool 中設定一個 IP 位址給容器
- 執行使用者指定的應用程式
- 執行完畢後容器終止
8. 進入 Arch Linux 容器
-t 讓 Docker 分配一個虛擬終端機(pseudo-tty) 並綁定到容器的標準輸入上
-i 讓容器的標準輸入保持打開
[root@docker ~]# docker run -t -i docker.io/base/archlinux /bin/bash
[root@a3ae68c6ee14 /]# pacman -Syy
:: Synchronizing package databases…
core 124.3 KiB 302K/s 00:00 [######################] 100%
extra 1678.7 KiB 2.65M/s 00:01 [######################] 100%
community 3.8 MiB 4.42M/s 00:01 [######################] 100%
[root@a3ae68c6ee14 /]# pacman -S vim
resolving dependencies…
looking for conflicting packages…
Packages (3) gpm-1.20.7-7 vim-runtime-8.0.0427-1 vim-8.0.0427-1
Total Download Size: 6.53 MiB
Total Installed Size: 29.65 MiB
:: Proceed with installation? [Y/n] y
:: Retrieving packages…
gpm-1.20.7-7-x86_64 127.5 KiB 310K/s 00:00 [######################] 100%
vim-runtime-8.0.042… 5.2 MiB 4.48M/s 00:01 [######################] 100%
vim-8.0.0427-1-x86_64 1247.8 KiB 5.25M/s 00:00 [######################] 100%
(3/3) checking keys in keyring [######################] 100%
(3/3) checking package integrity [######################] 100%
(3/3) loading package files [######################] 100%
(3/3) checking for file conflicts [######################] 100%
(3/3) checking available disk space [######################] 100%
:: Processing package changes…
(1/3) installing vim-runtime [######################] 100%
(2/3) installing gpm [######################] 100%
(3/3) installing vim [######################] 100%
Optional dependencies for vim
python2: Python 2 language support
python: Python 3 language support
ruby: Ruby language support
lua: Lua language support
perl: Perl language support [installed]
tcl: Tcl language support
:: Running post-transaction hooks…
(1/1) Arming ConditionNeedsUpdate…
9. 退出 exit 或 Ctrl+D
[root@a3ae68c6ee14 /]# exit
exit
[root@docker ~]#
10. 二者使用的核心是相同的
# docker run docker.io/base/archlinux uname -a
Linux dfa510f8be80 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 GNU/Linux
# uname -a
Linux docker.test.ilc.edu.tw 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
11.儲存映像檔到本地端
# docker save -o archlinux.tar docker.io/base/archlinux
# ls -l *.tar
-rw——-. 1 root root 584920064 4月 1 12:12 archlinux.tar
12. 載入本地端映像檔
# docker load –input archlinux.tar
或
# docker load < archlinux.tar
13. 移除映像檔
# docker rmi docker.io/egypcio/freebsd:latest
Untagged: docker.io/egypcio/freebsd:latest
Untagged: docker.io/egypcio/freebsd@sha256:02f6c33382982db829ba63a52ed2467145c290f71f83ae5d8b304c274f809bbd
Deleted: sha256:8f539b0870b1ec6c1552172da492201166440a6f6199a0cd9208820cd377d03a
Deleted: sha256:c92b5d0f8475d3bb10df0bc5e8092da839777747e3653f3cf1cb63b33f17a3ff
Deleted: sha256:474999c372aa6b14e7b8e2afdcab83e2f89b783b243f87d2bbfa9b1a7346962b
Deleted: sha256:7800f80a93336d416612f372faa5f69eb67b353ce6ae9535fa0848f8784c74b1
Deleted: sha256:170b376f64fb30995c140276be3d71dfb256b308d86183ca3b22aa93a79ad548
Deleted: sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef
# docker run -i -d -t docker.io/base/archlinux /bin/bash2332c0ada7596a74cafa5ea4fca41f37259c9cfa6a762a207ec7b313a743e37a
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2332c0ada759 docker.io/base/archlinux “/bin/bash” About a minute ago Up About a minute agitated_yalow
# docker attach agitated_yalow
[root@2332c0ada759 /]#