Debian10 安装方法一:
安装通过HTTPS添加新存储库所需依赖项:
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
curl命令导入存储库的GPG密钥:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
将稳定的Docker APT存储库添加到系统的软件存储库列表中:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$(lsb_release -cs)将返回Debian发行版的名称,如:buster。
更新apt软件包列表并安装最新版本的Docker CE(Community Edition):
sudo apt update sudo apt install docker-ce
Debian10 安装方法二:
安装添加新存储库所需的依赖项
sudo apt install ca-certificates curl software-properties-common gnupg2
扔源
# deb-src [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian buster stable deb [arch=amd64] http://mirrors.ustc.edu.cn/docker-ce/linux/debian buster stable
使用以下 curl 命令导入存储库的 GPG 密钥:
curl -fsSL http://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
然后apt update在install
apt-get install docker-ce
开启服务
systemctl start docker
官方安装方法一:CentOS
官方安装脚本自动安装
安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
安装方法二:CentOS
下载Docker的依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
设置下载Docker的镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker
yum makacache fast yum -y install docker-ce
CentOS8安装方法:
直接使用rpm包的, 只要两个包
主包: docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
依赖: docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
安装方式yum, 为什么要用yum呢, yum可以解决依赖问题, 安装的时候需要安装noarch先, 因为它会自动搞掂依赖:
yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
再安装:
yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
安装完成后,Docker服务将自动启动。
Docker的启动与停止
systemctl命令是系统服务管理器指令
启动docker:
systemctl start docker
停止docker:
systemctl stop docker
重启docker:
systemctl restart docker
查看docker状态:
systemctl status docker
设置为开机启动:
systemctl enable docker
关闭开机启动:
systemctl disable docker
卸载Docker
yum remove docker-ce rm -rf /var/lib/docker
查看docker概要信息
docker info
查看docker帮助文档
docker --help
查看版本
docker -v
docker [docker cp 源地址 目标地址]
docker cp /root/www.tar 70169ba99631:/www/wwwroot/savh.cn/www.tar
常用命令
搜索镜像:
docker search 镜像名称
注: NAME:仓库名称 DESCRIPTION:镜像描述 STARS:用户评价,反应一个镜像的受欢迎程度 OFFICIAL:是否官方 AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
拉一个镜像:
docker pull centos:7
运行一个新容器并给它起个名字:
docker run -it --name c7 centos:7
启动容器:
docker start c7
停止容器:
docker stop c7
查看镜像:
docker ps
运行镜像:
docker exec -it temp bash
删除容器:
docker rm 容器名称(容器ID)
停用全部运行中的容器
docker stop $(docker ps -q)
删除全部容器:
docker rm $(docker ps -aq)
一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
删除镜像:
docker rmi 镜像ID
删除所有镜像:
docker rmi `docker images -q`
查看最后一次运行的容器:
docker ps –l
查看停止的容器:
docker ps -f status=exited
映射、目录挂载、容器导入/出
docker映射端口和挂载目录
宿主 容器 宿主 容器 宿主 容器 docker run -it -p 8083:8080 -p 3389:3306 -v /mnt/:/mnt update /bin/bash
如:Nginx文件夹映射(命名并映射端口及文件夹):
docker run --name my-nginx -p 80:80 -v /etc/nginx/conf.d:/etc/nginx/conf.d -d nginx
导出容器
新名字 容器名字 docker export -o cheng.tar confident_hopper
导入容器
新名字 docker import cheng.tar cheng
常用命令
--cpu=2 //限制使用2个核心
-m 6G //限制使用6G内存
--cpu-shares=2000 //默认值1024,数字越高优先级越高。
docker run -i -d -p 20:20 -p 21:21 -p 8080:8080 -p 9090:9090 -p 9091:9091 -p 80:80 -p 81:81 -p 3306:3306 -p 443:443 -p 8888:8888 -p 888:888 -m 6G -v /data/:/data/ --cpus=2 --privileged --name baota centos:7 /usr/sbin/init
Nginx反代设置
1. 反代内部容器:
1.1 获取容器网络配置信息:
docker inspect 容器名称
1.2 进入容器,使用vi查看nginx.conf配置文件,一般显示使用的是conf.d目录下面的conf文件进行配置。
1.3 进入conf.d目录下面,编辑default.conf文件。
location / { proxy_pass http://172.17.0.3:80; }
2. 反代外部服务器:
进入Nginx容器,直接进行1.3操作即可。
3. 多域名反代:
3.1 进入Nginx容器:
docker exec -it temp bash
3.2 打开/nginx/conf.d目录,新增一个savh.cn.conf文件:
cd /nginx/conf.d vim savh.cn.conf
3.3 粘贴下文代码到savh.cn.conf文件中:
server { listen 80; server_name savh.cn; # 要解析进来域名 location / { proxy_pass http://172.17.0.10:80; #宿主机ip:容器对外的端口号 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
3.4 保存退出(vim:!wq);
3.5 如果要多域名配置,只需在/nginx/conf.d目录下增加相应的配置文件即可,一般只需修改server_name和proxy_pass;
3.6 重启nginx容器。
4. Nginx反代 (hosts大法)
4.1 修改A主机Nginx配置文件:
server { listen 80; server_name blog.savh.cn; location / { proxy_pass http://blog.savh.cn; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
4.2 修改A主机/etc/hosts文件,增加以下内容
1.2.4.8 blog.savh.cn
4.3 域名指向A主机时,反代会根据hosts文件重定向至1.2.4.8服务器。
镜像问题:
(镜像不能重复, 假如是备份原来的镜像cheng, 那么要导入新的镜像update.tar的时候就需要删除现有的cheng镜像, 不然导入失败, 因为当update.tar导入后会变成cheng名字的镜像, 两者名字不能重复, 如果使用export则无此问题)
导出镜像
docker save -o update.tar cheng
导入镜像
docker load -i update.tar
下面有三点需要注意的
1. docker save保存的是镜像(image),docker export保存的是容器(container)。 2. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像。 3. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
进入容器
容器名 docker exec -it condescending_franklin /bin/bash
环境搭建示例
Nginx
1 查看可用版本
docker search nginx
2 获取nginx镜像
docker pull nginx[:版本]
3 查看本地镜像
docker images
4 运行容器
docker run --name my-nginx -p 81:80 -d nginx
参数说明:
--name my-nginx:容器名称命名为my-nginx -p 81:80:端口进行映射,将本地81端口映射到容器内部的80端口 [左边本地:右边容器] -d nginx:设置容器在后台一直运行
5 安装成功
docker ps
6 测试
浏览器访问:127.0.0.1:81
安装 php
1 查看可用版本
docker search php
2 安装镜像
docker pull php[:版本]
3 查看本地镜像
docker images
4 运行容器
docker run -p 9000:9000 --name my-php -v ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/php-log:/usr/local/var/log -itd php:7.1-fpm
参数说明:
--name my-php:容器名称命名为my-php -p 81:80:端口进行映射,将本地81端口映射到容器内部的80端口 -v ~/nginx/www:/usr/share/nginx/html:挂载,将主机项目中的目录挂载到容器的/usr/share/nginx/html -it:参数交互运行 -d:参数后台运行 ro:只读权限
注意:docker机制,docker容器运行必须有一个前台进程,如果没有前台进程执行,容器认为空闲就会自行退出。
常规后台运行php,一运行会立马退出,所以加入-it参数。
5 安装成功
docker ps
安装 mysql
1 查看可用版本
docker search mysql
2 拉取mysql镜像
docker pull mysql[:版本]
3 查看本地镜像
docker images
4 运行容器
docker run -itd --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
参数说明:
-itd:后台交互运行 --name my-mysql:容器名称命名为 -p 3306:3306:映射容器服务的3306端口到宿主机的3306 -e MYSQL_ROOT_PASSWORD:设置容器内环境变量,root的用户密码为root
5 安装成功
docker ps
6 测试
6.1 进入容器
docker exec -it [容器名称|容器ID] bash
6.2 进入mysql
mysql -h localhost -u root -p
php+mysql部署
1 启动php+mysql容器
docker run --name php-mysql -p 9002:9000 -v ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/php-log:/usr/local/var/log --link my-mysql:mysql -itd php:7.1-fpm
参数说明:
--name php-mysql:容器名称命名为php-mysql -p 9002:9000:端口映射,将本地9002端口映射到容器内部的9000端口 -v :挂载,将主机项目中的目录挂载到容器的/usr/share/nginx/html,将nginx配置文件挂载到/etc/nginx/conf.d,将nginx日志文件挂载到/var/log/nginx --link my-mysql:php:php链接mysql,把my-mysql的网络并入php
2 安装成功
docker ps
nginx+php部署
1 创建核心文件夹方便后续将容器内文件映射到本地,以便查看/修改
mkdir ~/nginx/nginx-conf ~/nginx/nginx-log ~/nginx/php-conf ~/nginx/php-log ~/nginx/www
2 复制php以及nginx的配置和日志文件到本地
2.1 复制php的配置文件
docker cp my-php:/usr/local/etc ~/nginx/php-conf
2.2 复制php的日志
docker cp my-php:/usr/local/var/log ~/nginx/php-log
2.3 复制nginx的配置文件
docker cp my-nginx:/etc/nginx/conf ~/nginx/nginx-conf
2.4 创建nginx的日志文件
touch ~/nginx/nginx-log/error.log ~/nginx/nginx-log/access.log
注意:
复制出来的目录可能多一级,把配置文件全部复制到根目录下
3 重新运行启动nginx容器
docker run --name php-nginx -p 82:80 -d -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/nginx-conf/conf.d:/etc/nginx/conf.d -v ~/nginx/nginx-log:/var/log/nginx --link php-mysql:php -d nginx
参数说明:
--name php-nginx:容器名称命名为php-nginx -p 82:80:端口映射,将本地82端口映射到容器内部的80端口 -v :挂载,将主机项目中的目录挂载到容器的/usr/share/nginx/html,将nginx配置文件挂载到/etc/nginx/conf.d,将nginx日志文件挂载到/var/log/nginx --link my-php:php:nginx链接php,把php-mysql的网络并入nginx
4 安装成功
docker ps
5 测试
127.0.0.1:82
6 修改本地配置文件解析php文件
配置文件中需要将解析php的注解去掉,修改root路径
注意:
核心是php配置文件的fastcgi_pass和fastcgi_param,如果这两个参数错误,会导致php的代码无法解析
制作Dockerfile
1. 从一个正在运行的 Nginx 容器中复制出配置文件:
docker cp some-nginx:/etc/nginx/nginx.conf /some/nginx.conf
2. 也可以通过推荐的Dockerfile方式来生成一个包含自定义配置文件的镜像,如下所示:
FROM daocloud.io/nginx COPY nginx.conf /etc/nginx/nginx.conf
3. 再用下面的命令构建镜像:
docker build -t some-custom-nginx .
4. 最后启动容器:
docker run --name some-nginx -d some-custom-nginx
问题:
在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示:
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vim
这时候需要敲:
apt-get update
安装VIM:
apt-get install vim
更多相关:
2. 常用基本命令;
3. 快速学习Docker;
4. 如何修改容器端口?
5. 容器安装宝塔;
6. 安装Spug;
7. 容器的备份、恢复和迁移;
8. Kangle;
更多:Docker相关文章;
http://www.savh.cn/thread-1370.htm
转载请注明:Savh.Cn 发表