docker命令小結
應用場景
docker使用的時候,有自己一套專業的命令模式,其中有映象,容器,倉庫等等,其中各種命令用法比較容易混淆,這裡粗略的整理一下。
1. 映象:
# docker pull 映象名 (下載映象)
# docker run -t -i 映象名 /bin/bash (利用映象建立一個容器,在其中執行bash)
# docker images (檢視映象,repository:倉庫,TAG:映象標籤,標記同一倉庫的不通映象,ID:映象唯一ID號)
# docker tag 原倉庫名:原版本名TAG ubuntu:latest (為映象新增新的標籤TAG)
# docker inspect 映象名或映象ID (獲取映象的詳細資訊)
# docker search 映象名 (搜尋映象)
# docker rmi 映象名 (刪除映象,如果在映象上層有容器執行,刪除失敗)
# docker rmi -f 映象名 (強制刪除映象)
建立映象有三種方式:
# docker commit -m "add a new file" -a "Docker Newbee" 容器名 新的映象名 (基於已有映象的容器建立)
# cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04 (基於本地模板匯入)
# docker save -o ubuntu_14.04.tar ubuntu:14.04 (存出本地映象到本地檔案ubuntu:14.04)
# docker load --input ubuntu_14.04.tar (載入映象)
# docker push user/test:latest (上傳本地映象到倉庫 docker tag test:latest user/test:latest)
2. 容器:
啟動容器有兩種方式:一種是基於映象新建一個容器並啟動,一種是將終止狀態的容器重新啟動
# docker create -it ubuntu:latest (建立容器,create新建的容器處於禁止狀態,docker start 容器名 來啟動)
# docker run ubuntu /bin/echo `Hello World` (輸出一個‘Hello World’,之後容器自動終止)
# docker run -t -i ubuntu:14.04 /bin/bash (啟動一個bash終端,允許使用者進行互動)
# docker run -d ubuntu /bin/sh (使docker容器在後臺已守護狀態執行)
# docker stop/stop/restart 容器ID
# docker run -idt 映象名 || docker attach 容器名 (當多個視窗attach到同一個容器的時候,所有視窗會同步顯示)
# docker exec -ti 容器ID /bin/bash (進入到剛剛建立的容器中)
# docker rm 容器id或者容器名 (刪除終止狀態的容器 -f強制)
# docker rm `docker ps -a -q` (刪除所有容器的命令)
# docker export 容器id > test_for_run.tar (匯出容器到一個tar檔案)
# cat test_for_run.tar |docker import - test/ubuntu:v1.0 (匯入檔案,成為映象)
注:docker import 和docker load的區別:
使用docker load命令來匯入映象儲存檔案到本地的映象庫;使用docker import命令來匯入一個容器快照到本地映象庫。
3. 倉庫:
集中存放映象的地方,一個容器與之混淆的概念是註冊伺服器,實際上註冊伺服器是存放倉庫的具體伺服器,每個伺服器上可以有多個倉庫,每個倉庫下面有多個映象。
# d1.dockerpoll.com/ubuntu d1.dockerpoll.com是註冊伺服器地址,ubuntu是倉庫名
# docker run -d -p 5000:5000 registry (自動下載並啟動一個registry容器,建立本地的私有倉庫)
# curl 127.0.0.1:5000/v1/search (訪問私有倉庫中所包含的映象)
# docker tag daocloud.io/library/mysql:latest 127.0.0.1:5000/test (修改本地映象的tag)
# docker push 127.0.0.1:5000/test (上傳映象到私有倉庫)
# docker pull 192.168.199.31:5000/test (從私有倉庫上pull到在使用的客戶端)
# tree /opt/data/registry/repositories/ (檢視映象的儲存目錄和檔案 tree /tmp/registry/repositories/ yum -y install tree)
# http://192.168.199.31:5000/v1/search (瀏覽器訪問私有倉庫的映象)
4. 資料管理:
使用者雜使用docker的過程中,需要能檢視容器內應用產生的資料,或者需要把容器內的資料進行備份,甚至多個容器之間進行資料的共享,這就涉及到容器的資料管理操作。管理資料的兩種方式:資料卷,資料卷容器。
1.在容器內建立資料卷,把本地的目錄或檔案掛載到容器內的資料卷中
2.使用資料卷容器在容器和主機、容器和容器之間共享資料,並實現資料的備份和恢復。
5. 資料卷:
# sudo docker run -d -P --name web -v /webapp training/webapp python app.py (使用training/webapp映象建立web容器,並建立一個資料卷掛載到容器的/webapp目錄)
# sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py (掛載主機的/src/webapp目錄到容器的/opt/webapp目錄做為資料卷)
# sudo docekr run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash (從主機掛載單個檔案到容器中做為資料卷)
資料卷容器:(其實就是一個普通的容器,專門提供資料卷供其他容器掛載使用)
# docker run -it -v /dbdata --name dbdata ubuntu (建立一個資料卷容器dbdata,在其中建立一個資料卷掛載到/dbdata)
# docker run -it --volumes-from dbdata --name db1 ubuntu (容器db1和db2都掛載到了同一個資料捲到相同的/databata目錄)
# docker run -it --volumes-from dbdata --name db2 ubuntu
6. 網路基礎配置:
docker提供了對映容器埠到宿主機和容器關聯機制來為容器提供網路服務,使用埠對映機制來將容器內的應用服務提供給外部網路,通過容器互聯讓多個容器之間進行快捷的網路通訊。
容器與外部網路:
# docker run -d -P training/webapp python app.py
容器與容器間:
# docker run -d --name db training/postgres
# docker run -d -P --name web --link db:db training/webapp python app.py
7. 使用dockerfile建立映象
包含四個部分:基礎映象資訊,維護者資訊,映象操作指令和容器啟動時執行指令
FROM MAINTAINER RUN CMD EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ONBUILD
建立映象:
# docker build -t build_repo/first_image /tmp/docker_builder/ (dockerfile所在路徑/tmp/docker_builder,生成的映象標籤為build_repo/first_image)
# docker run -ti -d -v /usr/local/src:/usr/local/src centos /bin/bash
# docker run -d -ti –name tomcat01 docker.io/tomcat
# docker run -ti docker.io/nginx /bin/bash
# docker build -t="xubin/jweb" .
docker build -t xubin/jweb .
1,建立專案:https://github.com/changedi/mydocker
2,編輯 Dockerfile:https://github.com/changedi/mydocker/blob/master/Dockerfile
3,在本地專案中執行 docker build <image_name> .,build一個自定義名字的映象
4,啟動這個映象容器:docker run -d -p 80:80 <image_name>
這樣,這個映象就好了,服務也起來了,後續可以通過docker ps來檢視啟動的映象,通過docker stop來停止容器。
# docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash
# tar -zxf /mnt/software/jdk-7u67-linux-x64.tar.gz -C .
# mv jdk1.7.0_67/ jdk/
# tar -zxf /mnt/software/apache-tomcat-7.0.55.tar.gz -C .
# mv apache-tomcat-7.0.55/ tomcat/
首先,編輯.bashrc檔案
# vi ~/.bashrc
然後,在該檔案末尾新增如下配置:
# export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME
最後,需要使用source命令,讓環境變數生效:
# source ~/.bashrc
編寫執行指令碼
我們需要編寫一個執行指令碼,當啟動容器時,執行該指令碼,啟動 Tomcat,具體過程如下:
首先,建立執行指令碼:
# vi /root/run.sh
然後,編輯指令碼內容如下:
# !/bin/bash source ~/.bashrc sh /opt/tomcat/bin/catalina.sh run
注意:這裡必須先載入環境變數,然後使用 Tomcat 的執行指令碼來啟動 Tomcat 服務。
最後,為執行指令碼新增執行許可權:
# chmod u+x /root/run.sh
退出容器
當以上步驟全部完成後,可使用exit命令,退出容器。
隨後,可使用如下命令檢視正在執行的容器:
# docker ps
使用以下命令,根據某個“容器 ID”來建立一個新的“映象”:
# docker commit 57c312bbaad1 huangyong/javaweb:0.1
# docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh
相關文章
- docker命令總結Docker
- docker命令總結(二)Docker
- docker小結(nginx)DockerNginx
- Docker常用命令小記Docker
- Docker--docker ps 命令與結果解析Docker
- 命令列使用小結命令列
- Docker 常用命令總結Docker
- docker常用命令總結Docker
- Linux基礎命令小結Linux
- LInux 組合命令小結Linux
- Docker 命令Docker
- Docker命令Docker
- Docker_Docker命令2Docker
- Docker run 命令Docker
- docker tag命令Docker
- docker 命令大全Docker
- 常用docker命令Docker
- docker命令大全Docker
- Docker create命令Docker
- docker命令(下)Docker
- shell指令碼基本概念和命令小結指令碼
- Docker(三)Docker常用命令Docker
- Docker 入門系列一:docker 命令Docker
- docker常用命令 命令解釋 docker基礎理解Docker
- docker基本命令Docker
- 常用的docker命令Docker
- Docker常見命令Docker
- docker 命令記錄Docker
- Docker 操作命令大全Docker
- Docker常用的命令Docker
- Docker執行命令Docker
- Docker重要容器命令Docker
- docker 基本命令Docker
- Docker常用操作命令Docker
- docker、docker-compose 常用命令Docker
- Docker入門系列(二)--docker操作命令Docker
- Linux下lz4解壓縮命令小結Linux
- 專案完成小結 - Django-React-Docker-Swag部署配置DjangoReactDocker
- Docker命令-docker exec-在執行的容器中執行命令Docker