1、第一個Docker鏡像和容器——HelloWorldnginx
1.學習幾條命令docker
2.案例:咱們從遠程pull一個hello-word鏡像ubuntu
(1)拉取鏡像,能夠看到不加[:TAG] 會默認拉取最新的瀏覽器
docker pull hello-word Using default tag: latest latest: Pulling from library/hello-world 5b0f327be733: Pull complete Digest: sha256:175735360662078abd70dacb73c5518d5b3ae7c1ed069d22def5da57c3e917d6 Status: Downloaded newer image for hello-world:latest
(2)查看本地鏡像,REPOSITORY鏡像名字,TAG鏡像版本,IMAGE ID 64位字符串(這裏只顯示了12位,被截取了),惟一標識鏡像,CREATED最後修改時間,SIZE鏡像大小。bash
C:\WINDOWS\system32>docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 05a3bd381fc2 7 weeks ago 1.84kB
注意:鏡像的名稱爲何是hello-world,這個是能夠到遠程鏡像倉庫中心能夠查詢到的,而pull時只提供鏡像的名稱,而沒有倉庫地址信息,則默認到Docker的鏡像倉庫中心http://hub.docker.com獲取鏡像。網絡
(3)運行hello-world鏡像,若是成功的顯示以下,表示成功運行,且你的Docker安裝是沒有問題的。app
C:\WINDOWS\system32>docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 05a3bd381fc2 7 weeks ago 1.84kB C:\WINDOWS\system32>docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. 爲了生成下面的消息,Docker花費了如下步驟: To generate this message, Docker took the following steps: 1. Docker 客戶端鏈接了daemon 1. The Docker client contacted the Docker daemon. 2. Docker daemon 從Docker倉庫拉取了hello-world鏡像 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. Docker daemon 從這個鏡像中建立了一個容器,這個容器運行了一個可執行文件,可執行文件能夠產生你當前看到的輸出 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. Docker daemon 把輸出變成輸出流給到Docker客戶端,Docker客戶端將它發送到了你的終端 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/
3.圖解Docker從拉取鏡像到運行鏡像整個流程:tcp
2、Docker運行Nginx鏡像ide
1.Nginx鏡像學習
2.運行Nginx鏡像步驟
(1)前往網易蜂巢鏡像中心https://c.163.com/hub#/m/home/查找Nginx鏡像,須要登陸!而後搜索Nginx,能夠看到以下,有兩個Nginx鏡像,一個是library/nginx,一個是public/nginx,經過圖標也能夠區別,第一個也就是帶有鯨魚圖標的是從Docker官網的鏡像倉庫同步過來的,和Dokcer的是一摸同樣的,咱們使用Docker的鏡像,咱們點開它,而後複製下載地址http://docker pull hub.c.163.com/library/nginx:latest。
(2)而後到終端上將它pull下來,再查看鏡像,能夠看到Nginx鏡像成功拉取下來了!
C:\WINDOWS\system32>docker pull hub.c.163.com/library/nginx:latest latest: Pulling from library/nginx 5de4b4d551f8: Pull complete d4b36a5e9443: Pull complete 0af1f0713557: Pull complete Digest: sha256:f84932f738583e0169f94af9b2d5201be2dbacc1578de73b09a6dfaaa07801d6 Status: Downloaded newer image for hub.c.163.com/library/nginx:latest C:\WINDOWS\system32>docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 05a3bd381fc2 7 weeks ago 1.84kB hub.c.163.com/library/nginx latest 46102226f2fd 6 months ago 109MB
(3)咱們使用docker run hub.c.163.com/library/nginx運行Nginx鏡像
docker run hub.c.163.com/library/nginx
運行以後,你會發現沒有任何反應,咱們再開一個終端查看下當前運行的容器,你能夠看到Nginx其實已經運行起來了,說明這是使用前臺啓動的方式,咱們使用Ctrl+C把它停了,再次docker ps,發現已經中止運行了。
C:\WINDOWS\system32>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f756bb16d3cc hub.c.163.com/library/nginx "nginx -g 'daemon ..." About a minute ago Up About a minute 80/tcp modest_poincare
其實最好的運行方式是後臺運行,使用docker run -d代表運行程序在後臺,並打印容器的ID (若是不知道用什麼參數,可使用docker run --help查看幫助),再經過查看docker ps是否成功運行。
C:\WINDOWS\system32>docker run -d hub.c.163.com/library/nginx 6f80393759d2ac6884faa5a5ff78588e7e57838e613c054cb960513c730af981
(4)進入容器內容 docker exec -it 6f80 bash
C:\WINDOWS\system32>docker exec -it 6f80 bash root@6f80393759d2:/# ls bin dev home lib32 libx32 mnt proc run srv tmp var boot etc lib lib64 media opt root sbin sys usr root@6f80393759d2:/# which nginx /usr/sbin/nginx root@6f80393759d2:/# exit exit
3.Docker網絡
(1)網絡類型
Docker的隔離性,網絡也是隔離性的一部分,Linux用了namespace(即命名空間)來進行資源的隔離,好比pid namespace就是用來隔離進程的,network namespace就是用來隔離網絡的,每個network namespace都提供了一個獨立的網絡環境,包括像網卡、路由、iptable規則等都是與其餘的network namespace隔離的。
(2)端口映射:在使用Bridge模式的時候,就涉及到如何讓容器中的端口能夠在主機上訪問到(由於它有獨立的namespace),這個時候就須要用到端口映射技術。Docker能夠指定,你想把容器內的某一個端口和容器所在主機上的端口作一個映射,當你訪問主機的端口時,其實就是訪問容器裏的一個端口。
咱們將Nginx容器的端口和主機的端口作一個端口映射,這樣訪問主機的指定端口時就能夠訪問Nginx容器中的指定端口了:
(1)使用docker run -d -p 8080:80 hub.c.163.com/library/nginx命令
C:\WINDOWS\system32>docker run -d -p 8080:80 hub.c.163.com/library/nginx b3d5a8b4472b0e072abdc496c2a0748a5a341a3c260ba932dcc40a0216aea7f1 C:\WINDOWS\system32>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3d5a8b4472b hub.c.163.com/library/nginx "nginx -g 'daemon ..." 8 seconds ago Up 7 seconds 0.0.0.0:8080->80/tcp practical_torvalds
咱們上面能夠看到咱們將本機的8080端口映射到了Nginx容器中的80端口,而且成功啓動,咱們在瀏覽器訪問本機的8080端口,看是否能夠訪問到Nginx容器的80端口(當看到下圖是,代表成功的訪問到了Nginx的歡迎頁):
(2)使用docker run -d -P hub.c.163.com/library/nginx命令,表示主機的全部端口能夠和容器作端口映射,而且會隨機分配一個端口32768映射到80端口,咱們再次使用瀏覽器訪問本機8080端口已經沒法打開了,此次須要訪問分配的隨機端口32768進行訪問!
C:\WINDOWS\system32>docker run -d -P hub.c.163.com/library/nginx 8e539fc8a0cd3a357bc466e7cbdfb7386430ce53aa008338a2c5f21f790c014c C:\WINDOWS\system32>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e539fc8a0cd hub.c.163.com/library/nginx "nginx -g 'daemon ..." 8 seconds ago Up 8 seconds 0.0.0.0:32768->80/tcp frosty_darwin
本文爲原創文章,若是對你有一點點的幫助,別忘了點贊哦!比心!如需轉載,請註明出處,謝謝!