1. 程式人生 > >docker基礎安裝使用

docker基礎安裝使用

centos7.5

安裝docker依賴
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

新增docker軟體庫
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

檢視現支援的docker版本
yum list docker-ce --showduplicates

預設安裝最新版
yum install docker-ce

用來使用國內映象
阿里雲docker倉庫 https://dev.aliyun.com/search.html

啟動docker服務
systemctl restart docker


docker images #拉取映象
docker search centos #搜尋映象
docker rmi ubuntu #刪除映象

docker run -it ubuntu /bin/bash #建立容器
-i:開啟stdin標準輸入
-t:分配一個偽tty終端

docker start dd003a4033bd #啟動容器
docker run --name daemon_ub -d ubuntu /bin/bash -c "while true; do echo 1; sleep 1; done"#建立守護容器
-d:將容器放入後臺執行
不指定標籤會預設使用latest標籤的映象

docker attach dd003a4033bd #附著到容器
docker ps -a #檢視容器
-n:最後
docker rm --force c851339cbb9 #刪除容器 -f

docker logs daemon_ub -ft #檢視守護式容器日誌
-f:跟蹤
-t:時間戳

docker top 4c #檢視容器內的程序
docker stats 4c 88 #檢視容器統計資訊

docker exec -d daemon_ub touch /ttttttttt #執行後臺任務
docker exec -ti daemon_ub /bin/bash #執行互動命令

docker stop 4c #停止容器
docker inspect 4c94 #檢查容器資訊

docker rm -f `docker ps -a -q` #刪除所有容器

docker tag 80b0 cinder10086/static_web:v1 #更改容器名


什麼是docker映象
docker映象是由檔案系統疊加而成,最底端是一個引導檔案系統,bootfs
docker使用者不會和引導檔案系統有互動,實際上當一個容器啟動後,它會被移動到記憶體中,引導檔案系統會被解除安裝
第二層是rootfs,位於bootfs之上,rootfs可以是多種作業系統,永遠只能是隻讀狀態
docker利用聯合載入(union mount)技術又會在rootfs檔案系統層上載入更多檔案系統

docker將這樣的檔案系統稱為映象,一個映象可以放到另一個映象的頂部,位於下面的映象稱為父映象,可以以此類推,直到映象棧的最底部,最底部的映象為基礎映象,當一個映象啟動容器時,docker會在該映象的最頂層載入一個讀寫檔案系統
當第一次啟動一個容器時,初始的讀寫層是空的。當檔案系統發生變化時,這些變化都會應用到這一層上(寫時複製 copy on write)
每個只讀映象層都是隻讀的,並且以後永遠不會變化。當建立一個新容器時,docker會構建一個映象棧,並在映象棧的最頂端新增一個讀寫層。這個讀寫層加上其下面的映象層以及一些配置資料,就構成了一個容器

/var/lib/docker/

registry
TAG 為了區分同一個倉庫的不同映象docker提供了標籤的功能

docker pull ubuntu:12.04 #拉取映象(冒號後為標籤
docker login #登陸docker hub
docker logout #登出
docker commit b2bc3e74a20e ub/apache #建立定製容器
docker commit -m "new docker" -a "oldwang" b2bc3e74a20e ubuntu/apache2:web
-m:描述資訊
-a:作者資訊

#Dockerfile
mkdir /static_web
vim Dockerfile
#version 0.1 #註釋資訊
FROM ubuntu:14.04 #基礎映象
MAINTAINER james Turnbull "[email protected]" #作者資訊
RUN apt-get update && apt-get install -y nginx
RUN echo "I am in your container" >>/usr/share/nginx/html/index.html
EXPOSE 80


docker build -t="ubuntu/static_web:web" /root/static_web/ #構建映象
-t:指定標籤

docker run -d -p 80 --name static_web ubuntu/static_web:web nginx -g "daemon off"
-d:後臺執行
-p:對映埠(32768-61000)
nginx -g "daemon off;"
docker run -d -p 8080:80 --name web ubuntu/static_web:web nginx -g "daemon off;"
docker run -d -p 192.168.150.12:9999:80 --name web 60389eef7f3c nginx -g "daemon off;"

docker port 5ec59 #檢視對映


docker執行一個靜態網站

mkdir web && cd web
mkdir www && mkdir conf && cd conf
vim nginx.conf
user www-data;
worker_processes 4;
pid /run/nginx.pid;
daemon off;

events { }

http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";

server {
listen 0.0.0.0:80;
server_name _;

root /var/www/html/website;
index index.html index.htm;

access_log /var/log/nginx/default_access.log;
error_log /var/log/nginx/default_error.log;
}

include /etc/nginx/conf.d/*.conf;

cd ..
vim dockerfile
FROM ubuntu:14.04
MAINTAINER james turnbull "[email protected]"
ENV REFRESHED_AT 2014-06-01
RUN apt-get -yqq update && apt-get -yqq install nginx
RUN mkdir -p /var/www/html/website
ADD conf/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

docker build -t static_web:v1 /root/static_web/
docker run -d -p 80:80 --name web -v /root/web/www:/var/www/html/website ub/web:v1 nginx
-v:將宿主機的目錄作為卷,掛載到容器
-v /root/web/www:/var/www/html/website:ro 控制卷的寫狀態

 

docker官方文件 https://docs.docker.com/