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
相关文章
相关标签/搜索