docker 筆記

docker命令:

Docker的三大核心概念:鏡像败晴、容器阶淘、倉庫

鏡像:類似虛擬機的鏡像、用俗話說就是安裝文件笔刹。

容器:類似一個輕量級的沙箱芥备,容器是從鏡像創(chuàng)建應用運行實例,

可以將其啟動舌菜、開始萌壳、停止、刪除酷师、而這些容器都是相互隔離讶凉、互不可見的染乌。

倉庫:類似代碼倉庫山孔,是Docker集中存放鏡像文件的場所。

虛擬化:虛擬化種類分為軟件虛擬化荷憋、硬件虛擬化台颠、內(nèi)存虛擬化、網(wǎng)絡虛擬化、桌面虛擬化串前、服務虛擬化瘫里、虛擬機等。

docker:每個容器中都是一個完整的環(huán)境荡碾,相當于一個操作系統(tǒng)

docker就是為微服務而生的谨读。docker鼓勵面向服務的體系結構和微服務架構,docker推薦單個容器值運行一個應用程序或進程坛吁,形成了一個分布式的應用程序模型劳殖。

手動yum安裝docker:

https://www.cnblogs.com/marvin-mao/p/11264415.html

最小化安裝完成以后需要禁用防火墻以及SElinux配置

systemctl disable firewalld

systemctl stop firewalld

vim /etc/selinux/config

SELINUX=disabled

https://www.cnblogs.com/marvin-mao/p/11264415.html

docker安裝包和依賴包

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

docker組件:

? docker服務器和客戶端:c/s架構;

? docker鏡像和容器:用戶基于鏡像來運行容器拨脉,一個鏡像可以產(chǎn)生多個類似的容器

? Registry注冊中心:dockerHub? https://hub.docker.com/? 可以下載鏡像

docker安裝與啟動:docker官網(wǎng)建議在Ubnuntu中安裝哆姻,CentOS7.x以上

啟動虛擬機,通過SecureCRT連接Linux:新建會話

安裝docker

yum包更新:? ? ? ? ? sudo yum update

安裝需要的軟件包:sudo yum install -y yum -utils device-mapper-persistent-data lvm2

設置yum源為阿里云:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-

ce/linux/centos/docker-ce.repo

安裝docker:sudo yum install docker-ce

檢查版本:? ? ? ? ? ? docker-v

設置USTC的鏡像:設置國內(nèi)鏡像站點

編輯文件:vi/etc/docker/deamon.json

輸入:

{

"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]

}

用于指定鏡像地址

docker的啟動與停止:

systemctl命令是系統(tǒng)服務管理器指令

啟動docker:? ? ? ? ? systemctl start docker

停止docker:? ? ? ? ? systemctl stop docker

重啟docker:? ? ? ? ? systemctl restart docker

查看docker狀態(tài):? ? ? systemctl status docker

開機啟動:? ? ? ? ? ? systemctl enable docker

查看docker概要信息:? docker info

查看docker幫助文檔:? docker --help

docker的常用命令:cd .

1玫膀、鏡像相關命令:

鏡像是存儲在Docker宿主機的/var/lib/docker目錄下

查看鏡像:docker images?

REPOSITORY:鏡像名稱矛缨;

TAG:鏡像標簽;

IMAGE(鏡像的版本區(qū)分)

ID:鏡像ID(唯一)帖旨;

CREATED:鏡像的創(chuàng)建日期箕昭;

SIZE:鏡像大小碉就;

搜索鏡像:docker search 鏡像名稱 :

NAME:倉庫名盟广;

DESCRIPTION:鏡像描述;

STARS:用戶評價瓮钥;

OFFICIAL是否官方筋量;

AUTOMATED:自動構建,表示該鏡像是由Docker Hub自動構建流程創(chuàng)建

eg:docker search centos

拉取鏡像:docker pull 鏡像名稱? :

eg:docker pull centos:7(可以先搜索后拉取)

刪除鏡像:docker rmi 鏡像ID:

刪除所有鏡像:docker rmi 'docker images -q'

刪除懸需鏡像? ?docker image prune

2碉熄、容器相關命令:

查看容器:docker ps?

查看正在運行的容器:docker ps

查看所有容器:docker ps -a

創(chuàng)建與啟動容器:run

docker run

-i:運行容器

-t:加入這兩個參數(shù)后桨武,容器創(chuàng)建就能登錄進去,分配了一個偽終端

--name:容器名

-v 表示目錄映射關系锈津。(前者是宿主機目錄呀酸,后者是映射到宿主機上的目錄)可以使用-v做多個目錄或文件映射。注意:最好做目錄映射琼梆,在宿主機上做修改性誉,然后共享到容器上

-d 這樣創(chuàng)建容器后不會自動登錄容器

-p 端口映射,前者是宿主機端口茎杂,后者是容器的映射端口错览,可以用-p做多個端口映射

eg:

(1)交互式創(chuàng)建容器:docker run -it --name=容器名稱 鏡像名稱:標簽 /bin/bash

docker run -it --name=mycentos centos:7 /bin/bash

退出當前容器:exit? 退出就是關機狀態(tài)

(2)守護式創(chuàng)建容器:docker run -di --name=容器名稱 鏡像名稱:標簽

登錄守護式容器方式:docker exec -it 容器名稱(容器ID) /bin/bash

退出exit后, 容器還是運行狀態(tài)

停止與啟動容器:

停止? docker stop 容器名稱(或容器ID)

啟動? docker start 容器名稱(或容器ID)

文件拷貝:

拷到容器? docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄

從容器拷出 docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄

目錄掛載:

將宿主機的目錄與容器內(nèi)的目錄進行映射,當修改宿主機的目錄文件時,就會影響容器內(nèi)的文件

創(chuàng)建容器 添加-v參數(shù),后跟宿主機目錄:容器目錄

eg:docker run -di -v/usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

--privileged-ture解決掛載的目錄沒有權限問題

查看容器ip地址:

查看容器運行各種數(shù)據(jù)? docker inspect 容器名稱(容器ID)

輸出IP? docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱(容器ID)

format:格式化,提取信息

刪除容器:rm

docker rm 容器名(無法移除正在運行的容器煌往,要先stop掉)

(rm是刪除容器倾哺,rmi是刪除鏡像)

應用部署:

Mysql部署:

拉取mysql鏡像:docker pull centos/mysql-57-centos7

創(chuàng)建容器:

docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

-p 端口,宿主機:容器,這樣可以通過宿主機訪問容器的端口

-e 添加環(huán)境變量MYSQL_ROOT_PASSWORD是root用戶的登錄密碼

進入容器: docker exec -it tensquare_mysql /bin/bash

登錄mysql: mysql -u root -p

遠程登錄mysql:? 操作mysql:SQLyog端口設置宿主機的端口,通過宿主機訪問容器

Tomcat部署:

拉取鏡像:docker pull tomcat:7-jre7? 7是Tomcat版本羞海,jre7是jre版本

創(chuàng)建容器: -p 表示端口映射? -v 目錄掛載

docker run -di --name=mytomcat -p 9000:8000 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

Nginx部署:

拉取鏡像:docker pull nginx

創(chuàng)建容器:docker run -di --name=mynginx -p 80:80 nginx

拷貝html文件到目錄:docker cp html mynginx:/usr/share/nginx/

Redis部署:

拉取鏡像:docker pull redis

創(chuàng)建容器:docker run -di --name=myredis -p 6379:6379 redis

遷移與備份:

容器保存為鏡像:docker commit mynginx mynginx_1(mynginx_i是為鏡像新起的名字,munginx是鏡像)

鏡像備份:docker save -o mynginx.tar mynginx_i

鏡像恢復與遷移:(先刪除鏡像)docker load -i mynginx.tar

-i 輸入的文件

(docker stop mynginx2停止容器->docker rm mynginx2移除容器->docker rmi mynginx_i移除鏡像)

dockerfile

dockerfile:由一系列命令和參數(shù)構成的腳本

常用命令:

FROM image_name:tag? ? ? ? ? ? ? ? ? ? 定義了使用哪個基礎鏡像啟動構建流程

MAINTAINER user_name? ? ? ? ? ? ? ? ? ? 聲明鏡像的創(chuàng)建者(可不加)

ENV key value? ? ? ? ? ? ? ? ? ? ? ? ? 設置環(huán)境變量(可寫多條)

RUN command? ? ? ? ? ? ? ? ? ? ? ? ? ? 是Docker的核心部分(可寫多條)

ADD source_dir/file dest_dir/file? ? ? 將宿主機的文件復制到容器內(nèi)(會自動解壓)

COPY source_dir/file dest_dir/file? ? ? 和ADD類似忌愚,但不能解壓壓縮文件

WORKDIR path_dir? ? ? ? ? ? ? ? ? ? ? ? 設置工作目錄(即默認文件查找路徑)

eg.使用腳本創(chuàng)建鏡像:(使用Dockerfile構建jdk1.8鏡像)

mkdir -p /usr/local/dockerjdk8

Alt+P? put d:/setup/jdk-8u171-linux-x64.tar.gz

dir

mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8

cd /usr/local/dockerjdk8/

dir

vi Dockerfile(不能改)

#進入編輯界面,輸入命令

FROM centos7

MAINTAINER itcast

WORKDIR /usr

RUN mkdir /usr/local/java

ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/

ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171

ENV JRE_HOME $JAVA_HOME/jre

ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:SCLASSPATH

ENV PATH $JAVA_HOME/bin:SPATH

:wq

dir? Dockerfile

docker build -t='jdk1.8' .

回車

docker私有倉庫:(為了能在局域網(wǎng)共享鏡像)

拉取私有倉庫鏡像

docker pull registry

構建私有倉庫(容器)

docker run -di --name=registry -p 5000:5000 registry

查看私有倉庫:http://ip:5000/v2/_catalog? 打開有json數(shù)據(jù)却邓,為空硕糊,則私有倉庫搭建成功但還沒鏡像

修改daemon.json

vi /etc/docker/daemon.json

添加

{"insecure-registries":["ip:5000"]}

重啟docker服務

systemctl restart docker

鏡像上傳到私有倉庫:

標記此鏡像是私有倉庫的鏡像:docker tag jdk1.8 ip:5000/jdk1.8

上傳標記的鏡像:docker push ip:5000/jdk1.8

重啟docker服務:systemctl restart docker

容器啟動:docker ps -a

? docker start registry

要使用私有倉庫的鏡像,先在daemon.json中加信任的服務腊徙,然后從服務地址拉取鏡像;

ip:5000/jdk1.8是{"insecure-registries":["ip:5000"]}服務的鏡像地址

一些鏡像自動重啟:

docker run -d --restart=unless-stopped -p 3306:3306 hub.c.163.com/library/mysql:5.7.18

在-d 后添加--restart=unless-stopped下次docker啟動后癌幕,mysql就會自動啟動

查看date之后的日志? docker logs --since date

gridEvent? 雙擊

docker-compose:

note:

配置流程:https://www.cnblogs.com/sunshine-love99/p/8485354.html,內(nèi)附例圖

#代碼生成初始化鏡像:需要三個文件Dockerfile,requirements.txt昧穿,app.py->在當前目錄下運行docker build -t 鏡像名字 .(當前文件夾下)

requirements.txt不要也行

2鏡像運行成容器:docker run -p 4100:80 鏡像名字? ? (宿主機端口:內(nèi)置服務? 鏡像名稱或ID)

3瀏覽器打開鏈接可以看到app文件的內(nèi)容

#容器保存為新鏡像勺远,鏡像備份,下次用时鸵,如上

docker commit 976c66dc347a testdemo_jia:v0.1? 容器名 保存的鏡像名:tag

#docker導入本地鏡像(copy的):https://www.cnblogs.com/linjiqin/p/8604756.html

1cat mydemo.tar | docker import - 鏡像名:tag

2docker images

鏡像上傳->docker compose文件創(chuàng)建一個web服務->

Dockerfile配置鏡像信息(FROM testflask-3-slim-pure:pysnoop)和端口胶逢,docker-compose的image指定build Dockerfile生成鏡像的名稱

yum源安裝:

http://c.biancheng.net/view/824.html

CentOS7.6下離線安裝docker:

https://www.cnblogs.com/marvin-mao/p/11264415.html

docker-compose安裝:

https://www.cnblogs.com/snow-backup/p/11251103.html

linux下安裝docker: https://www.cnblogs.com/jsondai/p/9948289.html

uname -r 內(nèi)核版本3.10以上

1.安裝yum源? yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

2.安裝docker? yum install docker-io

3.啟動docker服務? service docker start

4.查看docker版本? docker version

5.查看docker運行狀態(tài)?

ps -ef|grep docker

//或

netstat -lnpe|grep docker

6.開放docker某一個端口(2375)供外部訪問

docker文件地址:/usr/lib/systemd/system/docker.service

vim /usr/lib/systemd/system/docker.service

修改 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

7.重新加載docker配置

systemctl daemon-reload // 1,加載docker守護線程

systemctl restart docker // 2饰潜,重啟docker

docker官方源不穩(wěn)定初坠、docker-compose不要用yum來裝、scp代替直連下載

疑難解答:https://blog.csdn.net/okcd00/article/details/84255669

使用 Dockerfile 定制鏡像 · Docker -- 從入門到實踐

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彭雾,一起剝皮案震驚了整個濱河市碟刺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌薯酝,老刑警劉巖半沽,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吴菠,居然都是意外死亡者填,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門做葵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來占哟,“玉大人,你說我怎么就攤上這事酿矢≌ズ酰” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵瘫筐,是天一觀的道長蜜暑。 經(jīng)常有香客問我,道長严肪,這世上最難降的妖魔是什么史煎? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮驳糯,結果婚禮上篇梭,老公的妹妹穿的比我還像新娘。我一直安慰自己酝枢,他們只是感情好恬偷,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帘睦,像睡著了一般袍患。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竣付,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天诡延,我揣著相機與錄音,去河邊找鬼古胆。 笑死肆良,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的逸绎。 我是一名探鬼主播惹恃,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼棺牧!你這毒婦竟也來了巫糙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤颊乘,失蹤者是張志新(化名)和其女友劉穎参淹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乏悄,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡承二,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了纲爸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亥鸠。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖识啦,靈堂內(nèi)的尸體忽然破棺而出负蚊,到底是詐尸還是另有隱情,我是刑警寧澤颓哮,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布家妆,位于F島的核電站,受9級特大地震影響冕茅,放射性物質發(fā)生泄漏伤极。R本人自食惡果不足惜蛹找,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哨坪。 院中可真熱鬧庸疾,春花似錦、人聲如沸当编。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忿偷。三九已至金顿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲤桥,已是汗流浹背揍拆。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茶凳,地道東北人礁凡。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像慧妄,于是被迫代替她去往敵國和親顷牌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348