一、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