目錄php
查詢信息,包括運行狀況、存貯位置、配置參數、網絡設置等。mysql
docker inspect -f {{.State.Status}} 【容器】
docker inspect -f {{.NetworkSettings.IPAddress}} 【容器】
docker logs 【容器】nginx
-f 實時打印最新的日誌git
如CPU使用率、內存、網絡、磁盤開銷github
原生方式登入docker execredis
docker exec + 容器名 +容器內執行的命令
好比查詢容器php的全部進程:sql
docker exec php7-dev ps -ef
容器內連續執行多條命令,能夠加上 「-it」參數,至關於以root身份登入容器內,可連續執行命令,執行exit退出。docker
docker exec -it php7-dev /bin/bash
多個容器有數據交互,依賴,啓動方式就必須有前後,如:shell
# db容器優先於WordPress啓動 docker start db docker start WordPress
容器編排工具,容許用戶在一個模版(YAML格式)中定義一組相關聯的應用容器,這組容器會根據配置模版中的「--link」等參數,對啓動的優先級自動排序,簡單執行一條「docker-composer up」,就能夠把同一服務中的多個容器依次建立和啓動。數組
安裝方式,參考官方
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose #查看compose版本 docker-compose --version #docker-compose version 1.23.1, build b02f1306
例如啓動wordpress項目,建立wordpress文件夾,文件夾內建立docker-composer.yml文件,內容:
wordpress: image: wordpress links: - db:mysql ports: - 8080:80 db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example
選項 links、ports、environment、volumes分別對應 docker run中的"--links"(容器互聯)、"-p"(端口映射)、「-e」(環境變量設置)、「-v」(映射目錄)。
restart: always 一直在線
docker-compose up 建立和啓用服務 加-d後臺運行
docker-compose start 啓動
docker-compose stop 中止
docker-compose ps 查看運行狀況
environment: RACK_ENV: development SESSION_SECRET: environments: - RACK_ENV=development - SESSION_SECRET
env_file: - .env RACK_ENV: development
net: "bridge" net: "none" net: "container:[name or id]" net: "host"
dns: 8.8.8.8 dns: - 8.8.8.8 - 9.9.9.9
能夠看出docker-compose落地到具體的項目中,當具體的項目須要依賴的環境發生變化或者部署生產,能夠在這些項目根目錄中創建docker-compose.yml,解決如何管理的問題
問題:docker-compose建立容器會發現容器name和定義不一致,可是用docker-compose能夠管理,沒太明白爲啥?
build 構建或重建服務 help 命令幫助 kill 殺掉容器 logs 顯示容器的輸出內容 port 打印綁定的開放端口 ps 顯示容器 pull 拉取服務鏡像 restart 重啓服務 rm 刪除中止的容器 run 運行一個一次性命令 scale 設置服務的容器數目 start 開啓服務 stop 中止服務 up 建立並啓動容器
如重啓nginx
docker-compose restart nginx
FROM image #表明新的鏡像是從image這個基礎鏡像來的 MAINTAINER:指定該鏡像建立者 ENV:指定環境變量 COPY:將編譯機本地文件拷貝到鏡像文件系統中 EXPOSE:指定監聽的端口 ENTERPOINT:欲執行命令,使用該鏡像建立容器,容器啓動時執行,如 ENTRYPOINT ["php", "/var/www/code/easyswoole", "start"] RUN:執行shell命令
easyswoole dockerfile
FROM php:7.1 # Version ENV PHPREDIS_VERSION 4.0.1 ENV SWOOLE_VERSION 4.3.0 ENV EASYSWOOLE_VERSION 3.x-dev # Timezone RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' > /etc/timezone # Libs RUN apt-get update \ && apt-get install -y \ curl \ wget \ git \ zip \ libz-dev \ libssl-dev \ libnghttp2-dev \ libpcre3-dev \ && apt-get clean \ && apt-get autoremove # Composer RUN curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer \ && composer self-update --clean-backups # PDO extension RUN docker-php-ext-install pdo_mysql # Bcmath extension RUN docker-php-ext-install bcmath # Redis extension RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz \ && pecl install /tmp/redis.tar.tgz \ && rm -rf /tmp/redis.tar.tgz \ && docker-php-ext-enable redis # Swoole extension RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz \ && mkdir -p swoole \ && tar -xf swoole.tar.gz -C swoole --strip-components=1 \ && rm swoole.tar.gz \ && ( \ cd swoole \ && phpize \ && ./configure --enable-async-redis --enable-mysqlnd --enable-openssl --enable-http2 \ && make -j$(nproc) \ && make install \ ) \ && rm -r swoole \ && docker-php-ext-enable swoole WORKDIR /var/www/code # Install easyswoole RUN cd /var/www/code \ && composer require easyswoole/easyswoole=${EASYSWOOLE_VERSION} \ && php vendor/bin/easyswoole install EXPOSE 9501 ENTRYPOINT ["php", "/var/www/code/easyswoole", "start"]
構建image,切換到Dockerfile同級目錄:
docker buil -t easyswoole:1.0
有了Dockerfile文件,維護就很簡單了,只需修改文件內容,從新構建便可,-t還能夠指定版本標籤。
docker Hub存放發佈鏡像的倉庫,用戶能夠在https://hub.docker.com/中註冊帳號,既可發佈鏡像。
//登陸docker Hub docker login Username: sun Password: 123456 Email:sun@sun.com //上傳鏡像 docker push easyswoole:1.0
此外可能因爲網絡問題、安全問題,還可使用私有倉庫,具體執行命令本文不在細究。
注意 docker compose能夠判斷容器間的依賴並生成正確的啓動順序,但僅僅是啓動順序,每一個容器的啓動時間不太一致,若是有依賴可能會不能正常交互致使啓動失敗。