Docker 容器與 swarm 集羣實戰——docker容器的安裝、常用指令、簡單應用的搭建(http、nginx)

一、Docker 容器的安裝

1.安裝docker,docker 容器軟件包具有依賴性
在這裏插入圖片描述
注意:此處採用yum倉庫解決,安裝18.06版本
在這裏插入圖片描述

[root@server1 yum.repos.d]# yum install -y docker-ce-18.06.1.ce-3.el7.x86_64
[root@server1 ~]# systemctl start docker
[root@server1 ~]# docker --version			#查看版本號
Docker version 18.06.1-ce, build e68fc7a

docker開啓後,linux 系統會爲 docker 分配 ip
在這裏插入圖片描述

二、docker 常用的指令

# docker load -i ubuntu.tar  導入鏡像
# docker run -it --name vm1 ubuntu    創建容器(以ubuntu鏡像爲模板)
# docker ps  查看容器狀態
# docker ps -a   查看容器狀態(包括不活躍的容器)
# docker attach vm1   連接容器
# docker top vm1   查看容器進程
# docker logs vm1 查看容器指令輸出 -f 參數可以實時查看
# docker inspect vm1 查看容器詳情
# docker stats vm1 查看容器資源使用率
# docker diff vm1 查看容器修改
# docker stop vm1 停止容器
# docker start vm1 啓動容器
# docker kill vm1 強制幹掉容器
# docker restart vm1 重啓容器
# docker pause/unpause vm1  暫停/恢復容器
# docker rm vm1  刪除容器

docker 命令的用法:
如果沒有命令補齊功能:(裝了之後需要先退出終端,再連上)
[root@server1 ~]# yum install -y bash-*
在這裏插入圖片描述

三、鏡像的導入和容器的使用

1.獲取一些鏡像的資源
在這裏插入圖片描述
2.搭建小遊戲服務器
在這裏插入圖片描述

[root@server1 images]# docker load -i game2048.tar

查看導入的鏡像

[root@server1 ~]# docker images game2048

在這裏插入圖片描述

運行鏡像(-d 打入後臺;–name 自定義名字;-p 映射端口)

[root@server1 ~]# docker run -d --name 2048gameweb -p 80:80 game2048
b03d32ffb6c050b72f9261e3fc19c09e7a88c5d2258f6394cd70cfa278053d78

在這裏插入圖片描述
測試:瀏覽器訪問172.25.254.1
在這裏插入圖片描述

3.nginx 服務器的搭建
在這裏插入圖片描述
此時80端口是被佔用的
導入nginx的鏡像,並運行

[root@server1 images]# docker load -i nginx.tar
[root@server1 ~]# docker run -d --name web1 nginx
273fc066982f6fd3f72c0c60744b35a7469af0dfafcb38f2b4cd252f45808e37
#此時沒有影射端口,所以走默認,此時因爲再虛擬機,會衝突(和真機)

[root@server1 ~]# docker inspect web1 查看信息
在這裏插入圖片描述

注意:此時不能通過瀏覽器訪問,因爲本實驗docker在虛擬設備上部署,所以直接瀏覽器訪問172.17.0.3會發生衝突

測試:curl命令會看到nginx的默認發佈頁面
在這裏插入圖片描述

  • 方法1:修改默認發佈頁面
    -it 交互式
    Ctrl + pq #不關閉退出
    Ctrl + d 退出(會關閉)
    Cmd表示再執行時,默認執行的指令
[root@server1 ~]# docker container exec -it web1 bash		#進入到容器裏,有些應用沒bash
root@273fc066982f:/# cd /usr/share/nginx/html/
root@273fc066982f:/usr/share/nginx/html# ls
50x.html  index.html
root@273fc066982f:/usr/share/nginx/html# echo www.westos.org > index.html 
root@273fc066982f:/usr/share/nginx/html# exit

在這裏插入圖片描述

  • 方法2:cp方式修改默認發佈頁
[root@server1 ~]# cd /tmp/
[root@server1 tmp]# ls
[root@server1 tmp]# mkdir docker
[root@server1 tmp]# cd docker/
[root@server1 docker]# vim index.html
[root@server1 docker]# cat index.html 
www.2.org
[root@server1 docker]# docker container cp --help

Usage:	docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
	docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

Options:
  -a, --archive       Archive mode (copy all uid/gid information)
  -L, --follow-link   Always follow symbol link in SRC_PATH
[root@server1 docker]# docker container cp index.html web1:/usr/share/nginx/html

在這裏插入圖片描述

基礎的 docker 指令
  • attach
[root@server1 ~]# docker run -it --name vm1 ubuntu
root@d6a7705a118a:/# exit		#ctrl d 退出會關閉

在這裏插入圖片描述
[root@server1 ~]# docker start vm1 開啓vm1
vm1
在這裏插入圖片描述

[root@server1 ~]# docker container attach vm1		#連接容器(會卡頓,敲回車就正常)
root@d6a7705a118a:/# 
root@d6a7705a118a:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@d6a7705a118a:/# read escape sequence		#ctrl pq 退出不關閉

在這裏插入圖片描述
##有些鏡像是沒有bash的:
[root@server1 images]# docker load -i rhel7.tar

[root@server1 ~]# docker run -it --name vm2 rhel7 bash		#需要自己加指令
bash-4.2# exit

ubuntu和rhel7可以看見CMD的不同
在這裏插入圖片描述

  • commit 提交;針對容器

在這裏插入圖片描述

[root@server1 ~]# docker commit vm1 ubuntu:v1			#將vm1鏡像提交爲ubuntu:v1
sha256:41494af254baa651c137315d8a52f308e02d67d21b6f946fd012a0d6f4c4726f

在這裏插入圖片描述

  • diff
    在這裏插入圖片描述

  • export:導出—import:導入
    在這裏插入圖片描述

  • logs 詳細顯示操作,包括空格指令

在這裏插入圖片描述

  • ls
    在這裏插入圖片描述
  • port
    在這裏插入圖片描述
  • stop
    在這裏插入圖片描述

[root@server1 ~]# docker ps -qa 取id
在這裏插入圖片描述
[root@server1 docker]# docker rm -f docker ps -qa #刪除容器

  • Prune: #刪除停止的容器

[root@server1 ~]# docker container prune
在這裏插入圖片描述

  • stats #相當於top命令,查看cpu情況

[root@server1 ~]# docker container stats
在這裏插入圖片描述

  • Top: 進程查看

[root@server1 ~]# docker container top 2048gameweb
在這裏插入圖片描述

  • images 鏡像
  • network 網絡

在這裏插入圖片描述

  • Volume:邏輯卷

在這裏插入圖片描述

鏡像的分層結構和共享資源

容器是共享內核的
在這裏插入圖片描述
注意:此時的ubuntu和rhel7都是相同的內核

分層結構:v1是在laster的基礎上建的
在這裏插入圖片描述

注意:底層採用相同的188M

實驗測試效果:
[root@server1 ~]# docker run -it --name vm1 rhel7 bash
bash-4.2# touch file{1..10}
bash-4.2# exit
d[root@server1 ~]# docker commit vm1 rhel7:v1
sha256:8776a62870aea062d5d382dba1af614b6bdf9e91606cec87fcc2c8380b04c363
[root@server1 ~]# docker rm -f vm1
vm1
[root@server1 ~]# docker run -it --name vm1 rhel7:v1 bash
bash-4.2# ls
bin   dev  file1   file2  file4  file6	file8  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  file10  file3  file5  file7	file9  lib   media  opt  root  sbin  sys  usr
bash-4.2# touch file{20..30}
bash-4.2# exit
[root@server1 ~]# docker commit vm1 rhel7:v2
sha256:a9b7438c8f8d89ed9814d3d219a5829dac15035ca2d36bf80f614c316105c628
[root@server1 ~]# docker rm vm1
vm1
[root@server1 ~]# docker images rhel7
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
rhel7               v2                  a9b7438c8f8d        21 seconds ago       140MB
rhel7               v1                  8776a62870ae        About a minute ago   140MB
rhel7               latest              0a3eb3fde7fd        4 years ago          140MB

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章