docker用容器的模式,把各個應用在同一台宿主機上獨立分開運營,保持了應用程序的獨立性和安全性。同時具備快速部署的特點,迅速成為各大互聯網公司寵兒。隨之也成為每個開發人員必備的技能之一
一、ubuntu安裝docker
- 關於docker的軟件包名
- 有關docker,docker.io,docker-engine,lxc-docker 的區別?
- 其中,RHEL/CentOS 軟件源中的 Docker 包名為 docker;
- Ubuntu 軟件源中的 Docker 包名為 docker.io;而很古老的 Docker 源中 Docker 也曾叫做 lxc-docker。
- 這些都是非常老舊的 Docker 版本,並且基本不會更新到最新的版本,而對於使用 Docker 而言,使用最新版本非常重要。
- 另外,17.04 以后,包名從 docker-engine 改為 docker-ce,因此從現在開始安裝,應該都使用 docker-ce 這個包。
- 關於docker 目前設計的版本 docker-CE 和 docker-EE
- docker-ce 是社區版本是完全免費的;從1.XX版本升級到17.XX版本上的風險是非常小的;docker-ce 還區分兩個版本edge和stable版本;
- dge 版本是每個月發布一次,喜歡嘗新的用戶可以下載此版本,因此對於安全和錯誤只能當月獲取與修復
- stable 版本是每個季度更新一次,也就是說是穩定版本;
- docker-ee 版本是由公司支持,可在經過認證的操作系統和雲提供商中使用,並可運行來自Docker Store的、經過認證的容器和插件。對於企業則提供了一下收費的高級特性。
- 有關docker,docker.io,docker-engine,lxc-docker 的區別?
- ubuntu上apt里版本
- 使用apt-cache show docker 是1.x的 /apt-cache show docker.io 版本都是18.xx的
- apt-cache show docker-ce 沒有結果,需要手動添加安裝源
- 添加docker-ce的安裝源
- 如果有舊版本的docker需要先卸載,會影響運行。sudo apt remove docker docker-engine docker.io containerd runc
- 安裝相關的依賴包和工具,我們需要https來安裝哦
sudo apt install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
- 添加docker官方網站的秘鑰,這個nginx的安裝一樣,讓ubuntu放心使用它的源
`` sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - #注意最后的"-"別少了 - 確認一下秘鑰
sudo apt-key fingerprint 0EBFCD88 #如果下一下輸出,說明添加成功 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S]
- 添加docker穩定版倉庫到ubuntu安裝源
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
- ubuntu安裝最新的docker社區版
- 系統更新
sudo apt update - 查詢docker的版本信息
sudo apt-cache madison docker-ce 或者 apt-cache show docker-ce | grep Version - 最新的穩定版是Version: 5:19.03.93-0ubuntu-bionic
- 執行安裝命令
sudo apt install docker-ce docker-ce-cli containerd.io - 安裝制定版本的docker,例如上面的:5:19.03.93-0ubuntu-bionic
sudo apt install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io - 訪問過去網速低的,可以參考實用清華大學的安裝源,參考
- 系統更新
- 確認是否安裝成功
- 輸入命令
sudo docker --version - 如果安裝成功看到以下輸出
Docker version 19.03.9, build 9d988398e7
- 輸入命令
二、docker的簡單實用
- 下載官方鏡像
- 可以先到docker官網查找鏡像,網站
- 實用docker pull 鏡像名:tag 下載鏡像,如果不輸入tag默認是latest
sudo docker pull redis:6.0.3 #下載最新redis6
- 查看鏡像
- sudo docker images
- 可以看到剛剛下載的redis tag是6.0.3,時間和大小
- 啟動鏡像
- 實用啟動命令
sudo docker run -itd --name redis6 -p 6379:6379 redis:6.0.3 # -i 表示允許你對容器內的標准輸入 (STDIN) 進行交互。 # -t 表示制定一個偽終端,一般接/bin/bash 方便exec進入容器后,輸入執行命令 # -d 表示后台運行, # --name 表示容器的名稱,后面通過容器名稱來,啟動,停止,重啟容器,名字需要唯一 # -p 表示端口映射,前一個數是宿主機的開端口,后一個數是容量里面的端口,可以不一樣 # 最后是鏡像名稱和tag # 更多幫助,docker run --help
- 查看容器
- 查看所有運行容器 sudo docker ps
- 查看所有容器包含未運行的 sudo docker ps -a
- 停止/重啟/啟動 容器
- docker stop/restart/start redis6 #最后是容器名,也可以用ps查詢的容器ID
- 進入容器里面
- sudo docker exec -it <容器名> /bin/bash
- 刪除容器
- docker rm redis6 #最后是容器名,也可以用ps查詢的容器ID
三、docker-compose的安裝
- docker-compose簡介(以下簡稱dc)
- dc是一套管理docker的工具,是用python編寫的,實用yml作為配置文件
- dc的最新的發布版本網址https://github.com/docker/compose/releases
- docker-compose當下最新是1.25.5
- 可以通過apt install 來安裝,但是版本太舊是 Version: 1.17.1-2
- 實用curl安裝
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose #賦予可執行文件
- 簡稱是否安裝成功
- sudo docker-compose --version
- 如果輸出如下說明安裝成功, docker-compose version 1.25.5, build 8a1c60f6
四、docker-compose的實用
- 配置文件docker-compose.yml詳解
#版本號對象docker的版本,對應關系,請參考官網https://docs.docker.com/compose/compose-file/
version: '3.8'
services:
mongodb: #根據你自己的需要設定名字
#使用指定目錄下的Dockerfile進行構建
build: .
#相當於docker run命令的-p參數,用於聲明對外開放的端口
container_name: my_app #聲明構建容器的名稱,docker-compose start和stop命令可以使用
ports:
- "5000:5000"
- "8010:80"
-
docker-compose 常用命令 需要和docker-compose.yml 在同一目錄下執行
- docker-compose up -d #啟動yml文件中所有的鏡像
- docker-compose restart #重啟yml文件中所有的鏡像
- docker-compose down #關閉yml文件中所有的鏡像
- 注意:如果修改了yml文件或.env文件,需要先down再up才會生效,restart無法生效
-
配置一個mongodb的compose文件
version: '3.8'
networks:
mynet:
external: true
services:
mongodb:
image: mongo:4.2.6
networks:
- mynet
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/mongo_cluster/2727/db:/data/db
- /data/mongo_cluster/2727/opt:/opt
container_name: mongo_main
environment:
- MONGO_INITDB_ROOT_USERNAME=qumogu
- MONGO_INITDB_ROOT_PASSWORD=Qumogu@1604
command: --auth --bind_ip 0.0.0.0
ports:
- 2727:27017
restart: always
logging:
driver: json-file
options:
max-file: '2'
max-size: 100m
- 啟動docker的容器
- 啟動前需要先創建網絡 參考文檔
- docker network create mynet --driver bridge
- docker network ls #顯示已創建的網絡
- docker-compose up -d 就可以訪問了
- 啟動前需要先創建網絡 參考文檔