docker容器管理及使用(完整版)

一.docker安裝
1、Docker版本
社區版(Community Edition):CE (常用)
企業版(Enterprise Edition):EE
2、Docker官網
https://www.docker.com/
3、Docker文檔
https://docs.docker.com
以下以Centos7系統上的安裝爲例(環境需求在Centos7以上,目前Centos7.6是最新的)
https://docs.docker.com/install/linux/docker-ce/centos/
Docker從1.13版本開始,分爲CE和EE。生產中v17的用的比較多。
4、安裝步驟
安裝前先關閉防火牆:systemctl stop firewalld
並禁止開機啓動:systemctl disable firewalld
關閉selinux:vim /etc/selinux/config
docker容器管理及使用(完整版)
1)安裝依賴包
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2)配置yum源(這個yum源會自動下載最新版本的Docker)。執行後,會在/etc/yum.repos.d/ 下新增了一個文件docker-ce.repo
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3)安裝Docker程序
yum install docker-ce -y
4)啓動Docker服務並加入開機啓動
systemctl start docker
systemctl enable docker
5)驗證
docker run hello-world
docker容器管理及使用(完整版)
5、查看Docker版本
docker info/docker version
6、下載一個測試鏡像
1)docker run -it nginx (下載nginx鏡像,並在前臺運行)
docker容器管理及使用(完整版)
2)查看docker進程 docker ps
docker容器管理及使用(完整版)
3)訪問容器 docker inspect 容器ID
docker容器管理及使用(完整版)
docker容器管理及使用(完整版)
4)進入這個容器中 docker exec -it 容器ID bash

二,鏡像管理

1、鏡像是什麼
docker容器管理及使用(完整版)
2、看鏡像的分層
docker history nginx(鏡像名稱)
docker容器管理及使用(完整版)
3.鏡像從哪裏來
docker hub 是由docker公司負責維護的公共註冊中心,下載地址https://hub.docker.com/explore
1) 檢索鏡像倉庫 docker search nginx
2) 圖形界面的鏡像頁面 https://hub.docker.com/explore在這裏可以查找想要的鏡像,並有使用說明.
3) 修改鏡像地址,因爲默認是國外的鏡像地址,下載速度慢,所以可以修改成國內的鏡像地址
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker容器管理及使用(完整版)
再重啓docker服務後就生效了:systemctl restart docker
4.鏡像與容器的聯繫
docker容器管理及使用(完整版)
1)後臺運行鏡像: docker run -itd nginx
2)Docker可以通過一個鏡像來創建多個容器,鏡像沒有複製,只是標記引用。
docker容器管理及使用(完整版)
3)通過命令docker exec -it cfece52e4b02 bash 進入容器後,就進入了可寫區域(可寫層)。在容器中做的修改只保留在容器中,並沒有修改鏡像中的內容。當這個容器被刪除後,在這個容器中做的修改就沒有了。
4)鏡像啓動後要加載系統文件 resolv.conf hosts hostname
docker容器管理及使用(完整版)

5.管理鏡像常用命令
docker容器管理及使用(完整版)
docker image save jdk1.8 > jdk.tar#將當前的一個鏡像文件保存爲一個文件
docker image load < jdk.tar #然後將文件導入到鏡像環境中

三 容器管理
1.創建容器常見選項
docker container run 選項 image
docker容器管理及使用(完整版)
示例:docker container run -d -p 88:80 --name web nginx
2.容器運行資源限制
docker容器管理及使用(完整版)
docker容器管理及使用(完整版)
注意:當容器沒有內存和cpu限制時,會使用所有物理內存和所有的cpu資源。
建議:如果一個系統上跑多個容器,建議做下資源限制。
3.管理容器常用命令
docker容器管理及使用(完整版)
docker ps -l:查看最近創建的容器
docker ps -a:查看所有容器

四. 管理應用程序數據

docker 提供三種方式將數據從宿主機掛載到容器中:
volumes: Docker管理宿主機文件系統一部分(/var/lib/docker/volumes/)
bind mounts: 將宿主機上的任意位置的文件或者目錄掛載到容器中。
tmpfs:掛載存儲在主機系統的內存中,而不會寫入主機的文件系統。如果不希望將數據持久存儲到任何位置,可以使用tmpfs.

1.volumes管理示例

docker volume create nginx-vol #創建容器卷
docker volume ls #查看所有容器卷
docker volume inspect nginx-vol(/var/lib/docker/volumes/nginx-vol/_data 這是數據卷存放位置)
[
    {
        "CreatedAt": "2019-06-18T17:59:40+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx-vol/_data",
        "Name": "nginx-vol",
        "Options": {},
        "Scope": "local"
    }
]
docker run -d --name=nginx01  -p 88:80  --mount src=nginx-vol,dst=/usr/share/nginx/html  nginx 
#用卷創建一個容器。
修改/var/lib/docker/volumes/nginx-vol/_data/index.html,
新添加一行:<p><em>this is new content</em></p>
然後本地瀏覽器訪問:

docker容器管理及使用(完整版)

如果容器nginx01不可用,隨後可以創建個新的容器,做同樣的掛載目錄,數據依然在。
docker run -d --name=nginx02  -p 88:80  --mount src=nginx-vol,dst=/usr/share/nginx/html  nginx 

特點:移植性強;多個容器之間可以掛載相同的卷;多個運行容器之間共享數據。

2.bind mounts
兩種方式:

docker  run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/etc/nginx/html nginx
docker run -d -it --name=nginx-test -v /app/wwwroot:/etc/nginx/html  nginx

注意:如果container中的目錄已經有內容,那麼docker會使用host上的目錄將其覆蓋掉
區別:
docker容器管理及使用(完整版)
五. 容器網絡
docker容器管理及使用(完整版)
舉例:
2)Docker pull busybox
docker run -it --name bs1 --net=host busybox
進入容器,ifconfig執行後的結果和宿主機網絡環境一致。
docker容器管理及使用(完整版)
3)docker run -it --name bs2 --net=none busybox
docker容器管理及使用(完整版)
4)-net=container:Name/ID
docker run -itd --name bs -p 99:80 busybox
創建一個容器,需求:想訪問99能訪問對應的80端口的服務。
docker run -d --name nginx80 --net container:bs nginx
#其實把nginx80容器的網絡空間賦予給bs容器。
查看bs的網絡空間查看,能看到80端口。
docker容器管理及使用(完整版)
5)自定網絡實現內部dns發現。
docker network create bs-test
docker run -it --name bs1 --net bs-test busybox #運行容器1
/ # ping bs2

docker run -it --name bs2 --net bs-test busybox #運行容器2
/ # ping bs1

在每個容器中ping 對方的name,都能平通。

六.Harbor倉庫
Harbor概述
官方地址:https://github.com/goharbor/harbor
docker容器管理及使用(完整版)

1.Docker-compose安裝
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.Harbor安裝
docker容器管理及使用(完整版)
Docker-compose ps
docker容器管理及使用(完整版)
3.推送鏡像到harbor中
1)docker tag nginx:new 188.121.234.176/library/nginx:v1 #首先對要上傳的鏡像打標籤
2)docker push 188.121.234.176/library/nginx:v1 #推送鏡像到harbor中的library倉庫。
docker容器管理及使用(完整版)
提示如上的時候操作:
[root@docker-virtualenv harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries": ["188.121.234.176"]
}
重啓docker,docker-compose
systemctl start docker
3)再次執行docker push 188.131.244.172/library/nginx:v1,提示“requested access to the resource is denied”,這是因爲library倉庫只允許下載,不允許上傳。
docker容器管理及使用(完整版)
解決辦法:
docker容器管理及使用(完整版)
docker容器管理及使用(完整版)
4) 再次執行
docker login 188.131.244.172
輸入用戶密碼
docker push 188.131.244.172/library/nginx:v1.
docker容器管理及使用(完整版)
4.拉取鏡像:
docker pull 188.131.244.172/library/tomcat:v1

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