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