Docker經常使用命令


  • 查看docker版本信息
    docker versionjava

  • 查看當前的鏡像列表
    docker imagesmysql

  • 查看當前運行的容器
    docker ps
    docker ps -alinux

  • 啓動docker 容器
    docker run -t -i ubuntu:14.04 /bin/bash
    docker run -idt ubuntu:14.04 (後臺啓動)nginx

  • 加入到後臺開啓頁面
    docker attach containerIDweb

  • 將文件複製到docker中去
    docker cp 文件路徑 containerID:目標文件路徑
    docker cp containerID:文件路徑 目標文件路徑spring

  • 提交生成好的docker爲新的鏡像
    docker commit -m 「Added json gem」 -a 「Docker Newbee」 0b2616b0e5a8 ouruser/sinatra:v2 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1csql

  • 刪除容器docker

  1. 刪除單個容器
    docker rm container_name
  2. 刪除全部未運行的容器
    docker rm $(docker ps -a -q)
  • 刪除鏡像
    docker rmi ubuntu:v1shell

  • 修改鏡像標籤名
    docker tag old-image[:old-tag] new-image[:new-tag]json

  • 退出docker
    exit

  • 退出後再進入

  1. 先查到已經退出的容器
    docker ps -a
  2. 找到要啓動的容器名稱,後經過start啓動
    docker start goofy_almeida(容器名稱或容器id)
  3. 再經過attach進入到命令行
    docker attach goofy_almeida(容器名稱或容器id)
    或使用exec方式進入命令行,這種方式 在內部使用exit的時候,會繼續在後臺運行 docker exec -it [CONTAINER_NAME or CONTAINER_ID] /bin/bash
  • 啓動spring boot web應用(須要先安裝好jdk環境)
    java -jar sboot.jar
    啓動後理論上就能夠訪問了,可是因爲外部端口不能直接訪問,因此須要宿主機將外部端口與docker綁定後才能訪問
  1. 提交準備好的環境
    docker commit 57c312bbaad1 fanhq/javaweb:0.1
  2. 經過綁定端口的方式啓動doker
    docker run -t -i -p 58080:8080 –name springboot(自定義別名) fanhq/javaweb:0.1 /bin/bash
  3. 進入doker後啓動項目
    java -jar sboot.jar
  4. 訪問"http://192.168.65.132:58080/"(ip爲虛擬機的Ip)
  • 在docker中部署環境,以springboot的應用爲例
  1. 首先要安裝vi指令或vim指令用於編輯環境變量文件,也能夠不用安裝,可將docker容器中的文件複製到宿主機上修改
    vi指令安裝
    apt-get install vi
    apt-get update
  2. 安裝jdk 官網下載linux-x64.tar的jdk包
    放到虛擬機共享目錄中
    複製到doker容器虛擬文件目錄中去
    docker cp linux-x64.tar containerID:/opt/linux-x64.tar
    解壓tar包
    tar -xvf linux-x64.tar
    將包從新命名爲jdk
    mv linux-x64 jdk
    設置環境變量
    vi ~/.bashrc(~表示root目錄下的文件,可用命令驗證目錄文件)
    在文件末尾添加
    export JAVA_HOME=/opt/jdk
    export PATH=PATH:JAVA_HOME/bin
    執行source命令讓source命令生效
    source ~/.bashrc
    測試jdk版本
    java -version
  3. 準備springboot 包
    寫一個簡單的springboot項目並打包爲胖jar
  4. 將文件複製到doker中去
  5. 運行jar包
    java -jar sboot.jar
    運行不報錯準備工做基本已完成,而後將容器從新打包爲鏡像
  6. 容器提交爲鏡像
    docker commit 57c312bbaad1 fanhq/javaweb:0.1
  7. 綁定端口運行容器
    第5步啓動的項目外部沒法訪問到,由於端口未開放,因此須要開放端口綁定運行一個容器
    docker run -t -i -p 58080:8080 fanhq/javaweb:0.1 /bin/bash
    docker run -d -p 58080:8080 fanhq/javaweb:0.1 /bin/bash
  8. 進入容器後從新運行第5步的啓動項目,而後經過外部端口訪問 http://192.168.65.132:58080/
    至此,一個手動版的doker部署就搞定了,下一步是自動化發佈啓動doker。
  • Dockerfile 示例
# 指定基礎鏡像
FROM sameersbn/ubuntu:14.04.20161014
 # 維護者信息
MAINTAINER sameer@damagehead.com
 # 設置環境
ENV RTMP_VERSION=1.1.10 \
NPS_VERSION=1.11.33.4 \
LIBAV_VERSION=11.8 \
NGINX_VERSION=1.10.1 \
NGINX_USER=www-data \
NGINX_SITECONF_DIR=/etc/nginx/sites-enabled \
NGINX_LOG_DIR=/var/log/nginx \
NGINX_TEMP_DIR=/var/lib/nginx \
NGINX_SETUP_DIR=/var/cache/nginx
 # 設置構建時變量,鏡像創建完成後就失效
ARG BUILD_LIBAV=false
ARG WITH_DEBUG=false
ARG WITH_PAGESPEED=true
ARG WITH_RTMP=true
 # 複製本地文件到容器目錄中
COPY setup/ ${NGINX_SETUP_DIR}/
RUN bash ${NGINX_SETUP_DIR}/install.sh
 # 複製本地配置文件到容器目錄中
COPY nginx.conf /etc/nginx/nginx.conf
COPY entrypoint.sh /sbin/entrypoint.sh
 # 運行指令
RUN chmod 755 /sbin/entrypoint.sh
 # 容許指定的端口
EXPOSE 80/tcp 443/tcp 1935/tcp
 # 指定網站目錄掛載點
VOLUME ["${NGINX_SITECONF_DIR}"]

ENTRYPOINT ["/sbin/entrypoint.sh"]
CMD ["/usr/sbin/nginx"]
複製代碼
  • Docker Compose
    • 示例
    version: '2'
    services:
            db:
                    image: mysql:5.7
                    volumes: 
                            - "./.data/db:/var/lib/mysql"
                    restart: always
                    environment:
                            MYSQL_ROOT_PASSWORD: wordpress
                            MYSQL_DATABASE: wordpress
                            MYSQL_USER: wordpress
                            MYSQL_PASSWORD: wordpress
    
            wordpress:
                    depends_on: 
                            - db
                    image: wordpress:latest
                    links:
                            - db
                    ports:
                            - "80:80"
                    restart: always
                    environment:
                            WORDPRESS_DB_HOST: db:3306
                            WORDPRESS_DB_PASSWORD: wordpress
    複製代碼
    • 命令
    #查看幫助
    docker-compose -h
     # -f 指定使用的 Compose 模板文件,默認爲 docker-compose.yml,能夠屢次指定。
    docker-compose -f docker-compose.yml up -d 
     #啓動全部容器,-d 將會在後臺啓動並運行全部的容器
    #默認解析當前目錄的docker-compose.yml文件
    docker-compose up -d
     #停用移除全部容器以及網絡相關
    docker-compose down
     #查看服務容器的輸出
    docker-compose logs
     #列出項目中目前的全部容器
    docker-compose ps
     #構建(從新構建)項目中的服務容器。服務容器一旦構建後,將會帶上一個標記名,例如對於 web 項目中的一個 db 容器,多是 web_db。能夠隨時在項目目錄下運行 docker-compose build 來從新構建服務
    docker-compose build
     #拉取服務依賴的鏡像
    docker-compose pull
     #重啓項目中的服務
    docker-compose restart
     #刪除全部(中止狀態的)服務容器。推薦先執行 docker-compose stop 命令來中止容器。
    docker-compose rm 
     #在指定服務上執行一個命令。
    docker-compose run ubuntu ping docker.com
     #設置指定服務運行的容器個數。經過 service=num 的參數來設置數量
    docker-compose scale web=3 db=2
     #啓動已經存在的服務容器。
    docker-compose start
     #中止已經處於運行狀態的容器,但不刪除它。經過 docker-compose start 能夠再次啓動這些容器。
    docker-compose stop
    
    
    複製代碼
相關文章
相關標籤/搜索