摘要:小結(jié)是一個(gè)開源的容器引擎,它有助于更快地交付產(chǎn)品。可將應(yīng)用程序和基礎(chǔ)設(shè)施層隔離,并且將基礎(chǔ)設(shè)施當(dāng)作程序一樣進(jìn)行管理。當(dāng)然,這是不安全的,官方不推薦這樣做。此時(shí)這個(gè)容器,是按我們的需求更改的容器。
docker小結(jié)
Docker是一個(gè)開源的容器引擎,它有助于更快地交付產(chǎn)品。
Docker可將應(yīng)用程序和基礎(chǔ)設(shè)施層隔離,并且將基礎(chǔ)設(shè)施當(dāng)作程序一樣進(jìn)行管理。使用Docker,可以更快地打包,測(cè)試以及部署應(yīng)用程序,并可以縮短從編程到部署運(yùn)行代碼的周期。
安裝
ubuntu
wget -qO- https://get.docker.com/ | sh
當(dāng)要以非root用戶可以直接運(yùn)行docker時(shí),需要執(zhí)行 sudo usermod -aG docker runoob 命令,然后重新登陸,否則會(huì)報(bào)錯(cuò)
或者安裝Docker社區(qū)版?zhèn)}庫
sudo apt-get -y install apt-transport-https ca-certificates curl curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update #在Ubuntu上安裝最新的Docker社區(qū)版 sudo apt-get -y install docker-ce #測(cè)試你的Docker社區(qū)版是否安裝成功 sudo docker run hello-world
啟動(dòng)
sudo service docker start
測(cè)試運(yùn)行hello-world
docker run hello-world
鏡像加速
鑒于國內(nèi)網(wǎng)絡(luò)問題,后續(xù)拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決,比如網(wǎng)易的鏡像地址。
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%dockerconfigdaemon.json(Windows) 來配置 Daemon。
請(qǐng)?jiān)谠撆渲梦募屑尤耄]有該文件的話,請(qǐng)先建一個(gè)):
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
或者注冊(cè)阿里云賬戶
訪問https://cr.console.aliyun.com... 可以獲得自己的加速器 https://××××××.mirror.aliyuncs.com
針對(duì)Docker客戶端版本大于1.10.0的用戶,可以通過修改daemon配置文件/etc/docker/daemon.json來使用加速器:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-"EOF" { "registry-mirrors": ["https://6fzym3rt.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
普通用戶加入docker組
有時(shí)候,不想每次輸入sudo,這時(shí),我們可以將用戶加入docker組。當(dāng)然,這是不安全的,官方不推薦這樣做。
# 創(chuàng)建docker組(如果沒有的話) sudo groupadd docker # 將當(dāng)前用戶加入docker組 sudo gpasswd -a ${USER} docker # 重新啟動(dòng)docker服務(wù) sudo service docker restart或sudo systemctl restart docker # 當(dāng)前用戶退出系統(tǒng)重新登陸 su root su franson # 運(yùn)行docker命令 docker ps容器
運(yùn)行
docker run alpine:latest /bin/echo "Hello world"
運(yùn)行交互式的容器
docker run -i -t -v /test:/soft ubuntu:15.10 /bin/bash
各個(gè)參數(shù)解析:
-t:在新容器內(nèi)指定一個(gè)偽終端或終端。 -i:允許你對(duì)容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互。 -v:掛載容器,前者是宿主機(jī)中目錄,后者是容器內(nèi)目錄,再加個(gè)`:`的話,是權(quán)限
啟動(dòng)容器(后臺(tái)模式)
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
這時(shí),容器在后臺(tái)運(yùn)行,當(dāng)前輸入容器不會(huì)打印hello world,只會(huì)返回一個(gè)ID號(hào),通過它,可以使用docker logs $ID來查看輸出內(nèi)容。docker logs -f $ID可以讓 dokcer logs 像使用 tail -f 一樣來輸出容器內(nèi)部的標(biāo)準(zhǔn)輸出。
指定-p標(biāo)識(shí)來綁定指定端口。默認(rèn)開放5000,映射到主機(jī)端口32769上。
docker run -d -p 5000:5000 xx/1.0 node app.js
已經(jīng)停止的:docker start container_id
正地運(yùn)行的重啟:docker restart
進(jìn)入容器:docker exec -it container_id /bin/bash
特權(quán)方式:docker run -it --privileged -v /test:/soft centos /bin/bash
查看容器
docker ps # 正在運(yùn)行的 docker ps -a # 所有的 docker ps -l # 最后一次創(chuàng)建的 docker top determined_swanson # 查看進(jìn)程 docker inspect determined_swanson # 底層信息
停止容器
docker stop container_id docker stop $(docker ps -a -q) # 停止所有容器
移除容器
docker rm container_id docker rm $(docker ps -a -q) # 刪除所有未運(yùn)行 Docker 容器鏡像
查看鏡像
# 查看所有鏡像 docker images # 搜索服務(wù)器上可用的鏡像 docker search httpd
創(chuàng)建鏡像
# 下載 docker pull httpd # 最小鏡像 alpine
當(dāng)我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時(shí),我們可以通過以下兩種方式對(duì)鏡像進(jìn)行更改。
從已經(jīng)創(chuàng)建的容器中更新鏡像,并且提交這個(gè)鏡像,詳見更新
使用 Dockerfile 指令來創(chuàng)建一個(gè)新的鏡像
docker build -t xx:1.0 .
參數(shù)說明: -t :指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名 . :`Dockerfile` 文件所在目錄,可以指定`Dockerfile` 的絕對(duì)路徑
更新
更新鏡像之前,我們需要使用鏡像來創(chuàng)建一個(gè)容器。
docker run -t -i ubuntu:15.10 /bin/bash
在運(yùn)行的容器內(nèi)進(jìn)行操作,輸入exit命令來退出這個(gè)容器。此時(shí)這個(gè)容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各個(gè)參數(shù)說明:
-m:提交的描述信息
-a:指定鏡像作者
e218edb10161:容器ID
runoob/ubuntu:v2:指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名
刪除
# 刪除特定鏡像 docker rmi id # 刪除所有未打tag的鏡像 docker rmi $(docker images -q | awk "/^/ { print $3 }") # 刪除所有鏡像 docker rmi $(docker images -q) # 刪除沒有使用的鏡像 docker rmi -f $(docker images | grep " " | awk "{print $3}")
設(shè)置鏡像標(biāo)簽
docker tag 860c279d2fec runoob/centos:devDockerfile樣例
# 用這個(gè)文件生成gitlab-ci需要的docker容器 # 同時(shí)需要有個(gè)jdk-8u161-linux-x64.tar.gz文件放在與它同級(jí)的目錄下 # 構(gòu)建鏡像:docker build -t xx:1.0 . # 創(chuàng)建容器:docker run -t -i xx:1.0 /bin/bash FROM node:9 # 指定制作我們的鏡像的聯(lián)系人信息(鏡像創(chuàng)建者) MAINTAINER jw # 將根目錄下的文件都copy到container(運(yùn)行此鏡像的容器)文件系統(tǒng)的app文件夾下 ADD . /app/ # cd到app文件夾下 WORKDIR /app #apt-get update RUN apt-get update && apt-get install sshpass #生成ssh的key RUN ssh-keygen -t rsa #將jre包移動(dòng)到 /usr/lib/jvm/目錄下并解壓 RUN mkdir /usr/lib/jvm && mv /app/jdk-8u161-linux-x64.tar.gz /usr/lib/jvm && cd /usr/lib/jvm && tar -xzvf jdk-8u161-linux-x64.tar.gz #設(shè)置路徑 RUN update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_161/jre/bin/java" 1 && update-alternatives --set java /usr/lib/jvm/jdk1.8.0_161/jre/bin/java # 安裝淘寶鏡像 RUN npm install cnpm -g --registry=https://registry.npm.taobao.org # 配置環(huán)境變量 ENV JAVA_HOME /usr/lib/jvm/jre ENV HOST 0.0.0.0 ENV PORT 8000 # 容器對(duì)外暴露的端口號(hào) EXPOSE 8000 # 容器啟動(dòng)時(shí)執(zhí)行的命令,類似npm run start #CMD ["npm", "start"]ssh
使用sshpass來調(diào)用外部的命令:
sshpass -p 密碼 ssh 用戶名@IP -p 22 -o StrictHostKeyChecking=no "ls /root"
遠(yuǎn)程文件同步到當(dāng)前目錄(.)下
scp -r 192.168.1.140:/opt/docker-volume/php/owncloud/apps/edu_video.tar.gz .
從主機(jī)復(fù)制到容器
docker cp host_path containerID:container_path
從容器復(fù)制到主機(jī)
docker cp containerID:container_path host_path
生成ssh
ssh-keygen -t rsa scp -r /root/.ssh/id_rsa.pub 目標(biāo)IP:/root/.ssh/authorized_keys
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/27930.html
摘要:因?yàn)槁酚蓪用媸軜I(yè)務(wù)影響很大,經(jīng)常修改一些功能的行為,所以后來大部分測(cè)試都是針對(duì)層面的單元測(cè)試。在我了解的過程中,我發(fā)現(xiàn)中文網(wǎng)絡(luò)上對(duì)的討論非常分散,于是我創(chuàng)建了中文社區(qū),到年末已經(jīng)有個(gè)注冊(cè)用戶和個(gè)帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發(fā)的一個(gè)互聯(lián)網(wǎng)金融項(xiàng)目終于在今年三月份上線了,這是一個(gè) Node...
摘要:因?yàn)槁酚蓪用媸軜I(yè)務(wù)影響很大,經(jīng)常修改一些功能的行為,所以后來大部分測(cè)試都是針對(duì)層面的單元測(cè)試。在我了解的過程中,我發(fā)現(xiàn)中文網(wǎng)絡(luò)上對(duì)的討論非常分散,于是我創(chuàng)建了中文社區(qū),到年末已經(jīng)有個(gè)注冊(cè)用戶和個(gè)帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發(fā)的一個(gè)互聯(lián)網(wǎng)金融項(xiàng)目終于在今年三月份上線了,這是一個(gè) Node...
摘要:最佳實(shí)踐良好的編碼規(guī)范單元測(cè)試持續(xù)集成文檔,從一開始就形成良好的編碼習(xí)慣。真實(shí)的電商業(yè)務(wù)所有的業(yè)務(wù)需求來自真實(shí)的客戶,并且線上良好運(yùn)營中。 重要通知: Laravel + 小程序的開源電商版本源碼已經(jīng)在 github 上拉,歡迎提交 issue 和 star :) 開源電商 Server 端: Laravel API源碼 開源電商 client 端:小程序源碼 iBrand 簡(jiǎn)介...
摘要:是一套庫,用來渲染地球,區(qū)域地圖,和多種要素,不需要安裝任何插件就能在支持最新標(biāo)準(zhǔn)的瀏覽器上運(yùn)行,支持硬件加速,非常適合動(dòng)態(tài)數(shù)據(jù)在圖層上的展示,是一個(gè)跨平臺(tái),開源,非常有前途的表現(xiàn)層庫。 Cesiumjs 是一套javascript庫,用來渲染3D地球,2D區(qū)域地圖,和多種GIS要素,不需要安裝任何插件就能在支持最新HTML5標(biāo)準(zhǔn)的瀏覽器上運(yùn)行,支持WebGL硬件加速,非常適合動(dòng)態(tài)數(shù)據(jù)...
閱讀 2954·2021-10-28 09:32
閱讀 2990·2021-10-11 10:57
閱讀 3137·2021-10-08 10:05
閱讀 2613·2021-09-28 09:36
閱讀 2226·2019-08-30 15:55
閱讀 2282·2019-08-30 15:44
閱讀 2406·2019-08-30 14:02
閱讀 3087·2019-08-29 17:16