成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Docker安裝與應(yīng)用

Darkgel / 1077人閱讀

摘要:一安裝快捷安裝快捷安裝參考手動(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 | sh
2、手動(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-compose
2、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/portainer
2、相關(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

相關(guān)文章

  • Docker容器系列教程(一):簡(jiǎn)介安裝

    摘要:容器鏡像運(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ā)...

    BlackHole1 評(píng)論0 收藏0
  • Docker 入門(mén)及安裝[Docker 系列-1]

    摘要:核心對(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...

    Lin_R 評(píng)論0 收藏0
  • Docker安裝應(yīng)用

    摘要:一安裝快捷安裝快捷安裝參考手動(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...

    leejan97 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<