--- tags: SRE_靜宜(PU) --- # Docker Container <!--13-Docker-Container--> ## 搜尋與下載 Docker Image - `pull`: docker.io 原廠 /library/busybox $ docker search busybox $ docker pull busybox - 顯示 images $ docker images ## 建立與執行軟體貨櫃 (Container) 主機 - 建立軟體貨櫃 (再次確認 Linux Namespace 啟動) - `--name`: container 名稱 - `-it`: 虛擬終端機 - `-d`: 在背景執行 - `busybox`: 使用 busybox 光碟片 $ docker run --name b1 -it -d busybox /bin/sh - 刪除 container $ docker rm b1 - 顯示所有 container, `-a `: all $ docker ps -a - 再次建立 container $ docker run --name b1 -it -d busybox /bin/sh - 利用虛擬終端機進入 b1 container, 使用 sh 程式執行 $ docker exec -it b1 sh - 查看 ip /# ifconfig - 檢測是否連到外網 /# `ping www.hinet.net` - 查看有多少成是在執行 - ps: process /# ps aux /# exit - 從外面將 container 關機 $ docker stop b1 - 強制刪除 container - `-f`: 強制(不論是否在執行) $ docker rm -f b1 xxxx - 建立 container - `--name`: container 名稱 - `-d`: 在背景執行 - `-p`: port - `nginx`: 使用 nginx 光碟片 $ docker run --name n1 -d -p 8819:80 nginx --- <!----> - 管理軟體貨櫃 (Container) 主機 - 建立 container - `--name`: container 名稱 - `-it`: 虛擬終端機 - `nginx`: 使用 alpine 光碟片 $ docker run --name a1 -it alpine sh - 查看 ip /# ifconfig - 檢測是否連到外網 /# `ping www.hinet.net` - 查看有多少成是在執行 - ps: process /# ps aux /# exit $ docker ps -a $ docker start a1 $ docker ps -a $ docker rm -f a1 $ docker run --name a1 -it ubuntu sh / # hostname -i / # apt update / # apt install ssh / # exit $ docker export a1 > a1.tar $ docker rm -f a1 ## 認識 Alpine Linux - Alpine Linux 是一套由社群開發,以安全為導向的 Linux 作業系統,目前最新的版本 v3.6.2 在 2017-06-17 發布。 - 跟一般的 Linux 發行版不一樣的地方是 Alpine 是使用 musl libc 和 busybox 來減少系統需求容量(5 MB )和執行消耗資源。 - 比起其他輕量化 Image (如:Busybox,Image 大小為1.113MB), Alpine 的優勢在於多了像是 apt 之於 Ubuntu 這樣的套件管理工具 apk ,官方提供了大量的套件供開發者使用,可以透過網站或者直接下 apk 指令進行查詢或者安裝。 * Alpine 的 busybox 是 HardLink, 而不是 Softlink. Docker busybox image 沒有提供 套件安裝平台 - 建立 Alpine 軟體貨櫃主機 $ docker run --name a1 -it alpine sh /# busybox | grep http [重要] Docker Alpine Image 內建的 busybox 並沒提供 httpd 功能 - 下載 Busybox 執行檔 / # wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 - 安裝 Busybox 執行檔,並給予執行權限 / # chmod +x busybox-x86_64 - 移動 busybox-x86_64 到 bin 並取名為 busybox / # mv busybox-x86_64 bin/busybox - 執行 busybox 命令 / # busybox | grep httpd ## 建立 Busybox Httpd 網站伺服器 - 製作網站目錄及首頁 / # mkdir www / # `echo '<h1>Busybox HTTPd</h1>' > www/index.html` - 啟動 Busybox Httpd 網站伺服器 / # busybox httpd -p 8888 -h www - 安裝網頁工具 / # apk update / # apk add elinks curl - 取得網頁 / # `curl http://localhost:8819` - 檢視網頁 / # `elinks -dump 1 http://localhost:8819` / # exit ## 製作 a1 image 並上載至 Docker HUB $ docker ps -a - 燒成光碟 $ `docker commit a1 <Login Name>/a1` - 登入 $ docker login - 上傳 $ `docker push <Login Name>/a1` - 下載別人的光碟小鋪的光碟 $ docker pull xxx/xx - 登出 $ docker logout [重要] 關閉 Docker Host 之前, 記得執行 docker logout, 然後刪除 /home/bigred/.docker 目錄 $ docker rm a1 - 使用自製 a1 image $ `docker run --name testa1 -d <login name>/a1 httpd -p 8819 -h www` $ docker ps -a - 因 httpd 沒在前景啟動, 以致 testa1 貨櫃主機沒啟動 $ docker rm testa1 貨櫃電腦 Application container 必須要用光碟並在前景執行 - 重新建立 testweb 貨櫃主機 - `-f`: 保持在前端一直執行 $ `docker run --name testa1 -d <login name>/a1 httpd -f -p 8819 -h www` - 查看 ip $ docker exec testa1 hostname -i $ `curl http://172.17.0.2:8819` ## 建立 Container 外部連線 - 創網路,名叫 mynet $ docker network create mynet - cat *創網路的檔案* - 重新建立 testa1 貨櫃主機, 並指定外部連接 Port $ `docker run --name testa1 -d --net=mynet -p 8080:8819 kuan0915/a1 httpd -f -p 8888 -h www` $ `curl http://localhost:80` - 以強制方式移除 testa1 $ docker rm -f testa1
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up