# Docker 常用指令 >[name=阿亮][time=Wed, Oct 2, 2024 6:05 PM] ###### tags: `docker`, `dockerfile`, `docker-compose`, `yml` ```gherkin= docker ps -a //docker 列表 docker images //所有建立的映像檔 docker exec -it {docker id} bash //執行進入某一個docker容器裡 docker rm {docker id} //刪除 ps -a 裡的容器id docker rmi {docker id} //刪除 images 裡建立好的映像檔id docker rmi -f {docker id} //強制(force)刪除 images 裡建立好的映像檔id ``` docker id:是建立起容器後的 Hash id (雜湊編碼) 詳細說明:[Docker 初學筆記 - 基本指令操作教學](https://blog.longwin.com.tw/2017/01/docker-learn-initial-command-cheat-sheet-2017/) # Docker compose 指令 ``` docker compose ps -a //查看列表 docker compose exec {容器名稱} bash //進入容器內 docker compose exec {容器名稱} sh //進入容器內 docker compose up {容器名稱} //啟用容器服務,顯示log現況 docker compose logs {容器名稱} //查看容器記錄 ``` --- # Docker使用 :::info docker 要執行前,一定要存在著兩個檔案 * dockerfile (環境建置參考檔) * yml (檔名可自定義) ::: 把這兩個檔案存在某個資料夾當中,開啟 命令提示字元 或是 Git Bash,路徑指到這資料夾後,執行 ```gherkin= docker compose up -d //啟動docker服務並背景執行 docker compose down //關閉docker服務 ``` ## Docker重建容器 ```= docker compose up -d --no-deps --build <service_name> ``` --- ## dockerfile > 將以下的指令,存成 dockerfile 檔名 ```gherkin= FROM php:7.2-apache RUN apt update RUN apt -y upgrade RUN apt install -y apt-utils libldap2-dev curl zip git vim locales gettext make cmake gcc g++ doxygen python RUN docker-php-ext-install pdo pdo_mysql bcmath ldap gettext #setting language RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen RUN echo "zh_TW.UTF-8 UTF-8" >> /etc/locale.gen RUN echo "zh_TW.BIG5" >> /etc/locale.gen RUN echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen RUN locale-gen # install GD RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd #install Imagemagick & PHP Imagick ext RUN apt-get update && apt-get install -y \ libmagickwand-dev --no-install-recommends RUN pecl install imagick && docker-php-ext-enable imagick RUN a2enmod rewrite RUN curl -s https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer #set timezone ENV TZ=Asia/Taipei RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone EXPOSE 80 443 WORKDIR /var/www/html # start Apache2 on image start CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"] ``` --- ## docker-compose.yml > 將以下的描述,存成 docker-compose.yml ```gherkin= version: '3' services: db: image: mysql:8 container_name: mysql8 ports: - 890:3306 environment: - MYSQL_ROOT_PASSWORD=0000 - TZ=Asia/Taipei volumes: - ./mysql:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password dev: build: context: . dockerfile: dockerfile container_name: dev working_dir: /var/www/html volumes: - ./test/:/var/www/html - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini - ./php/opencc.ini:/etc/php/7.2/mods-available/opencc.ini ports: - 801:80 environment: - TZ=Asia/Taipei ``` ## 使用 Dockerfile ``` build: context: . dockerfile: dockerfile ``` 當有許多的套件要安裝或是得到的例子是使用 `Dockerfile` 的方式來做,可以先執行 ``` docker compose build ``` 來確保你的 `Dockerfile` 沒有出錯 若直接使用 ``` docker compose up -d {容器名稱} ``` 是將會建立完畢後,直接執行背景運作,但是出錯的話有問題的話,就必須要 `docker compose down` 也可以先透過 `docker compose logs {容器名稱}` 來查看現在發生的容器錯誤是什麼 ## DB連線問題 ```! Severity: Warning Message: mysqli::real_connect(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution Filename: mysqli/mysqli_driver.php Line Number: 211 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up