docker基础入门和docker compose实战
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
配置阿里云鏡像加速
- 登錄阿里云找到容器服務(wù)
- 找到鏡像加速地址
- 配置使用
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 是查看不到的
Dockerfile
Dockerfile 就是用來構(gòu)建docker鏡像的構(gòu)建文件!命令腳本!
通過這個腳本可以生成鏡像,鏡像是一層一層的,腳本是一個個的命令,每個命令都是一層!
- 編寫一個dockerfile文件
規(guī)則
1、每個保留關(guān)鍵字(指令)都是必須是大寫字母
2、執(zhí)行從上到下順序
3、#表示注釋
4、每一個指令都會創(chuàng)建提交一個新的鏡像曾,并提交!
- docker build 構(gòu)建稱為一個鏡像
-
docker run運行鏡像
運行自己的鏡像 略… -
docker push發(fā)布鏡像(DockerHub 、阿里云倉庫)
發(fā)布到 阿里云鏡像服務(wù)上
看官網(wǎng) 很詳細(xì)https://cr.console.aliyun.com/repository/
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ā)的場景。
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 对字符串中的数值排序
- 下一篇: Collection中的基本方法