Docker學習日記

簡介:
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
相關文章
相關標籤/搜索