docker常見操做

Docker須要一個64位系統的紅帽系統,內核的版本必須大於3.10,http://my.oschina.net/u/232595/blog/632278,建議安裝centos7php

參考資料:https://www.gitbook.com/book/yeasy/docker_practicehtml

安裝dockernode

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce

刪除dockermysql

yum remove docker*

啓動dockerlinux

sudo systemctl start docker

pull容器鏡像nginx

阿里雲鏡像https://dev.aliyun.com/search.htmlgit

docker pull registry.cn-hangzhou.aliyuncs.com/1hpc/centos

查看鏡像github

docker images

刪除鏡像redis

docker rmi 鏡像id

給鏡像打tagsql

docker tag 鏡像id 鏡像名:tag名

啓動容器

docker run 鏡像名

啓動結束的容器

docker start 容器名稱

啓動交互式容器(能夠輸入命令行)

docker run -t -i 鏡像名稱 /bin/bash

啓動交互式容器(能夠輸入命令行,同時能夠隱射端口)

docker run -t -i -v /localpath:/app -p ip:port1:port2 鏡像名稱 /bin/bash
localpath爲本地地址
app爲docker內地址
ip爲訪問ip
port1爲訪問端口
port2爲容器內應用端口號
例如容器內啓動mysql 3306端口
實體機訪問地址爲127.0.0.1 3307端口
docker run -t -i -p 127.0.0.1:3307:3306 鏡像名稱 /bin/bash


啓動mysql端口13306,其中innodb_use_native_aio用於處理「./ib_logfile101: 'aio write' returned OS error 122」這個問題
docker run -v /sharedata/mysql/test/data:/var/lib/mysql -v /sharedata/mysql/test/logs:/logs -e MYSQL_ROOT_PASSWORD=12345678a -p 13306:3306 --name mysql_test -d mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --innodb_use_native_aio=0
啓動redis
docker run -v /sharedata/redis:/data -p 16379:6379 --name redis-test -d redis redis-server --appendonly yes
啓動nginx-php-fpm
docker run -v /sharedata/www:/var/www/html -p 32770:80 --name www -d richarvey/nginx-php-fpm
docker exec -it 容器名稱 /bin/bash
安裝redis擴展
pecl install redis
cd /tmp/pear/download/
tar -xf redis-5.0.2.tgz
docker-php-ext-configure /tmp/pear/download/redis-5.0.2 --enable-redis
docker-php-ext-install /tmp/pear/download/redis-5.0.2
docker-php-ext-enable redis
安裝yaf擴展
pecl install yaf
cd /tmp/pear/download/
tar -xf yaf-3.0.8.tgz
docker-php-ext-configure /tmp/pear/download/yaf-3.0.8 --enable-yaf
docker-php-ext-install /tmp/pear/download/yaf-3.0.8
docker-php-ext-enable yaf
安裝yaconf擴展
pecl install yaconf
cd /tmp/pear/download
tar -xf yaconf-1.0.7.tgz
docker-php-ext-configure /tmp/pear/download/yaconf-1.0.7 --enable-yaconf
docker-php-ext-install /tmp/pear/download/yaconf-1.0.7
docker-php-ext-enable yaconf
安裝swoole擴展
pecl install swoole
cd /tmp/pear/download
tar -xf swoole-4.4.7.tgz
docker-php-ext-configure /tmp/pear/download/swoole-4.4.7 -enable-swoole
docker-php-ext-install /tmp/pear/download/swoole-4.4.7
docker-php-ext-enable swoole
重啓phpfpm
supervisorctl restart php-fpm
啓動node(參考文件https://www.imooc.com/article/19840)
docker run -itd --name translate_node -v /sharedata/node/translate:/usr/src/translsate -p 81:81 node:latest

注意以上sharedata是vbox的共享文件夾

關閉容器

docker stop 容器名稱

刪除容器

docker rm 容器名稱

查看全部容器

docker container ls -a

查看運行的容器

docker ps -a

查看容器ip 

docker inspect 容器名

查看容器端口隱射

docker port 容器名

進入容器

docker exec -it 容器id /bin/bash
docker exec -u root -it 容器id /bin/bash

移除全部未使用的 volume:

docker volume prune

更改docker鏡像默認存儲路徑

默認狀況下,docker鏡像的默認存儲路徑是/var/lib/docker,這至關於直接掛載系統目錄下,而通常在搭系統時,這個區都不會太大,因此若是長期使用docker開發應用,就須要把默認的路徑更改到/home路徑下(這個區通常會分得比較多)

  命令行:

  vi /usr/lib/systemd/system/docker.service

  在文本內容ExecStart=/usr/bin/dockerd 後面添加以下內容:

  --graph  <your path>使得變成:

  ExecStart=/usr/bin/dockerd \

                        --graph  <your path>

  而後從新加載配置文件

  systemctl daemon-reload

  最後重啓便可

  systemctl restart docker

FAQ:

1unable to find user root no matching entries in passwd file

https://stackoverflow.com/questions/41636759/unable-to-find-user-root-no-matching-entries-in-passwd-file

2安裝php擴展:https://my.oschina.net/antsky/blog/1591418

3運行中的docker配置端口映射(添加/刪除)

  • 添加端口映射

    a, 獲取容器ip  
        docker inspect $container_name | grep IPAddress
    b. 添加轉發規則  
        iptables -t nat -A DOCKER -p tcp --dport $host_port -j DNAT --to-destination $docker_ip:$docker_port
  • 刪除端口映射規則

    a. 獲取規則編號  
        iptables -t nat -nL --line-number
    b. 根據編號刪除規則  
        iptables -t nat -D DOCKER $num

4Docker在windows下沒法開啓僞終端解決方法the input device is not a TTY.  If you are using mintty, try prefixing the command with 'winpty'

解決辦法:docker-machine ssh default 

5npm ERR! rofs EROFS: read-only file system, symlink 

解決辦法:

VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1


Or on Windows

VBoxManage.exe setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1

Note: On Windows, always restart the Virtual Machine AND VirtualBox GUI.

 

安裝bc-math

docker-php-ext-install bcmath

 

http://www.javashuo.com/article/p-ambmshrj-c.html

 

安裝docker-composer

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
相關文章
相關標籤/搜索