docker作為非常省事方便的工具,熟練使用docker的各種命令是一個運維必備的技能,作為普通演算法程式員,我認為,只需要掌握一下部分常用命令即可(安裝部分請自行問度娘,本文不再重復敘述):
- 拉取(獲取)鏡像
- 啟動容器
- 停止容器
- 進入容器
- 匯出和匯入容器
- 容器后臺運行,開機自運行
- 洗掉容器
- 洗掉鏡像
docker拉取容器命令:
# ubuntu終端運行,拉取一個ubuntu的鏡像 $ docker pull ubuntu
docker 啟動容器命令:
以下命令使用 ubuntu 鏡像啟動一個容器,引數為以命令列模式進入該容器:
# -i: 互動式操作, # -t: 終端, # ubuntu: ubuntu 鏡像, # /bin/bash:放在鏡像名后的是命令,這里我們希望有個互動式 Shell,因此用的是 /bin/bash, # 要退出終端,直接輸入 exit: $ docker run -it ubuntu /bin/bash
docker停止容器命令:
$ docker stop <容器 ID>
docker 啟動容器命令:
查看所有的容器命令如下:
$ docker ps -a
使用 docker start 啟動一個已停止的容器:
# 其中b750bbbcfd88是容器id $ docker start b750bbbcfd88
docker 進入容器命令:
在使用 -d 引數時,容器啟動后會進入后臺,此時想要進入容器,可以通過以下指令進入:
-
docker attach
-
docker exec:推薦大家使用 docker exec 命令,因為此退出容器終端,不會導致容器的停止,
$ docker attach 1e560fca3906 # 1e560fca3906是容器id,對于正在運行的容器,使用該命令可以進入容器,輸入exti會停止容器 $docker exec -it 243c32535da7 /bin/bash # 使用exec進入容器,當使用exit退出時,容器不會停止,需要停止輸入: $docker stop 243c32535da7 # 就可以停止容器,只有停止的容器才能洗掉
docker 匯出和匯入容器命令:
知道容器id就可以匯出容器:
$ docker export 1e560fca3906 > ubuntu.tar # 1e560fca3906是容器id # ubuntu.tar是匯出后的名稱,默認會存在主目錄下
匯入容器為鏡像,有上面那個.tar檔案就可以匯入了
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1 # docker/ubuntu.tar是容器快照檔案的目錄 # test/ubuntu:v1是匯入后鏡像的名稱,v1可以理解為版本,其實可以是其他字符或者連冒號帶版本號都不輸入也可以
還有一種匯出的方法,將容器注冊為鏡像檔案,再匯出鏡像檔案,匯入的時候將鏡像檔案load下了即可
$docker commit a404c6c174a2 mymysql:v1 # a404c6c174a2 容器id # mymysql:v1創建成鏡像后的名稱和版本,:v1這個不寫也可以,v1還可以換成別的自定義字符 # 執行這一句以后就在本地又生成了一個鏡像名為mymysql:v1
生成了鏡像,就有把鏡像匯出來成本地鏡像快照檔案
$docker save -o images_file.zip mysql:v1 # images_file.zip保存成本地快照檔案的名稱 # mysql:v1鏡像的名稱和版本 # 執行這一句就會在本地主目錄下生成一個本地快照檔案images_file.zip
匯出鏡像檔案后怎么匯入成其他設備上的鏡像檔案呢?畢竟我是為了方便部署嘛,能方便匯入才是我們的目的所在:
$docker load -i images_file.zip # images_file.zip本地快照檔案 # 執行玩就會在當前設備上生成新的鏡像,可以輸入: $docker images # 命令進行查看
docker 容器后臺運行&開機自運行命令:
$docker run --restart always --name pyt_v5 -p 10010:10010 -v /home/ymc/yolov5:/home -it images_file /bin/bash /home/auto_service.sh # 解釋一下, --restart always表示無論什么關閉了(斷電莫名退出等情況)都重啟docker # --name pyt_v5 將這個容器命名為pyt_v5 # -p 10010:10010 將容器中的埠映射到本機,訪問本機ip+埠號就能直接訪問到容器暴露的埠服務了 # -v /home/ymc/yolov5:/home將本機/home/ymc/yolov5映射到容器中,這樣方便的將代碼拷到容器又及時查看到容器中做了什么改變(增刪改) # -it 互動模式 # /bin/bash 打開方式 # /home/auto_service.sh容器開啟就運行的腳本
其中/home/auto_service.sh 檔案內容如下:
cd /home export PYTHONIOENCODING=utf-8 nohup python3 flask_server.py
也不需要過多解釋,就是進入容器/home目錄下
編碼方式utf-8
執行python3 flask_server.py
docker 洗掉容器命令:
$docker stop 54ads56f4a6ds4 $docker rm 54ads56f4a6ds4 # 如果容器已經停止了就不需要stop停止容器那一句 # rm 就是洗掉容器的關鍵 # 執行完查看一下容器沒有那個id的容器就表示完成了,查看存在的容器命令為: $docker ps -a # 查看正在運行的容器為: $docker ps # 查看本機的所有容器命令為: $docker images
docker 洗掉鏡像命令:
$docker rmi 4asd24f3aas32 # 4asd24f3aas32鏡像的id
docker 自啟動有問題,有的服務和包沒有安裝上:
把原來的鏡像直接洗掉吧,然后重新run一個進行修改,再保存為鏡像,然后從新的鏡像啟動容器即可:
sudo docker run --name fastapiweb -p 8000:8000 -v /home/hxzh/python_build/fastapi_myweb:/home -it mmdetection_20200611 /bin/bash
mmdetection_20200611是一個鏡像,有些我們需要的東西,也缺一些包,我們從該鏡像run一個容器,在容器中安裝包,裝好了再保存為新的鏡像
后面的我晚點再更新其他內容,有問題評論區交流哈!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/10799.html
標籤:其他
上一篇:時間背景關系相關的協同過濾演算法
下一篇:用直方圖和箱線圖理解資料
