狂神docker日記
https://blog.csdn.net/huangjhai/article/details/118854733
https://blog.csdn.net/Mr_YanMingXin/article/details/119504925
docker日志命令
1、docker logs -f --tails since="2022-04-15T09:12:00" roc-business-contract-center
2、docker logs -t roc-bussiness-rent | grep -30 '"signTimeEnd":"2022-04-19"'
一嘉涌、為什么要用docker
一款產(chǎn)品開發(fā)到上線穷劈,沒有docker的時候,開發(fā)一般都是打成war包給運維冤荆,運維去部署朴则。此時如果出現(xiàn)環(huán)境差異,會導(dǎo)致代碼部署的時候起不來钓简。并且環(huán)境配置也是相當(dāng)麻煩乌妒,換一臺機器就要重來一次,費時費力涌庭。而docker的作用就是帶環(huán)境安裝芥被,也就是說,軟件安裝的時候把原始環(huán)境一模一樣的復(fù)制過來坐榆。
docker只所以比虛擬機快是因為他是直接利用宿主機的硬件內(nèi)存什么的拴魄,而虛擬機是自己在宿主機上開辟一塊內(nèi)存給自己用,無法最大化利用宿主機的性能
常用docker命令
1席镀、docker 啟動命令systemctl start docker
2匹中、查看已有鏡像? ? docker images
3、拉取鏡像 docker pull #(#號表示要拉取的鏡像名)
4豪诲、新建并啟動容器 docker? run [options] image? ? ? ? ? ? ? ? ? ? ? ??
? ? ?options說明? --name“容器新名字”顶捷,為容器指定一個名字
? ? ?-d? ?后臺運行容器,并返回容器id屎篱,也即啟動守護式容器(如果docker發(fā)現(xiàn)沒有前臺應(yīng)用服赎,就會自動停止葵蒂,也就是容器啟動的時候發(fā)現(xiàn)沒有提供服務(wù),就會停止)
? ? ?-i 以交互模式運行容器重虑,通常與-t同時適用
? ? ?-t? ?為容器重新分配一個偽輸入終端践付,通常與-i同時使用
? ? ?-P? ? 隨機端口映射
? ? -p? ? ? 指定端口映射,有以下四種格式
? ? ? ? ? ? ? ? ? ? ip:hostPort:containerPort
? ? ? ? ? ? ? ? ? ? ip::containerPort
5缺厉、刪除鏡像docker -rmi? # (#表示名稱id等)
6永高、退出關(guān)閉容器 exit? ?ctrl+p+q 不關(guān)閉容器退出
7、查看運行時容器docker ps? 查看曾經(jīng)運行的容器 docker ps -a? 查看曾經(jīng)運行的容器id docker ps -aq (此處的曾經(jīng)運行的容器包括正在運行的和歷史運行的)
8提针、刪除容器 docker rm? #(#表示id等命爬,不能刪除運行時容器,如果要刪除運行時辐脖,需要docker rm -f)
9饲宛、docker inspect? 查看docker源數(shù)據(jù)
10、docker exec -it 06cd35f9ea4f? ?(進入容器)docker attach?06cd35f9ea4f? ?(exec相當(dāng)于開啟一個新的終端揖曾,可以在里面操作落萎,attach進入正在運行的終端)
11、拷貝命令:docker cp 3fe5a65cd9ad:/home/test.java /home/老王? (將容器中的test.java拷貝到宿主機的home/老王文件夾下)
1.docker run
docker run只有在第一次運行時使用炭剪,將鏡像放到容器中练链,以后再次啟動這個容器的時候,只需要使用命令docker start就可以奴拦。
docker run相當(dāng)于執(zhí)行了兩步操作:將鏡像(Image)放到容器(Container)中媒鼓,這一步過程叫做docker create,然后將容器啟動错妖,使之變成運行時容器(docker start)绿鸣。
2.docker start
docker start的作用是:重新啟動已經(jīng)存在的容器。也就是說暂氯,如果使用這個命令潮模,我們必須先要知道這個容器的ID、或者這個容器的名字痴施,我們可以使用docker ps命令找到這個容器的信息擎厢。
3.docker stats查看內(nèi)存使用情況
4、拉下的docker鏡像可能缺少了些東西辣吃,比如tomcat原生鏡像的webapps下的文件夾是空的动遭,這就會導(dǎo)致我們運行tomcat容器就會無法訪問,此時我們在容器內(nèi)把webapp.dist文件夾下的內(nèi)容拷貝到webapp下就可以神得,但是我們再次運行還是為空厘惦,這時候我們可以把我們修改完畢的容器再次打成一個鏡像,運行這個新的鏡像就好哩簿,我們配置好容器后運行 docker commit - a=" kuangshen" - m= " add webapps app" 7e119b82cff6 tomcat02:1. 0 命令就能把配置好的容器重新打成一個鏡像宵蕉。-a是作者酝静,-m是提交信息,后面的是容器id国裳,然后是名稱:tag
5形入、docker run -it -v 主機目錄地址 容器內(nèi)地址 進行掛載(掛載是個雙向的過程,修改主機內(nèi)文件缝左,如果容器依然存在,即便容器已經(jīng)停了浓若,容器內(nèi)文件也會跟著變)
可以通過docker inspect進行查詢是否掛載成功
6渺杉、mysql安裝? ?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 mysql01 mysql:5.7(-e表示修改配置,設(shè)置密碼為123456)
7挪钓、掛載分為匿名掛載和匿名掛載是越,一般用具名掛載
docker run -d -p 3310:3306 -v 名稱:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
這個名稱就是具名名稱:通過docker volume ls 查看具名掛載的名,通過docker volume inspect 可以查看掛載的目錄
數(shù)據(jù)卷容器碌上,新創(chuàng)建一個docker01的容器倚评,然后docker02的容器繼承docker01,此時docker02和docker01數(shù)據(jù)互通馏予,用的是數(shù)據(jù)券技術(shù)天梧。他是一個拷貝的概念,如果刪除了docker01霞丧,docker02不影響
docker run -it --name docker02 --volumes-from docker01 kuangshen/centos
二呢岗、虛擬機系統(tǒng)和容器的區(qū)別
1、傳統(tǒng)虛擬機蛹尝,虛擬出一條硬件.運行一個完整的操作系統(tǒng) ,然后在這個系統(tǒng)上安裝和運行軟件
2后豫、容器內(nèi)的應(yīng)用直接運行在宿主機的內(nèi)容,容器是沒有自己的內(nèi)核的,也沒有虛擬我們的硬件,所以就輕便了
3、每個容器問是互相隔離.每個容器內(nèi)都有一個屬于自己的文件系統(tǒng).互不形響突那。
三挫酿、docker相關(guān)知識
1、docker的默認工作路徑? /var/lib/docker
四愕难、dockerFile
ONBUILD? :當(dāng)構(gòu)建一個被繼承的DorkerFile時早龟,就會執(zhí)行一個onbuild命令
COPY? ? :類似add命令,將文件拷貝到目錄中
ENV? ? :設(shè)置環(huán)境變量
ENTRYPOINT和CMD的區(qū)別:CMD只有最后一個會生效run的時候如果設(shè)置了其他命令务漩,他會替換掉cmd拄衰,ENTRYPOINT會追加在后面
FROM centos
MAINTAINER caiminyang<12345>
ENV MYPATH /user/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash