日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker基础入门和docker compose实战

發(fā)布時間:2025/3/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker基础入门和docker compose实战 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Docker運維部署

docker官網(wǎng):https://www.docker.com/
文檔:https://docs.docker.com/ Docker的文檔是超級詳細(xì)的!
倉庫:https://hub.docker.com/


  • Docker
  • Docker安裝與配置
  • Docker鏡像容器操作
  • Docker容器數(shù)據(jù)卷
  • Dockerfile
  • Docker-compose

Docker

鏡像(image):

docker鏡像就好比是一個目標(biāo),可以通過這個目標(biāo)來創(chuàng)建容器服務(wù),tomcat鏡像==>run==>容器(提供服務(wù)器),通過這個鏡像可以創(chuàng)建多個容器(最終服務(wù)運行或者項目運行就是在容器中的)。

容器(container):

Docker利用容器技術(shù),獨立運行一個或者一組應(yīng)用,通過鏡像來創(chuàng)建的.
啟動,停止,刪除,基本命令
目前就可以把這個容器理解為就是一個簡易的 Linux系統(tǒng)。

倉庫(repository):

倉庫就是存放鏡像的地方!
倉庫分為公有倉庫和私有倉庫。(很類似git)
Docker Hub是國外的。
阿里云…都有容器服務(wù)器(配置鏡像加速!)

Docker安裝與配置

安裝Docker

要求
1.Linux要求內(nèi)核3.0以上
2.CentOS 7

- 卸載舊版本dockeryum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine- 下載需要的安裝包yum install -y yum-utils- 設(shè)置鏡像的倉庫 (復(fù)制注意后面的符號)yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo#上述方法默認(rèn)是從國外的,不推薦#推薦使用國內(nèi)的yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo- 更新yum軟件包索引yum makecache fast- 安裝docker相關(guān)內(nèi)容yum install docker-ce docker-ce-cli containerd.io- 啟動dockersystemctl start docker- 查看是否安裝成功docker version- 運行hello-worlddocker run hello-world- 查看下載的鏡像docker images- 卸載dockeryum remove docker-ce docker-ce-cli containerd.iorm -rf /var/lib/docker

配置阿里云鏡像加速

  • 登錄阿里云找到容器服務(wù)
  • 找到鏡像加速地址
  • 配置使用
1.創(chuàng)建一個目錄mkdir -p /etc/docker2.編寫配置文件tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://t2wwyxhb.mirror.aliyuncs.com"]}EOF3.重啟服務(wù)systemctl daemon-reloadsystemctl restart docker

Docker鏡像容器操作

幫助命令

docker version #顯示docker的版本信息。docker info #顯示docker的系統(tǒng)信息,包括鏡像和容器的數(shù)量docker 命令 --help #幫助命令

鏡像命令

docker images #查看所有本地主機上的鏡像 可以使用docker image ls代替docker search #搜索鏡像docker pull #下載鏡像 docker pull 鏡像名[:tag],如果不寫tag,默認(rèn)就是latesdocker rmi #刪除鏡像 docker rmi -f 鏡像id #刪除指定id的鏡像 docker rmi -f $(docker images -aq) #刪除全部的鏡像 docker images #查看所有本地的主機上的鏡像 # 解釋 #REPOSITORY # 鏡像的倉庫源 #TAG # 鏡像的標(biāo)簽(版本) ---lastest 表示最新版本 #IMAGE ID # 鏡像的id #CREATED # 鏡像的創(chuàng)建時間 #SIZE # 鏡像的大小# 可選項 Options:-a, --all Show all images (default hides intermediate images) #列出所有鏡像-q, --quiet Only show numeric IDs # 只顯示鏡像的id# docker images -a #列出所有鏡像詳細(xì)信息 # docker images -aq #列出所有鏡像的id

容器命令

docker run 鏡像id #新建容器并啟動docker ps 列出所有運行的容器 docker container listdocker rm 容器id #刪除指定容器docker start 容器id #啟動容器 docker restart 容器id #重啟容器 docker stop 容器id #停止當(dāng)前正在運行的容器 docker kill 容器id #強制停止當(dāng)前容器

新建容器并啟動

docker run [可選參數(shù)] image | docker container run [可選參數(shù)] image #參書說明 --name="Name" #容器名字 tomcat01 tomcat02 用來區(qū)分容器 -d #后臺方式運行 -it #使用交互方式運行,進(jìn)入容器查看內(nèi)容 -p #指定容器的端口 -p 8080(宿主機):8080(容器)-p ip:主機端口:容器端口-p 主機端口:容器端口(常用)-p 容器端口容器端口 -P(大寫) 隨機指定端口

列出所有運行的容器

docker ps 命令 #列出當(dāng)前正在運行的容器-a, --all #列出當(dāng)前正在運行的容器 + 帶出歷史運行過的容器-n=?, --last int #列出最近創(chuàng)建的?個容器?為1則只列出最近創(chuàng)建的一個容器-q, --quiet #只列出容器的編號

退出容器

exit #容器直接退出 ctrl +P +Q #容器不停止退出 ---注意:這個很有用的操作

刪除容器

docker rm 容器id #刪除指定容器,不能刪除正運行的容器,若強制刪除 rm -rf docker rm -f $(docker ps -aq) #刪除所有的容器 docker ps -a -q|xargs docker rm #刪除所有的容器

啟動和停止容器的操作

docker start 容器id #啟動容器 docker restart 容器id #重啟容器 docker stop 容器id #停止當(dāng)前正在運行的容器 docker kill 容器id #強制停止當(dāng)前容器

常用其他命令

后臺啟動命令 docker run -d 鏡像名查看日志 docker logs --help #模擬日志 docker run -d centos /bin/sh -c "while true;do echo 6666;sleep 1;done" #顯示日志-tf #顯示日志信息(一直更新)--tail number #需要顯示日志條數(shù) docker logs -t --tail n 容器id #查看n行日志 docker logs -ft 容器id #跟著日志查看容器中進(jìn)程信息 docker top 容器id查看鏡像的元數(shù)據(jù) docker inspect 容器id進(jìn)入當(dāng)前正在運行的容器 docker exec -it 容器id bashshell # 方式二 docker attach 容器id #docker exec #進(jìn)入當(dāng)前容器后開啟一個新的終端,可以在里面操作(常用) #docker attach # 進(jìn)入容器正在執(zhí)行的終端從容器內(nèi)拷貝到主機上 docker cp 容器id:容器內(nèi)路徑 主機目的路徑docker run -it --rm 鏡像名 一般是用來測試,用完就刪除commit鏡像 docker commit 提交容器成為一個新的副本 # 命令和git原理類似 docker commit -m="描述信息" -a="作者" 容器id 目標(biāo)鏡像名:[版本TAG] docker commit -a="kuangshen" -m="add webapps app" 容器id tomcat02:1.0

小結(jié):

容器數(shù)據(jù)卷

將應(yīng)用和環(huán)境打包成一個鏡像!
數(shù)據(jù)?如果數(shù)據(jù)都在容器中,那么我們?nèi)萜鲃h除,數(shù)據(jù)就會丟失!需求:數(shù)據(jù)可以持久化
MySQL,容器刪除了,刪庫跑路!需求:MySQL數(shù)據(jù)可以存儲在本地!
容器之間可以有一個數(shù)據(jù)共享技術(shù)!Docker容器中產(chǎn)生的數(shù)據(jù),同步到本地!
這就是卷技術(shù)!目錄的掛載,將我們?nèi)萜鲀?nèi)的目錄,掛載到Linux上面!

三種掛載: 匿名掛載、具名掛載、指定路徑掛載

-v 容器內(nèi)路徑 #匿名掛載
-v 卷名:容器內(nèi)路徑 #具名掛載
-v /宿主機路徑:容器內(nèi)路徑 #指定路徑掛載 docker volume ls 是查看不到的

docker run -it -v 主機目錄:容器內(nèi)目錄 -p 主機端口:容器內(nèi)端口例: # 獲取mysql鏡像 [root@iz2zeak7sgj6i7hrb2g862z home]# docker pull mysql:5.7# 運行容器,需要做數(shù)據(jù)掛載 #安裝啟動mysql,需要配置密碼的,這是要注意點! # 參考官網(wǎng)hub docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag#啟動我們得 -d 后臺運行 -p 端口映射 -v 卷掛載 -e 環(huán)境配置 -- name 容器名字 docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql03 mysql:5.7# 啟動成功之后,我們在本地使用sqlyog來測試一下 # sqlyog-連接到服務(wù)器的3306--和容器內(nèi)的3306映射 # 在本地測試創(chuàng)建一個數(shù)據(jù)庫,查看一下我們映射的路徑是否ok!

Dockerfile

Dockerfile 就是用來構(gòu)建docker鏡像的構(gòu)建文件!命令腳本!
通過這個腳本可以生成鏡像,鏡像是一層一層的,腳本是一個個的命令,每個命令都是一層!

  • 編寫一個dockerfile文件

規(guī)則
1、每個保留關(guān)鍵字(指令)都是必須是大寫字母
2、執(zhí)行從上到下順序
3、#表示注釋
4、每一個指令都會創(chuàng)建提交一個新的鏡像曾,并提交!

# 創(chuàng)建一個dockerfile文件,名字可以隨便 建議Dockerfile # 文件中的內(nèi)容: 指令(大寫) + 參數(shù) $ vim dockerfile1FROM centos # 當(dāng)前這個鏡像是以centos為基礎(chǔ)的VOLUME ["volume01","volume02"] # 掛載卷的卷目錄列表(多個目錄)CMD echo "-----end-----" # 輸出一下用于測試CMD /bin/bash # 默認(rèn)走bash控制臺# 這里的每個命令,就是鏡像的一層! # 構(gòu)建出這個鏡像 -f dockerfile1 # f代表file,指這個當(dāng)前文件的地址(這里是當(dāng)前目錄下的dockerfile1) -t caoshipeng/centos # t就代表target,指目標(biāo)目錄(注意caoshipeng鏡像名前不能加斜杠‘/’) . # 表示生成在當(dāng)前目錄下
  • docker build 構(gòu)建稱為一個鏡像
$ docker build -f dockerfile1 -t caoshipeng/centos . Sending build context to Docker daemon 2.56kB Step 1/4 : FROM centos latest: Pulling from library/centos 8a29a15cefae: Already exists Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 Status: Downloaded newer image for centos:latest---> 470671670cac Step 2/4 : VOLUME ["volume01","volume02"] # 卷名列表---> Running in c18eefc2c233 Removing intermediate container c18eefc2c233---> 623ae1d40fb8 Step 3/4 : CMD echo "-----end-----" # 輸出 腳本命令---> Running in 70e403669f3c Removing intermediate container 70e403669f3c---> 0eba1989c4e6 Step 4/4 : CMD /bin/bash---> Running in 4342feb3a05b Removing intermediate container 4342feb3a05b---> f4a6b0d4d948 Successfully built f4a6b0d4d948 Successfully tagged caoshipeng/centos:latest# 查看自己構(gòu)建的鏡像 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE caoshipeng/centos latest f4a6b0d4d948 About a minute ago 237MB
  • docker run運行鏡像
    運行自己的鏡像 略…

  • docker push發(fā)布鏡像(DockerHub 、阿里云倉庫)

1、地址 https://hub.docker.com/ 2、確定這個賬號可以登錄 3、登錄$ docker login --help Usage: docker login [OPTIONS] [SERVER]Options:-p, --password string Password--password-stdin Take the password from stdin-u, --username string Username$ docker login -u 你的用戶名 -p 你的密碼# push不上去,因為如果沒有前綴的話默認(rèn)是push到 官方的library # 解決方法: # 第一種 build的時候添加你的dockerhub用戶名,然后在push就可以放到自己的倉庫了 $ docker build -t kuangshen/mytomcat:0.1 .# 第二種 使用docker tag #然后再次push $ docker tag 容器id kuangshen/mytomcat:1.0 #然后再次push $ docker push kuangshen/mytomcat:1.0

發(fā)布到 阿里云鏡像服務(wù)上
看官網(wǎng) 很詳細(xì)https://cr.console.aliyun.com/repository/

docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/dsadxzc/cheng:[鏡像版本號] docker login --username=zchengx registry.cn-shenzhen.aliyuncs.com# 修改id 和 版本 docker tag a5ef1f32aaae registry.cn-shenzhen.aliyuncs.com/dsadxzc/cheng:1.0 # 修改版本 docker push registry.cn-shenzhen.aliyuncs.com/dsadxzc/cheng:[鏡像版本號]

DockerFile的指令

FROM # from:基礎(chǔ)鏡像,一切從這里開始構(gòu)建 MAINTAINER # maintainer:鏡像是誰寫的, 姓名+郵箱 RUN # run:鏡像構(gòu)建的時候需要運行的命令 ADD # add:步驟,tomcat鏡像,這個tomcat壓縮包!添加內(nèi)容 添加同目錄 WORKDIR # workdir:鏡像的工作目錄 VOLUME # volume:掛載的目錄 EXPOSE # expose:保留端口配置 CMD # cmd:指定這個容器啟動的時候要運行的命令,只有最后一個會生效,可被替代 ENTRYPOINT # entrypoint:指定這個容器啟動的時候要運行的命令,可以追加命令 ONBUILD # onbuild:當(dāng)構(gòu)建一個被繼承DockerFile這個時候就會運行onbuild的指令,觸發(fā)指令 COPY # copy:類似ADD,將我們文件拷貝到鏡像中 ENV # env:構(gòu)建的時候設(shè)置環(huán)境變量!


DockerCompose

Docker Compose是一個用來定義和運行復(fù)雜應(yīng)用的Docker工具。一個使用Docker容器的應(yīng)用,通常由多個容器組成。使用Docker Compose不再需要使用shell腳本來啟動容器。?
Compose 通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動,停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器,非常適合組合使用多個容器進(jìn)行開發(fā)的場景。

下載地址: curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 添加操作權(quán)限:chmod +x /usr/local/bin/docker-compose 查看:docker-compose --version 安裝pip: sudo pip install docker-compose

DockerCompose指令

version 指定本 yml 依從的 compose 哪個版本制定的build指定為構(gòu)建鏡像上下文路徑context:上下文路徑。dockerfile:指定構(gòu)建鏡像的 Dockerfile 文件名。args:添加構(gòu)建參數(shù),這是只能在構(gòu)建過程中訪問的環(huán)境變量。labels:設(shè)置構(gòu)建鏡像的標(biāo)簽。target:多層構(gòu)建,可以指定構(gòu)建哪一層。command 覆蓋容器啟動的默認(rèn)命令。container_name 指定自定義容器名稱,而不是生成的默認(rèn)名稱。environment 添加環(huán)境變量。expose 暴露端口,但不映射到宿主機,只被連接的服務(wù)訪問。image 指定容器運行的鏡像。restartno:是默認(rèn)的重啟策略,在任何情況下都不會重啟容器。always:容器總是重新啟動。on-failure:在容器非正常退出時(退出狀態(tài)非0),才會重啟容器。unless-stopped:在容器退出時總是重啟容器,但是不考慮在Docker守護(hù)進(jìn)程啟動時就已經(jīng)停止了的容器

DockerCompose命令

docker-compose up //啟動yml文件定義的 containerdocker-compose up -d //后臺運行docker-compose up --help //查看up幫助docker-compose -f docker-compose.yml up //-f 指定yml文件docker-compose stop //停止docker-compose start docker-compose ls //查看docker-compose down //停止刪除docker-compose psdocker-compose imagesdocker-compose exec {service_name} {bash}

總結(jié)

以上是生活随笔為你收集整理的docker基础入门和docker compose实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。