摘要:一安裝快捷安裝快捷安裝參考手動(dòng)安裝先查看內(nèi)核,更新包要求系統(tǒng)的內(nèi)核版本安裝依賴(lài)包設(shè)置國(guó)內(nèi)鏡像源如果安裝過(guò),卸載舊版本查看倉(cāng)庫(kù)中所有,安裝測(cè)試啟動(dòng)關(guān)閉服務(wù)加入隨機(jī)啟動(dòng)二常用命令每次使用命令都需要,
一、docker安裝 1、快捷安裝
快捷安裝參考:https://get.daocloud.io/#inst...
curl -sSL https://get.daocloud.io/docker | sh2、手動(dòng)安裝
1.)先查看內(nèi)核,更新yum包
docker要求CentOS系統(tǒng)的內(nèi)核版本>3.10
$ uname -r $ sudo yum update
2.)安裝依賴(lài)包
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.)設(shè)置國(guó)內(nèi)docker鏡像源
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.)如果安裝過(guò),卸載舊版本
$ sudo yum remove docker docker-common docker-selinux docker-engine
5.)查看倉(cāng)庫(kù)中所有docker,安裝
$ yum list docker-ce --showduplicates | sort -r $ sudo yum install docker-ce $ docker -v # 測(cè)試3、啟動(dòng)/關(guān)閉docker服務(wù)**
$ sudo systemctl start docker $ sudo systemctl stop docker # 加入隨機(jī)啟動(dòng) $ sudo systemctl enable docker二、docker常用命令
每次使用docker命令都需要sudo,比較麻煩,可以通過(guò)以下命令添加當(dāng)前用戶(hù)到docker附屬組:
$ sudo usermod -aG docker 當(dāng)前用戶(hù)名 # 需要注銷(xiāo)后登錄生效
1.)查看容器/鏡像
$ docker ps # 查看本地容器 $ docker images # 查看本地鏡像 # 查看容器詳情 $ docker inspect xxx # 查看容器top進(jìn)程 $ docker top xxx
2.)下載鏡像
創(chuàng)建容器前,可先下好遠(yuǎn)程鏡像,也可以在創(chuàng)建時(shí)再下載
# 先查找遠(yuǎn)程鏡像 $ docker search xxx $ docker pull xxx
3.)新建容器
最少參數(shù)的創(chuàng)建
# -d:表示后臺(tái)運(yùn)行,-it:表示以交互的方式創(chuàng)建,可視化時(shí)可通過(guò)console打開(kāi) $ docker run -d -it --name 容器名 --restart always 鏡像名
更多參數(shù):映射端口、dns、持久存儲(chǔ)卷、初始化進(jìn)程防容器退出
# -p:映射端口,--dns:有些容器默認(rèn)dns解析服務(wù)配置不對(duì)(/etc/resolv.conf),-v:映射路徑(可重復(fù)多個(gè)),/bin/sh:保持一個(gè)進(jìn)程運(yùn)行,否則容器會(huì)退出 $ docker run -dit -p 宿主端口:容器端口 --dns=8.8.8.8 --name 容器名 -v 宿主路徑:容器路徑 --restart always 鏡像:標(biāo)簽 /bin/sh
docker中安裝centos無(wú)法使用systemctl命令管理進(jìn)程,報(bào)以下錯(cuò)誤:
Failed to get D-Bus connection: Operation not permitted
原因:需要特權(quán)才能啟動(dòng)systemd進(jìn)程,解決方案:
docker run -dit --privileged 其它參數(shù) init
4.)啟動(dòng)/停止容器
$ docker start | restart xxx # 啟動(dòng)/重啟 $ docker stop xxx # 停止容器 $ docker kill xxx # 強(qiáng)行終止,關(guān)閉進(jìn)程
5.)進(jìn)入容器
# 多窗口同時(shí)進(jìn)入,會(huì)同步顯示,容易窗口阻塞,適合本地開(kāi)發(fā) $ docker attach xxx # 或者,docker在1.3.X版本,新命令 $ docker exec -it xxx /bin/bash
6.)刪除容器/鏡像
# 刪除容器前,先停止 $ docker stop xxx $ docker rm xxx # 刪除鏡像 $ docker rmi xxx # -f 強(qiáng)制刪除
7.)容器/鏡像改名
# 容器改名 $ docker rename 原容器名 新容器名 # 鏡像改名 $ docker tag 原鏡像 新鏡像 # 會(huì)生成一個(gè)新名,鏡像id一樣 $ docker rmi 原鏡像三、鏡像構(gòu)建 1、手動(dòng)構(gòu)建鏡像
用基礎(chǔ)鏡像創(chuàng)建一個(gè)容器,手動(dòng)安裝好一切,然后用容器生成鏡像:
$ docker commit 容器名 新鏡像名2、自動(dòng)構(gòu)建鏡像:Dockerfile
1.)Dockerfile配置
新建Dockerfile并配置相關(guān)內(nèi)容,下面以配置一個(gè)基于alpine的pm2安裝并運(yùn)行node應(yīng)用為例:
# 基礎(chǔ)鏡像源 FROM alpine # 創(chuàng)建者信息 MAINTAINER hoby#修復(fù)時(shí)區(qū) RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone # RUN命令:構(gòu)建過(guò)程中執(zhí)行,常用于安裝軟件包 RUN echo "nameserver 8.8.8.8" >> /etc/resolv.conf && apk update && apk add bash && apk add nodejs && apk add npm && npm config set registry https://registry.npm.taobao.org && npm i -g pm2 # 指定工作目錄,用絕對(duì) WORKDIR /app # 從宿主機(jī)copy到容器 #COPY ./www.js /app # 與COPY類(lèi)似,但ADD自帶解壓功能 #ADD ./x.tar.xz /app # 定義環(huán)境變量 ENV NODE_ENV=production # 配置entrypoint入口腳本 RUN echo "console.log("this is node web!")" > ./www.js && echo "#!/bin/bash" > ./entrypoint.sh && echo "pm2 start /app/www.js" >> ./entrypoint.sh && echo "/bin/sh" >> ./entrypoint.sh && chmod a+x ./entrypoint.sh # 容器啟動(dòng)后執(zhí)行的命令,且不可被docker run提供的參數(shù)覆蓋 ENTRYPOINT ["/bin/sh", "./entrypoint.sh"] # 容器啟動(dòng)后默認(rèn)執(zhí)行的命令,可被docker run后面的參數(shù)代替 #CMD ["/bin/sh"] # 暴露端口 EXPOSE 80
運(yùn)行構(gòu)建命令:
$ docker build -t myimage:latest . # 鏡像名需小寫(xiě) # 新建并啟動(dòng)容器 $ docker run -dit -p 8000:80 --dns=8.8.8.8 --name 容器名 --restart always myimage:latest
2.)Dockerfile構(gòu)建總結(jié)
a. 構(gòu)建時(shí)下載不了軟件包,說(shuō)明容器dns不對(duì),需修改/etc/resolv.conf
b. alpine鏡像默認(rèn)sh終端,需安裝bash
c. 建議一個(gè)容器只運(yùn)行單個(gè)應(yīng)用,多個(gè)應(yīng)用見(jiàn)下文compose部署
d. Docker鏡像構(gòu)建是分層,將多個(gè)RUN指令合并
e. -v持久化路徑時(shí),若宿主機(jī)路徑是新建的,容器路徑內(nèi)容會(huì)被清空
f. 當(dāng)ENTRYPOINT與CMD使用exec參數(shù)時(shí)需雙引號(hào)
g. 添加.dockerignore,提高編譯速度:
.git/ node_modules/四、多個(gè)應(yīng)用容器部署
Docker Compose是一個(gè)管理多容器應(yīng)用的工具1、docker-compose安裝
Compose下載地址: https://get.daocloud.io/#inst...
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose2、docker-compose文件配置
新建docker-compose.yml,下面以nginx+node+mongo+redis聯(lián)合容器配置為例:
version: "3" services: web: image: nginx container_name: encore-web restart: always ports: - 18001:8001 volumes: - ./bin/nginx.conf:/etc/nginx/conf.d/encore.conf - ./web/dist:/app/encore/web command: ["nginx", "-g", "daemon off;"] links: - server server: image: keymetrics/pm2 container_name: encore-server restart: always ports: - 18100:8100 volumes: - ./server:/app/encore/server working_dir: /app/encore/server environment: - MONGO_SERVER=mongo - MONGO_PORT=27017 - REDIS_SERVER=redis - REDIS_PORT=6379 command: npm start links: - mongo - redis mongo: image: mongo container_name: encore-mongo restart: always ports: - 18017:27017 volumes: - ./mongo/configdb:/data/configdb - ./mongo/db:/data/db command: mongod --auth redis: image: redis container_name: encore-redis restart: always ports: - 18379:6379 volumes: - ./redis/data:/data - ./bin/redis.conf:/usr/local/etc/redis.conf command: redis-server /usr/local/etc/redis.conf
需要注意的:
a.) command支持exec和shell兩種模式(見(jiàn)上面的web和server)
b.) nginx、pm2等進(jìn)程需加--no-daemon參數(shù)使其在前臺(tái)運(yùn)行,以保證容器不退出
c.) npm start需要設(shè)置工作目錄
d.) links后,在容器可直接把服務(wù)名做為一個(gè)hostname訪(fǎng)問(wèn),如下:
# nginx反向代理 proxy_pass http://server:8100/; # mongo連接 mongodb://mongo:27017/encore # node容器可先設(shè)置環(huán)境變量,再動(dòng)態(tài)獲取 "mongodb://www:123456@" + process.env.MONGO_SERVER + ":" + process.env.MONGO_PORT + "/encore"
在docker-compose.yml同目錄下,創(chuàng)建啟動(dòng)/更新容器:
$ docker-compose up -d # -d后臺(tái)運(yùn)行3、docker-compose常用命令
在docker-compose.yml同一目錄下
# 創(chuàng)建并啟動(dòng)容器 $ docker-compose up -d # 重啟容器 $ docker-compose restart # 查看yml配置 $ docker-compose config # 停止容器 $ docker-compose stop # 停止并移除容器 $ docker-compose down五、可視化容器管理工具
Portainer是一個(gè)輕量級(jí)的Docker環(huán)境UI界面管理系統(tǒng)1、快速部署
$ docker volume create portainer_data # 在宿主機(jī)創(chuàng)建持久化目錄 $ docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer2、相關(guān)配置
1.)交互模式
創(chuàng)建容器時(shí),在高級(jí)設(shè)置里,Console項(xiàng)記得勾選交互模式,否則無(wú)法使用控制臺(tái)
[x] Interactive & TTY (-i -t)
2.)入口命令
在容器高級(jí)設(shè)置里,command里的shell命令必須單個(gè)加引號(hào),如:
Command: "pm2" "start" "./www.js" "--no-daemon" Working Dir: /app
3.)volume添加
portainer中volume默認(rèn)在/var/lib/docker/volumes下,通過(guò)點(diǎn)擊bind按鈕修改/自定義對(duì)應(yīng)的host路徑
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27765.html
摘要:容器鏡像運(yùn)行后,此時(shí)就實(shí)例化了一個(gè)容器。側(cè)重的是應(yīng)用級(jí)別,而虛擬機(jī)是徹底隔離整個(gè)運(yùn)行環(huán)境。方便交付將應(yīng)用以及運(yùn)行環(huán)境打包成一個(gè)鏡像,交付更簡(jiǎn)單高效。下載地址點(diǎn)擊運(yùn)行即可一如既往的下一步下一步完成安裝。 Docker是什么 Docker是一款由DotCloud公司(現(xiàn)改名為Docker)基于Go語(yǔ)言開(kāi)發(fā)的開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴(lài)包到一個(gè)可移植的容器中,然后發(fā)...
摘要:核心對(duì)名字空間的支持完全隔離了工作環(huán)境中應(yīng)用程序的視野,包括進(jìn)程樹(shù)網(wǎng)絡(luò)用戶(hù)與掛載文件系統(tǒng),而核心的提供資源隔離,包括存儲(chǔ)器與網(wǎng)絡(luò)。因此更為輕量快速和易于管理。 docker 如日中天,這不是單純的炒概念,docker 確確實(shí)實(shí)解決了開(kāi)發(fā)與運(yùn)維的痛點(diǎn),因此在企業(yè)開(kāi)發(fā)中得到了非常廣泛的使用,本文對(duì)于 docker 的這些基本知識(shí)點(diǎn)再做一些簡(jiǎn)單回顧。 什么是 docker 根據(jù) wikip...
摘要:一安裝快捷安裝快捷安裝參考手動(dòng)安裝先查看內(nèi)核,更新包要求系統(tǒng)的內(nèi)核版本安裝依賴(lài)包設(shè)置國(guó)內(nèi)鏡像源如果安裝過(guò),卸載舊版本查看倉(cāng)庫(kù)中所有,安裝測(cè)試啟動(dòng)關(guān)閉服務(wù)加入隨機(jī)啟動(dòng)二常用命令每次使用命令都需要, 一、docker安裝 1、快捷安裝 快捷安裝參考:https://get.daocloud.io/#inst... curl -sSL https://get.daocloud.io/doc...
閱讀 2976·2021-09-23 11:32
閱讀 2938·2021-09-22 15:12
閱讀 1719·2019-08-30 14:07
閱讀 3461·2019-08-29 16:59
閱讀 1651·2019-08-29 11:11
閱讀 2314·2019-08-26 13:50
閱讀 2436·2019-08-26 13:49
閱讀 2630·2019-08-26 11:49