---------------------------- docker基本命令---------------------------node
一、查看幫助python
docker --help // 查看命令 docker command --help // 查看命令的選項 docker help command // 查看命令的選項
二、鏡像管理linux
2.一、搜索鏡像nginx
[root@localhost ~]# docker search python | less // 搜索鏡像
2.二、查看鏡像c++
docker images --help options: -a, --all // 顯示全部鏡像 -f, --filter=[] // 過濾顯示 --no-trunc // 不截斷輸出(顯示完整ID) -q, --quiet // 只顯示鏡像ID 例: [root@localhost ~]# docker images // 查看鏡像 [root@localhost ~]# docker images | head // 默認查看前十個 [root@localhost ~]# docker images -f "dangling=true" // 顯示沒用 tag標籤的鏡像
2.三、拉取鏡像docker
[root@localhost ~]# docker pull python // 拉取鏡像,默認從 docker hub拉取 [root@localhost ~]# docker pull python:2.7 // 拉取鏡像python,標記 爲2.7的 docker pull <path_to_registry>/<image_or_repository>
2.四、刪除鏡像json
docker rmi --help options: -f, --force // 強制刪除 --no-prune [root@localhost ~]# docker rmi centos // 刪除鏡像
2.五、保存鏡像ubuntu
[root@localhost ~]# docker save -o nginx.tar jack/my-nginx:v8
2.六、載入保存的鏡像vim
[root@localhost ~]# docker load -i nginx.tar
2.七、給鏡像設置標籤centos
語法: docker tag IMAGE [REGISTRYHOST/][USERNAME/]NAME[:TAG] [root@localhost ~]# docker tag shrikrishna/code.it:v1 shrikrishna/code.it:latest
2.七、上傳鏡像
語法: docker push NAME[:TAG]
2.8 構建鏡像
Docker build [OPTIONS] PATH | URL | - // 構建鏡像 OPTIONS: -t, --tag="" // 鏡像標籤 -q, --quiet // 不輸出信息,默認輸出 --rm=true --force-rm --no-cache // 構建時不使用緩存
三、容器操做
3.一、 運行容器
docker run --help 語法: docker run [options] IMAGE [command] [args] options: -a, --attach list // -d, --detach // 運行在後臺,並打印容器ID -i, --interactive // 打開命令交互 -t, --tty // 分配一個僞終端 -p, --publish list // 爲容器映射端口 -p ip:hostPort:containerPort -p ip::containerPort -p hostPort:containerPort -p hostPort:containerPort -P, --publish-all // 使用主機的隨機端口映射容器的全部端口 --rm // 當容器退出時,自動刪除 --privileged // 爲該容器添加特權 -v, --volume list // 爲容器綁定一個卷(其實就是主機和容器間文件夾之間的映射) -v <container mount path> // 自動分配目錄掛載 -v <host path>/<container mount path> // 指定本機目錄和容器目錄 -v <host path>/<container mount path>:<read write mode> // 手工指定本地目錄和容器目錄, ro是可選,只讀 --volumes-from=[] // 從另外一個容器映射卷,啓動不啓動均可以映射 -w, --workdir="" //爲容器內指定一個工做目錄 --name="" // 爲容器指定一個名字 -h, --hostname="" // 爲容器指定一個主機 -u, --user="" // 爲容器指定一個用戶名或UID -e, --env=[] // 爲容器設置一個環境變量 --env-file=[] // 從一個文件中讀取環境變量 --dns=[] // 自定 DNS --dns-search=[] // 自定 域名 --link=[] // 添加一個連接到另一個容器 -c, --cpu-shares=0 // 爲容器指定哪一個cpu核心 --cpuset="" // 容許哪些cpu執行 -m, --memory="" // 限制容器使用多少內存(<number><b|k|m|g>) --restart="" // 當容器崩潰時,重啓的策略 no // 不重啓,默認值 on-failure // 嘗試重啓次數 always // 一直嘗試重啓 --cap-add="" // 爲容器添加功能 --cap-drop="" // 爲容器去掉某些功能 --device="" // 爲容器掛載額外的設備
例: [root@localhost ~]# docker run -dt ubuntu ps // 後臺運行一個ubuntu鏡像並顯示容器ID [root@localhost ~]# docker run -p 0.0.0.0:8000:8000 -it --rm –-name OD-pythonserver-2 \ python:2.7 python -m SimpleHTTPServer 8000; [root@localhost ~]# docker run -v $(pwd):$(pwd) -p 0.0.0.0:8000:8000 -it --rm --name OD-pythonserver-3 python:2.7 python -m SimpleHTTPServer 8000; // pwd表明當前目錄 [root@localhost ~]# docker run -it --name volume-test1 -h nginx -v /data centos // 掛載目錄 [root@localhost ~]# docker run -it --name volume-test4 --volumes-from volume-test1 centos // 掛載其它容器的卷 [root@localhost ~]# docker run -v /:/data:ro ubuntu ls /data // 掛載容器的根目錄到主機的/data目錄,ro表明只讀,rw表明讀寫 [root@localhost ~]# docker run --device=/dev/video0:/dev/video0 // 掛載主機設備到容器 [root@localhost ~]# docker run --restart=always code.it // 容器崩潰一直重啓 [root@localhost ~]# docker run --restart=on-failure:5 code.it
3.二、進入容器
(1)docker attach --help
語法:docker attach [OPTIONS] CONTAINER 例: [root@localhost ~]# docker run -dit --name OD-name-example ubuntu /bin/bash 537264bba8298e0ba60f7f12dd078c5f9380ae2efcc66c426c65db62e221b341 [root@localhost ~]# docker attach OD-name-example root@537264bba829:/# [root@localhost ~]# docker run -dit --name OD-nodejs google/nodejs node // 啓動一個nodejs環境 [root@localhost ~]# docker attach OD-nodejs
(2)nsenter // 進入容器的方法2
[root@localhost ~]# yum -y install util-linux [root@localhost ~]# docker inspect --format "{{.State.Pid}}" mynginx // 獲取一個容器的pid [root@localhost ~]# nsenter --target 3106 --mount --uts --ipc --net --pid // 經過 pid進入一個容器
(3)快速進入容器腳本
#!/bin/bash CNAME=$1 CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME) nsenter --target "$CPID" --mount --uts --ipc --net --pid
3.三、查看容器
(1)docker ps --help
語法:docker ps [OPTIONS] OPTIONS: -a, --all // 顯示全部容器 -l, --latest // 顯示最後一個容器 -q, --quiet // 只顯示容器 ID -s, --size // 顯示容器的大小 -n="" // 顯示最後的 n個容器 --before="" // 顯示指定的容器ID或名字前的容器 --after="" // 顯示指定的容器ID或名字後的容器
例: [root@localhost ~]# docker ps -a // 查看docker全部運行的容器 [root@localhost ~]# docker ps -l // 查看最後運行的一個容器 [root@localhost ~]# docker info // 查看整個容器的信息
(2)docker logs --help // 查看容器日誌
[root@localhost ~]# docker logs OD-pythonserver-4
(3)docker inspect --help // 查看容器的詳細信息
例: [root@localhost ~]# docker inspect volume-test1 // 以json的方式查看容器或者鏡像詳細信息 [root@localhost ~]# docker inspect -f '{{.NetworkSettings.IPAddress}}' volume-test1 // 查看具體的某個值,能夠根據的層級目錄來查看,中間用 . 隔開
(4)docker top --help // 查看容器的使用率,相似主機的top命令
例: [root@localhost ~]# docker top OD-ghost-1
3.四、另存容器
docker export --help 例: [root@localhost ~]# docker export 21a22d5cdd68 > nginx_latest.tar // 保存當前的容器
3.五、導入容器
例: [root@localhost ~]# docker import http://example.com/test.tar.gz [root@localhost ~]# cat sample.tgz | docker import – testimage:imported
3.六、容器的其它方法
docker start [-i] [-a] <container(s)> // 啓動一個已經存在的容器 docker stop CONTAINER ID // 中止一個容器 docker restart CONTAINER ID // 重啓容器 docker pause c439077aa80a // 暫停容器 docker unpause c439077aa80a // 取消暫停 docker rm CONTAINER ID // 刪除一個容器 docker kill OD-ghost-1 // 殺掉一個容器 docker cp --help // 從容器裏面拷貝文件到本機 docker port --help // 查看容器裏面指定端口對應的主機端口 docker login --help // 登錄docker資源服務器,默認是 https://index.docker.io/v1 docker history shykes/nodejs // 顯示鏡像的歷史記錄 docker events --help // 顯示鏡像的全部事件 # docker events // 打開事件監控,不要關閉該頁面,另外打開一個頁面運行如下命令 # docker start code.it # docker stop code.it // 會在事件監控頁面看到事件 # docker diff d5ad60f174d3 // 顯示容器發生的變化,C 表示更改,A表示添加,D表示刪除 例: [root@localhost ~]# docker run -dit --name OD-stop-example ubuntu /bin/bash [root@localhost ~]# docker ps [root@localhost ~]# docker stop OD-stop-example [root@localhost ~]# docker ps [root@localhost ~]# docker run -dit --name OD-restart-example ubuntu /bin/bash [root@localhost ~]# sleep 15s [root@localhost ~]# docker ps [root@localhost ~]# docker restart OD-restart-example [root@localhost ~]# docker ps [root@localhost ~]# dockerDocker rm OD-restart-example [root@localhost ~]# docker rm $(docker ps -a -q) // 刪除全部中止的容器 [root@localhost ~]# docker run -it –name OD-cp-bell ubuntu /bin/bash [root@localhost ~]# touch $(echo -e '\007') [root@localhost ~]# docker cp OD-cp-bell:/$(echo -e '\007') $(pwd) 注:docker cp命令,路徑不能使用短標籤,例如 . , * 等等 [root@localhost ~]# docker port OD-ghost 2368 // 查看容器 2368對應的主機端口
----------------------------------docker 鏡像建立--------------------------------------------------------
一、docker commit --help // 提交更改
語法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS: -p, --pause // 在提交時暫停容器 -m, --message="" // 描述信息 -a, --author="" // 顯示做者詳細信息 例: [root@localhost ~]# docker commit -m "Code.it – A browser based text editor and interpreter" -a "Shrikrishna Holla <s**a@gmail.com>" code.it shrikrishna/code.it:v1
二、手工構建鏡像
# docker run --name nginx-man -it centos // 建立一個容器並進入 # 安裝軟件(注意,服務不能以守護模式運行,即:daemon off;) # cat /usr/local/sbin/nginx.sh #!/bin/bash /usr/local/nginx/sbin/nginx # docker commit -m "v2" 401784ba31bf jack/my-nginx:v2 //提交 # docker run -d -p 99:80 jack/my-nginx:v2 /usr/local/sbin/nginx.sh // 啓動鏡像並啓動nginx
三、經過指定文件構建鏡像
# docker pull centos # mkdir /usr/local/src/docker-file/nginx -pv # cd /usr/local/src/docker-file/nginx # vim Dockerfile # This is My first Dockerfile # Version 1.0 # Author: jack.zang # Base images FROM centos # MAINTAINER MAINTAINER jack.zang # 添加本地文件進docker容器 ADD pcre-8.37.tar.gz /usr/local/src ADD nginx-1.9.3.tar.gz /usr/local/src # RUN RUN yum install -y wget gcc gcc-c++ make openssl-devel RUN useradd -s /sbin/nologin -M www # 更改當前目錄,在Dockfile裏面不能夠用 cd命令 WORKDIR /usr/local/src/nginx-1.9.3 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre-8.37 && make && make install # 修改nginx配置,以非daemon方式啓動 RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf # 設置環境 ENV PATH /usr/local/nginx/sbin:$PATH # 開放 80端口 EXPOSE 80 CMD["nginx"] # docker build -t nginx-file:v1 /usr/local/src/docker-file/nginx // 經過文件構建
# docker images # docker run -d -p 8080:80 nginx-file:v1