docker经验整理,技术一定要实践,总结,’难者不会,会者不难‘。
话不多说,搞起 :
1,安装及卸载
2,拉取镜像,创建容器
3,容器搭建 centos7 + apache + php7.4
4,服务器使用 nginx 代理到各个容器
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装最新版本的 Docker Engine-Community 和 containerd
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker //开机启动
systemctl start docker //启动
systemctl stop docker //停止
systemctl restart docker //重启
卸载主要使用三个命令
yum list installed | grep docker
yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64
rm -rf /var/lib/docker
我的执行结果 :
docker search centos
//不加tag,会拉取最新 tag:latest
docker pull centos
等价于
docker pull centos:latest
docker rmi centos:latest
如果需要指定版本可以前往 https://hub.docker.com 搜索对应镜像的所有tag,选择下载
比如:搜索 centos 点击想要的镜像来源, 点击Tags,列举出所有的版本,复制下载命令
可能出现问题
a. Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
b. 镜像拉取慢(docker pull)
解决方法
修改镜像源
//1.编辑文件 /etc/docker/daemon.json 有则修改,没有则创建
vi /etc/docker/daemon.json
//2.将以下代码加入到文件中,我使用的是阿里源
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
//3.保存
:wq
//4.重启docker
systemctl restart docker
docker images
docker run -d --name phpdev1 \
-v /mnt/www/test.jocker.com:/var/www/html \
-p 0.0.0.0:90:90/tcp \
--privileged \
centos:7.7.1908 \
/usr/sbin/init
这里的创建命令主要针对 centos ,其他容器会有所调整
docker ps //运行中的容器
docker ps -a //所有容器
docker start 容器id 容器id ... //启动一个或多个已经被停止的容器
docker stop 容器id 容器id ... //停止一个或多个运行中的容器
docker restart 容器id //重启容器
docker rm 容器id //删除已经被停止的容器
centos7 我们已经拉取下来并且创建好容器了,下面就是进入容器,搭建环境
docker exec -it 容器id /bin/bash
docker exec -it 81f3cbd1c65e /bin/bash //我的操作记录
//1. apache
yum -y install httpd //yum安装
vi /etc/httpd/conf/httpd.conf //修改Listen 端口为创建容器时指定的端口90
systemctl enable httpd //开机启动
systemctl start httpd //运行apache
//2. php7.4
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --enable remi-php74
yum -y install php php-cli
yum -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
docker commit 容器id 镜像名称:版本 //通过容器 创造 镜像
docker commit 81f3cbd1c65e basedev:v1 //我的操作
vim /etc/nginx/nginx.conf
//添加新的 server
server {
listen 91;
server_name test1.joker.com;
location / {
proxy_pass http://localhost:91;
}
}
server {
listen 92;
server_name test2.joker.com;
location / {
proxy_pass http://localhost:92;
}
}
本次主要记录总结了下,自己搭建docker环境,遇到的问题,实际业务中的架构会比这更复杂,会有很多变化,负载,K8s等,但是核心基础不会改变。
文章中有些详细的命令,和参数没做讲解,因为都有对应的官方文档,官方文档很重要,一定要仔细阅读。