Docker的基本使用

一 安裝

# centos7 安裝docker
1 安裝依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2 設(shè)置yum源為阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  
3 安裝
sudo yum install docker-ce -y


4 docker 版本:裝的最新版
docker -v
Docker version 19.03.8, build afacb8b
docker -v查看版本,如果是17年之前的,就是老版本,操作習(xí)慣不一樣

5 啟動docker服務(wù)端:
    systemctl start docker  啟動
  systemctl stop docker   停止
  systemctl restart docker  重啟

二 鏡像相關(guān)

# 鏡像當(dāng)成是一個沒有啟動的操作系統(tǒng)
# redis鏡像,mysql鏡像,nginx鏡像,django鏡像,python鏡像:linux+xx軟件----》鏡像跑起來--》容器:操作系統(tǒng)上運行著redis服務(wù)

# 查找鏡像:https://hub.docker.com/
docker search helloworld
docker search centos
NAME     DESCRIPTION                    STARS          OFFICIAL         AUTOMATED
centos  The official build of CentOS.   5956            [OK]            是否是自動構(gòu)建
# 獲取鏡像:

docker pull centos     # 拉取最新的:相當(dāng)于docker pull centos:latest  
docker pull centos:centos7  # 拉取一個centos7
docker pull centos:centos6.7
docker pull centos:centos10 # 這個 沒有,就報錯
  
# 查看本地鏡像
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        3 months ago        237MB
centos              centos7             5e35e350aded        5 months ago        203MB

# 刪除本地鏡像
docker rmi 470671670cac  # 通過id號刪除
docker rmi centos:centos7 # 通過名字刪除
  
  
# docker rmi `docker images -q`
相當(dāng)于
docker rim  470671670cac 5e35e350aded 

三 容器操作

docker ps   # 查看正在運行的容器#########
docker ps –a  # 查看所有容器(暫停的,停止,正在運行的。。。)

docker ps –l # 查看最后一次運行的容器
docker ps -f status=exited  # 查看停止的容器

# 重點:通過鏡像創(chuàng)建并運行容器(兩步并做一步)
創(chuàng)建容器命令:docker run
-i:表示運行容器
-t:表示容器啟動后會進入其命令行。加入這兩個參數(shù)后,容器創(chuàng)建就能登錄進去。即分配一個偽終端。
--name :為創(chuàng)建的容器命名。容器名字不能重
-v:表示目錄映射關(guān)系(前者是宿主機目錄,后者是容器的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。
-d:在run后面加上-d參數(shù),則會創(chuàng)建一個守護式容器在后臺運行(這樣創(chuàng)建容器后不會自動登錄容器,如果只加-i -t兩個參數(shù),創(chuàng)建后就會自動進去容器)。
-p:表示端口映射,前者是宿主機端口,后者是容器內(nèi)的映射端口??梢允褂枚鄠€-p做多個端口映射

# -v:數(shù)據(jù)卷,做目錄映射
# -p 網(wǎng)絡(luò),做端口映射

# 演示
#基于哪個鏡像跑容器:centos:centos7   如果寫成centos表示跑最新的 
#如果沒有這個鏡像呢?去遠(yuǎn)程拉,拉下來再跑
# 容器要運行,需要有一個前臺進程
docker run -it --name=mycentos7 centos:centos7 /bin/bash
  
 # 以守護進程形式跑
docker run -di  --name=mycentos2_2 centos:centos7
  
# 進入到容器內(nèi)部操作容器
1 exec(用的最多):在docker中執(zhí)行命令
docker exec -it mycentos2_2 /bin/bash
exit 退出


# 容器的啟動與停止
docker stop 容器id/名字
docker start 容器id/名字
docker restart 容器id/名字

# 文件拷貝
# 從宿主機copy到容器內(nèi)部
docker cp untitled3.tar mycentos2_2:/home
 # 從容器內(nèi)部copy出來 
docker cp mycentos2_2:/home/untitled3.tar ./

   
# 數(shù)據(jù)卷(目錄映射)
docker run -di  --name=mycentos2_3 -v /root/test:/home centos:centos7
# 以后操作宿主機目錄和操作容器目錄會相互影響

# 查看容器信息
docker inspect 容器名字/容器id
# 查看ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器id/名字

# 刪除容器
# 停止才能刪
docker rm 容器名字/id

# 刪除鏡像,如果有容器,能刪除嗎?支持,但是不推薦做

# 總結(jié):
docker run  -di/-it --name=名字  -v 目錄映射,可以有多個  images:tag
docker exec -it 名字 /bin/bash
docker cp
docker stop/start/restart 容器名字
docker rm 容器名字
docker inspect 容器名字

# mysql服務(wù) 在docker中運行 -e表示環(huán)境變量,root密碼
docker run -id --name=mysql1 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# redis服務(wù) 在docker中運行
docker run -id --name=myredis -p 6379:6379 redis
 
# docker中部署django項目 nginx + django +uwsgi

四 遷移備份

把容器打包成鏡像

docker run -di --name=mydjango python:3.6
  
# 安裝django環(huán)境
pip install django==1.11.9
apt-get update
apt-get install vim 

# 把容器打包成鏡像
docker commit 容器名字 鏡像名字
docker commit mydjango mydjango_i

# 基于鏡像再跑起容器
docker run -di --name=mydjango2 mydjango_i

# 把本地的鏡像拷貝到其他機器上去,在跑起容器來
# 打成一個tar包,壓縮一下(在當(dāng)前目有個mydjango.tar)
docker  save -o mydjango.tar mydjango_i

# copy這個壓縮包到任意的機器上(裝了docker)
根據(jù)壓縮包,恢復(fù)成鏡像
docker load -i mydjango.tar

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容