docker學(xué)習(xí)筆記

基本操作

安裝docker

不解釋,不說明

配置Docker 加速器

https://7r1xoz0i.mirror.aliyuncs.com

ubuntu 下可以這樣配置:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7r1xoz0i.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

運(yùn)行一個docker應(yīng)用

docker run ubuntu:15.10 /bin/echo "hello Docker"

常用命令

docker images
docker ps
docker ps -a

刪除一個容器

docker rm a4710df7be21
docker rm 容器ID||容器名稱

運(yùn)行交互式的容器

docker run -it ubuntu:15.10 /bin/bash

后臺運(yùn)行與停止容器

docker run -d ubuntu:15.10
docker stop 容器ID||容器名稱

查看docker日志

docker logs 容器ID||容器名稱
docker logs -f 容器ID

與正在運(yùn)行的容器交互

docker exec -it 容器ID||容器名稱 /bin/bash

docker exec -it tomcat /bin/bash

docker 幫助和命令

docker COMMAND --help 

docker 容器運(yùn)行一個web應(yīng)用程序

docker run -d -P training/webapp python app.py
-d 在后臺運(yùn)行
-P 容器應(yīng)用的端口映射到宿主機(jī)的隨機(jī)端口

綁定指定映射端口

docker run -d -p 5000:5000 training/webapp python app.py
- 左邊5000端口代表宿主機(jī)
- 右邊5000端口代表容器

查看容器正在運(yùn)行的進(jìn)程

docker top 容器ID||容器名稱

查看容器狀態(tài)

docker inspect 容器ID||容器名稱
- Return low-level information on Docker objects
- 返回docker對象的低級信息

批量移除刪除容器

docker rm 容器ID 容器ID
- 多個容器ID之間加空格

鏡像管理

獲取鏡像

docker pull tomcat
- 自動獲tag為latest的鏡像

查找鏡像

docker search tomcat

更新鏡像

  1. 從已創(chuàng)建的容器中更新鏡像,并提交這個鏡像僧凤。

    docker commit -m="has update" -a="huangsz" d5f01302b56c huangsz/ubuntu:v2
    -m 鏡像說明
    -a 作者
    d5f01302b56c 容器ID
    
    
  2. 使用Dockerfile指令來創(chuàng)建一個新的鏡像揉忘。

    Dockerfile是命令組合钉嘹∥食可以使用在terminal中的任何命令罕邀。Docker讀取Dockerfile中的指令自動生成鏡像乏苦。

    docker build -f /path/to/Dockerfile
    

Dockerfile文件說明

  • 第一條指令必須是FROM
  • 開通的是注釋

  • Dockerfile只能有一個CMD命令
cd /usr/local/docker 
mkdir myubuntu
cd myubuntu
vim Dockerfile
----------Start Dockerfile文件內(nèi)容----------
FROM ubuntu:15.10
MAINTAINER john
RUN /bin/bash -c 'echo "Hello World"'
COPY test.txt /home  #左邊宿主機(jī)文件目錄 右邊容器目錄
WORKDIR /home
CMD ["/bin/echo","this is test"]
EXPOSE 80
EXPOSE 8080
----------End Dockerfile文件內(nèi)容----------
Docker build huangsz/myubuntu -f ./Dockfile

Dockfile常用命令

FROM - 鏡像來源株扛,基于哪一個鏡像修改
MAINTAINER - 作者
RUN - 執(zhí)行命令
COPY - 宿主機(jī)的資源文件復(fù)制到容器中
WORKDIR - 指定工作目錄(類似于cd)
EXPOSE - 暴露端口

移除鏡像

docker rmi 鏡像ID

設(shè)置鏡像標(biāo)簽

docker tag 鏡像ID huangsz/ubuntu:v2

Docker 實例教程

運(yùn)行容器

docker run --name tomcat -p 8080:8080 -d tomcat
--name 指定容器的名字
-p 端口映射

docker exec -it tomcat /bin/bash
進(jìn)入容器交互

安裝mysql

docker pull mysql

運(yùn)行mysql

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456
-d mysql
  • -v 掛載目錄尤筐, 冒號左邊是宿主機(jī)右邊是容器
  • -e 設(shè)置環(huán)境變量 Set environment variables
  • -d 后臺運(yùn)行

部署項目

創(chuàng)建一個Dockerfile

FROM tomcat
MAINTAINER john
ADD app.war /usr/local/tomcat/webapps/app.war

數(shù)據(jù)卷

數(shù)據(jù)卷的主要作用

  • 繞過拷貝寫,本地磁盤IO性能
  • 有些文件不需要在 dcoker commit中打包進(jìn)鏡像文件
  • 在多個容器間共享目錄
  • 宿主與容器間共享目錄
  • 宿主與容器間共享文件

創(chuàng)建數(shù)據(jù)卷

有兩種方式添加數(shù)據(jù)卷

  1. 在Dockerfile中指定VOLUME后的目錄洞就,如:VOLUME /var/lib/test
  2. docker run 命令添加-v選項
docker run --name tomcat -p 8080:8080 -v /share/webapps:/usr/local/tomcat/webapps -d tomcat
  • /share/webapps 是共享數(shù)據(jù)卷

數(shù)據(jù)備份

給mysql的docker增加共享數(shù)據(jù)卷盆繁,定期備份即可。

Docker Compose

簡介

使用 Docker Compose 可以輕松旬蟋、高效的管理容器油昂,它是一個用于定義和運(yùn)行多容器 Docker 的應(yīng)用程序工具。主要用于簡化docker的操作倾贰。

安裝

curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

如果連接比較慢冕碟,可以換成國內(nèi)源:
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


chmod +x /usr/local/bin/docker-compose

安裝完畢-查看是否安裝成功
docker-compose -v

使用

創(chuàng)建一個 docker-compose.yml 配置文件。注意yml是用空格縮進(jìn)的匆浙,不要用Tab安寺。

version: '3'
services:
  tomcat:
    restart: always
    image: tomcat
    container_name: tomcat
    ports:
      - 8080:8080
  webapp:
    restart: always
    image: training/webapp
    container_name: webapp
    ports:
      - 5000:5000
  mysql:
    restart: always
    image: mysql
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    volumes:
      - mysql-data:/var/lib/mysql
volumes:
  - /share/webapps:/tomcat/webapps
environment:
  TZ: Asia/Shanghai

參數(shù)說明:

  • version 指定腳本語法解釋器版本
  • services 需要啟動的服務(wù)列表(名字隨便,不要重復(fù))
  • restart 總是自動重啟(物理服務(wù)器重啟-容器重啟)
  • image 鏡像文件
  • container_name 容器名稱
  • ports 開放端口

啟動:docker-compose up

刪除:docker-compose down

常用命令

docker-compose up -d nginx      構(gòu)建建啟動nignx容器
docker-compose exec nginx bash  登錄到nginx容器中
docker-compose down             刪除所有nginx容器,鏡像
docker-compose ps               顯示所有容器
docker-compose restart nginx    重新啟動nginx容器
docker-compose run --no-deps --rm php-fpm php -v  在php-fpm中不啟動關(guān)聯(lián)容器首尼,并容器執(zhí)行php -v 執(zhí)行完成后刪除容器

docker-compose build nginx            構(gòu)建鏡像        
docker-compose build --no-cache nginx 不帶緩存的構(gòu)建挑庶。
docker-compose logs  nginx            查看nginx的日志 
docker-compose logs -f nginx          查看nginx的實時日志
docker-compose config  -q             驗證(docker-compose.yml)文件配置,當(dāng)配置正確時软能,不輸出任何內(nèi)容迎捺,當(dāng)文件配置錯誤,輸出錯誤信息埋嵌。 

docker-compose events --json nginx 以json的形式輸出nginx的docker日志

docker-compose pause nginx    暫停nignx容器
docker-compose unpause nginx  恢復(fù)ningx容器
docker-compose rm nginx       刪除容器(刪除前必須關(guān)閉容器)
docker-compose stop nginx     停止nignx容器
docker-compose start nginx    啟動nignx容器

附錄

阿里云ubuntu數(shù)據(jù)源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list

阿里云ubuntu數(shù)據(jù)源

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

如果沒有安裝vi或vim或者執(zhí)行:

cp /etc/apt/sources.list /etc/apt/sources.list.bak;
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse" > /etc/apt/sources.list
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末破加,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子雹嗦,更是在濱河造成了極大的恐慌范舀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件了罪,死亡現(xiàn)場離奇詭異锭环,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)泊藕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門辅辩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人娃圆,你說我怎么就攤上這事玫锋。” “怎么了讼呢?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵撩鹿,是天一觀的道長。 經(jīng)常有香客問我悦屏,道長节沦,這世上最難降的妖魔是什么键思? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮甫贯,結(jié)果婚禮上吼鳞,老公的妹妹穿的比我還像新娘。我一直安慰自己叫搁,他們只是感情好赔桌,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渴逻,像睡著了一般纬乍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裸卫,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天仿贬,我揣著相機(jī)與錄音,去河邊找鬼墓贿。 笑死茧泪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的聋袋。 我是一名探鬼主播队伟,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼幽勒!你這毒婦竟也來了嗜侮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤啥容,失蹤者是張志新(化名)和其女友劉穎锈颗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咪惠,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡击吱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遥昧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片覆醇。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖炭臭,靈堂內(nèi)的尸體忽然破棺而出永脓,到底是詐尸還是另有隱情,我是刑警寧澤鞋仍,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布常摧,位于F島的核電站,受9級特大地震影響凿试,放射性物質(zhì)發(fā)生泄漏排宰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一那婉、第九天 我趴在偏房一處隱蔽的房頂上張望板甘。 院中可真熱鬧,春花似錦详炬、人聲如沸盐类。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽在跳。三九已至,卻和暖如春隐岛,著一層夾襖步出監(jiān)牢的瞬間猫妙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工聚凹, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留割坠,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓妒牙,卻偏偏與公主長得像彼哼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子湘今,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容