docker安装:
官方文档:
https://docs.docker.com/engine/install/ubuntu/
操作步骤:
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
docker --version
显示docker版本信息则安装成功
使用:
显示镜像列表: docker images
构建镜像:docker build -t nginx:self .
删除镜像:docker rmi nginx:self (REPOSITORY:TAG)
运行容器:docker start nginx
停止容器:docker stop nginx
重启容器:docker restart mynginx
删除容器:docker rm nginx
进入容器:docker exec -it mynginx bash
容器详情:docker inspect nginx
查看容器IP:docker exec redis hostname -I
停止所有容器:docker stop $(sudo docker ps -aq)
停止名称以mywork_开头的的容器:sudo docker rm $(sudo docker ps -qa --filter "name=mywork_")
删除容器列表中包含golang的容器:docker rm $(docker ps -a | grep golang | awk '{print $1}')
删除所有容器:docker rm $(sudo docker ps -aq)
Nginx容器:
运行:
docker run -p 80:80 --name mynginx -v /usr/local/workspace/nginx/vhosts:/etc/nginx/conf.d -v /usr/local/workspace/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/workspace/nginx/www:/usr/share/nginx/html -d nginx
容器的nginx.conf配置文件在 容器的/etc/nginx/ 下
PHP-FPM容器:
容器的php.ini配置文件在 容器的/usr/local/etc/php 下
MYSQL容器:
默认配置文件目录在 /etc/mysql/my.cnf,其引用的真实文件路径为/etc/alternatives/my.cnf
Redis容器:
默认容器里没有配置文件,需要用户自己映射,可以在Dockerfile 里先将本地文件copy进去,再进行文件映射,可到达主机和容器配置文件的同步,
数据目录 默认是在/data下
连接redis时如果提示 Connection refused ,请确认redis.conf里的bind项是不是设置了正确的访问范围
所有配置均已经配置好docker-compose文件,链接为 https://github.com/leohe666/docker
下载后直接运行修改.env配置文件里的具体项,然后docker-compose up 后台运行即可安装,如果需要后台运行则运行docker-compose up -d
docker run -p 9000:9000 -d --name myphp-fpm -d php
docker run --name test-php -p 9000:9000 -v /var/www/html/:/wwwroot -d php
docker run --name runoob-php-nginx -p 8083:80 -d \
-v /var/nginx/www:/usr/share/nginx/html:ro \
-v /var/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link myphp-fpm:php \
nginx
sudo docker exec -it ef716181053e /bin/bash
docker run --name php-fpm -v /var/www/html:/usr/share/nginx/html -d php
docker run --name myphp-fpm -v /var/www/html:/usr/share/nginx/html -d php:last
docker run -it --rm php bash
usr/share/nginx/html
docker run -p 3306:3306 --name mysql \
-v /home/docker/mysql/conf:/etc/mysql \
-v /home/docker/mysql/logs:/var/log/mysql \
-v /home/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7 \
--character-set-server=utf8mb4 \
--skip-name-resolve
php-fpm 安装pdo扩展
在 php-fpm 容器里面的 /usr/local/bin 执行
````
docker-php-ext-install pdo pdo_mysql
````
固定ip:
docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash
--ip 172.18.0.2
固定DNS:
--dns=114.114.114.114
--net 固定网络使用 mynetwork, 多个使用相同net的窗口可以相互通讯(可以使用 docker network create -d bridget mynetwork 创建网络后使用,需要建立新的网络才可以,自带的bridge无法ping通)
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。
docker run -it --rm mynginx cat etc/resolv.conf
docker-compose 安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
如果要用代理:
sudo curl -x http://192.168.0.101:10809 -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
出现版本号则安装正常
docker run -p 6699:6379 --name myredis -v /home/docker/redis/redis.conf/redis.conf:/etc/redis/redis.conf -v /home/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/5.2.2.tar.gz
tar xfz /tmp/redis.tar.gz
rm -r /tmp/redis.tar.gz
mkdir -p /usr/src/php/ext
mv phpredis-5.2.2 /usr/src/php/ext/redis
cd /usr/local/bin
docker-php-ext-install redis
PHP gd库的freetype安装
进入容器后无法使用telnet ipconfig待工作可以用以下命令进行安装:
apt-get install net-tools
apt-get install iputils-ping
apt-get install telnet
chmod 666 /var/run/docker.sock