天天看點

docker安裝及常用指令及docker倉庫私有化

docker常用指令

檢視
docker images # 列出所有鏡像(images)
docker ps # 列出正在運作的容器(containers)
docker ps -a # 列出所有的容器
docker pull centos # 下載下傳centos鏡像
docker top <container> # 檢視容器内部運作程式

容器
docker stop <container> # 停止一個正在運作的容器,<container>可以是容器ID或名稱
docker start <container> # 啟動一個已經停止的容器
docker restart <container> # 重新開機容器
docker rm <container> # 删除容器

docker run -i -t -p :80 <container> /bin/bash # 運作容器并做http端口轉發
docker exec -it <container> /bin/bash # 進入ubuntu類容器的bash
docker exec -it <container> /bin/sh # 進入alpine類容器的sh

docker rm `docker ps -a -q` # 删除所有已經停止的容器
FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i # windows系統,用上面的指令會出錯:unknown shorthand flag: 'a' in -a
docker kill $(docker ps -a -q) # 殺死所有正在運作的容器,$()功能同``

送出/導出
docker build --rm=true -t hjue/lamp . # 建立映像檔案。–rm 選項是告訴Docker,在建構完成後删除臨時的Container,Dockerfile的每一行指令都會建立一個臨時的Container,一般這些臨時生成的Container是不需要的
docker commit 3a09b2588478 mynewimage # 送出你的變更,并且把容器儲存成鏡像,命名為mynewimage,3a09b2588478為容器的ID

docker save mynewimage | bzip2 -9 -c> /home/save.tar.bz2 # 把 mynewimage 鏡像儲存成 tar 檔案
bzip2 -d -c < /home/save.tar.bz2 | docker load # 加載 mynewimage 鏡像

docker export <CONTAINER ID> > /home/export.tar # 導出Image
cat /home/export.tar | sudo docker import - mynewimage # 導入Image鏡像

鏡像
docker run -i -t centos /bin/bash # 運作centos鏡像
docker run -d -p 80:80 hjue/centos-lamp # 運作centos-lamp鏡像

docker rmi [image-id] # 删除鏡像
docker rmi $(docker images -q) # 删除所有鏡像
docker rmi $(sudo docker images --filter "dangling=true" -q --no-trunc) # 删除無用鏡像
幫助
docker run --help

關閉容器
在容器内使用exit,指令容器關閉,而不是背景運作。
如果想讓容器一直運作,可以使用快捷鍵 ctrl+p ctrl+q 此時容器的狀态為Up

啟動,停止,重新開機,附着
~$ docker start aa97ba3292ce
~$ docker stop aa97ba3292ce
~$ docker restart aa97ba3292ce
~$ docker attach aa97ba3292ce


跟蹤docker日志,Ctrl + C 退出跟蹤
docker logs --tail 0 -f aa97ba3292ce

顯示最後10行日志
docker logs --tail 10 aa97ba3292ce
           

安裝docker

yum install -y yum-utils
yum-config-manager \ --add-repo \   https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager \ --add-repo \   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast //更新緩存

curl -sSL https://get.daocloud.io/docker | sh
//方法二: yum install -y docker-ce docker-ce-cli containerd.io

啟動
systemctl enable docker //設定docker開機自啟動
systemctl start docker  //啟動docker
systemctl status docker  //檢視程序狀态
           

安裝docker-compose

百度網盤下載下傳docker-compose執行檔案
連結: https://pan.baidu.com/s/109NGbbzAY2tpTGzVGNm4YQ?pwd=1a2b
1,把百度網盤下載下傳的docker-compose重名為docker-compose,上傳到/usr/local/bin/目錄下
2,增加可執行權限: chmod +x /usr/local/bin/docker-compose
驗證安裝成功: docker-compose -v
           

安裝docker私有倉庫

docker run -d -p 5000:5000 -v /var/docker/registry:/var/lib/registry --restart=always --name docker_registry registry
檢視倉庫:  http://IP:5000/v2/_catalog

用戶端配置http通路:  在用戶端的/etc/docker/目錄下(如果目錄不存在就建立一個)添加檔案: daemon.json  内容如下
{"insecure-registries": ["10.10.3.180:5000","倉庫IP:5000"]}
然後要重新開機docker
systemctl daemon-reload
systemctl restart docker
           

安裝harbor(帶使用者管理的私有倉庫)

百度網盤下載下傳harbor離線安裝包 harbor-offline-installer-v2.4.1.tgz
連結: https://pan.baidu.com/s/109NGbbzAY2tpTGzVGNm4YQ?pwd=1a2b
把安裝包 harbor-offline-installer-v2.4.1.tgz 上傳到到任意目錄
解壓 tar -zxvf harbor-offline-installer-v2.4.1.tgz
解壓完成後會在目前目錄生成harbor目錄
進入目錄cd harbor
複制和修改harbor目錄下的harbor.yml檔案
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
注釋掉htps,修改hostname (本機IP),其他都可以不用動。
安裝: 
[[email protected] harbor]# ./prepare 
[[email protected] harbor]# ./install.sh
           

驗證安裝成功:

docker ps 能看到一堆啟動的容器

浏覽器輸入本機IP能看到Harbor登入界面, 預設使用者名密碼: admin / Harbor12345

Harbor的使用

安裝好Harbor之後有個自帶的倉庫library, 可以直接用

用戶端配置http通路:  在用戶端的/etc/docker/目錄下(如果目錄不存在就建立一個)添加檔案: daemon.json  内容如下
{"insecure-registries": ["10.10.3.180:5000","倉庫IP:5000"]}
然後要重新開機docker
systemctl daemon-reload
systemctl restart docker

登入到私有倉庫,用預設管理者賬号密碼: admin  / Harbor12345
docker login 192.168.1.122:8081 -u admin -p Harbor12345
tag一個鏡像
docker tag ubuntu 192.168.1.122:8081/library/ubuntu
推送鏡像
docker push 192.168.1.122:8081/library/ubuntu
           

使用docker部署系統的流程

第一次部署

首先手動建構基礎鏡像, 确認可以運作程式, 把基礎鏡像上傳到鏡像倉庫

基于基礎鏡像手動完成項目部署(資料卷映射, 配置檔案映射) (利用portainer.io)

正常的版本更新過程

準備: 固定一個目錄存放dockerfile和程式檔案夾(dll)

1,編譯項目,把需要更新的dll複制到程式檔案夾(dll)

2,修改dockerfile: 修改基礎鏡像的版本号

3,執行指令建構新的鏡像, 把新鏡像上傳到鏡像倉庫

4,在運作環境更新鏡像并運作, 利用portainer.io來管理

安裝portainer.io

docker volume create portainer_data
docker run --name portainer  --restart always -d -p 8000:8000 -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer