簡介:
Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從 Apache2.0 協議開源。
Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。
容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。docker
經常使用命令ubuntu
** # docker ps // 查看目前啓動的容器 # docker ps -a // 查看全部的容器 # docker start 5917eac21c36 // 啓動容器ID爲5917eac21c36的容器 # docker stop 5917eac21c36 // 關閉容器ID爲:5917eac21c36 的容器 # docker restart 5917eac21c36 // 重啓容器ID爲:5917eac21c36 的容器 # docker logs 2b1b7a428627 //查看容器ID爲:。。。的容器日誌 # docker pull ubuntu // 獲取鏡像 # docker run -it ubuntu /bin/bash // 以命令行模式進入鏡像未Ubuntu的容器 # docker run -itd ubuntu /bin/bash // -d 是默認不進入容器在後臺運行 # docker rmi -f // 刪除鏡像ID爲b93646ae03d0的鏡像 # docker rm -f // 刪除容器ID爲43810b8e35d1的容器 # docker run -it -p 808:80 centos/dvwa:v3 /bin/bash //將內部80端口影響到本機808端口上 ,若是須要映射多個端口能夠繼續添加-p 參數 eg: -p 223:22 -p 63306:3306 # docker run -d -P centos/dvwa:v3 /bin/bash // 將內部端口隨機映射到物理機上 # docker top 67094b1dec19 // 查看容器進程 # docker search httpd //查找鏡像 也能夠去docker官網搜索,Docker Hub 網址爲: https://hub.docker.com/
**centos
[root@1inux ~]# docker run ubuntu:15.10 /bin/echo "Hello world" Hello world
各個參數解析:bash
docker: Docker 的二進制執行文件。 run: 與前面的 docker 組合來運行一個容器。 ubuntu:15.10 指定要運行的鏡像,Docker 首先從本地主機上查找鏡像是否存在,若是不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。 /bin/echo "Hello world": 在啓動的容器裏執行的命令
運行交互式容器:網絡
[root@1inux ~]# docker run -it ubuntu:15.10 /bin/bash root@9d9162035d58:/# cat /etc/issue Ubuntu 15.10 \n \l
參數解析:app
-t: 在新容器內指定一個僞終端或終端。 -i: 容許你對容器內的標準輸入 (STDIN) 進行交互。
可使用 exit 或是 CTRL+D退出容器ide
進入容器性能
在使用 -d 參數時,容器啓動後會進入後臺。此時想要進入容器,能夠經過如下指令進入: docker attach docker exec:推薦你們使用 docker exec 命令,由於此退出容器終端,不會致使容器的中止。
導出和導入容器ui
導出容器 [root@1inux ~]# docker export 67094b1dec19 >centos.dvwa.tar //導出容器ID:67094b1dec19到本地 導入容器: # cat centos.dvwa.tar | docker import - centos/dvwa:v1 // 注意 import後有「-」 sha256:6dc11a8857af3eabf0f42a270bda3bd98849ab237f1d3277562e079b2fbdca8f
建立鏡像
一、從已建立的鏡像中,更新鏡像,並提交這個鏡像
二、使用Dockerfile指令來建立一個新的鏡像url
更新副本: # docker commit -m="has dvwa" -a="glodon_1inux" 67094b1dec19 centos/dvwa:v1 -m: 提交的描述信息 -a: 指定鏡像做者 67094b1dec19:容器 ID centos/dvwa:v1: 指定要建立的目標鏡像名 # 經過如下命令啓動 # docker run -it -p 80:80 centos/dvwa:v1
構建新的鏡像
咱們使用命令 docker build , 從零開始來建立一個新的鏡像。爲此,咱們須要建立一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建咱們的鏡像。
編寫Dockerfile
# cat Dockerfile FROM 1inux/centos:6.6 MAINTAINER Fisher "MQ@1inux" COPY ./rasp-*/rasp /rasp // .rasp-* 和Dockerfile在一個目錄下 RUN echo "cloud.enable: true" >> /rasp/conf/openrasp.yml \ && echo "cloud.backend_url: https://grasp-test.glodon.com/" >> /rasp/conf/openrasp.yml \ && echo "cloud.app_id: d3f92106daa329948879e683ee1d6d39641723ca" >> /rasp/conf/openrasp.yml \ && echo "cloud.app_secret: MRLTPAdlR2gG2iJrv6O1pEZrgrauVoxlOKH8nOWnuDa" >> /rasp/conf/openrasp.yml
編寫完成後,經過 docker build 命令來構建一個鏡像
#** docker build -t 1inux/centos-rasp:6.6 .** Sending build context to Docker daemon 42.06MB Step 1/4 : FROM 1inux/centos:6.6 ---> b93646ae03d0 Step 2/4 : MAINTAINER Fisher "MQ@1inux" ---> Running in f34a84c360ce Removing intermediate container f34a84c360ce ---> d6104f825a18 Step 3/4 : COPY ./rasp-*/rasp /rasp ---> 70c531b49efe Step 4/4 : RUN echo "cloud.enable: true" >> /rasp/conf/openrasp.yml && echo "cloud.backend_url: https://grasp-test.glodon.com/" >> /rasp/conf/openrasp.yml && echo "cloud.app_id: d3f92106daa329948879e683ee1d6d39641723ca" >> /rasp/conf/openrasp.yml && echo "cloud.app_secret: MRLTPAdlR2gG2iJrv6O1pEZrgrauVoxlOKH8nOWnuDa" >> /rasp/conf/openrasp.yml ---> Running in 98952e495c27 Removing intermediate container 98952e495c27 ---> 3f4001f43793 Successfully built 3f4001f43793 Successfully tagged 1inux/centos-rasp:6.6
參數說明:
-t :指定要建立的目標鏡像名
. :Dockerfile 文件所在目錄,能夠指定Dockerfile 的絕對路徑
容器互聯:
新建網絡:
# docker network create -d bridge 1inux-test // -d 指定Docker網絡類型 ,有 bridge、overlay。 # docker network ls //查看網絡 啓動兩個同一網絡的容器 # docker run -idt --name test1 --network 1inux-test 1inux/centos-rasp:6.6 /bin/bash # docker run -idt --name test2 --network 1inux-test 1inux/centos-rasp:6.6 /bin/bash 效果以下; [root@localhost /]# docker exec -it e8cdc773df3e /bin/bash [root@e8cdc773df3e /]# **ping test1** PING test1 (172.20.0.2) 56(84) bytes of data. 64 bytes from test1.1inux-test (172.20.0.2): icmp_seq=1 ttl=64 time=0.414 ms --- test1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 968ms rtt min/avg/max/mdev = 0.414/0.414/0.414/0.000 ms [root@e8cdc773df3e /]# ping test2 PING test2 (172.20.0.3) 56(84) bytes of data. 64 bytes from e8cdc773df3e (172.20.0.3): icmp_seq=1 ttl=64 time=0.082 ms 64 bytes from e8cdc773df3e (172.20.0.3): icmp_seq=2 ttl=64 time=0.100 ms
推送鏡像
用戶登陸後,能夠經過 docker push 命令將本身的鏡像推送到 Docker Hub。
如下命令中的 username 請替換爲你的 Docker 帳號用戶名。
$ docker tag ubuntu:18.04 username/ubuntu:18.04 $ docker image ls