[success]因为要把自己的网站迁移到docker内,所以就打算做个笔记,把自己的安装教程写一下,以后自己也可以回顾一下,废话不多说,直接开始。[/success]
docker的安装
1.Ubuntu安装
Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,我们可以通过 uname -r 命令查看你当前的内核版本。
我这里是Ubuntu18.04的,内核版本是4.18.0,所以可以安装。
然后我们需要使用脚本来安装docker。
wget -qO- https://get.docker.com/ | sh
接下来就是漫长的等待,安装成功后会有下面的提示:
然后我们启动一下docker的后台服务(这里我是以root用户运行的)
service docker start
然后我们在测试一下docker是否安装好了
docker run hello-world
如果有用的话就会出现下面的画面
当然,因为国内网速的原因,所以我们需要进行镜像加速(这里我们使用网易云的镜像)
我们打开 /etc/docker/daemon.json 这个文件,没有的话就自己新建,然后加入:
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
这样配置好后我们就可以开始尝试下载centos系统镜像了:
我们先下载centos镜像(后面是可以加上版本号的,如果不加好像就是直接下的最新版本)
docker pull centos
然后启动镜像
docker run -d -it -p 80:80 -p 443:443 -p 8888:8888 centos
-p是端口映射,前面的是本机端口,后面的是容器端口。启动后会返回一个字符串,这个是容器存储的路径,我们可以记下它,后面需要用的到。
接下来我们需要进入这个容器的bash界面,我们这里直接输入docker ps就就可以查看当前正在运行的docker镜像了,我们复制一下这个镜像的id,然后输入下面的命令就可以进入容器了(我们这里使用的是命令在退出后容器不会退出,我们也可以使用docker attach来进入,这个退出bash后容器也会停止)
docker exec -it 容器ID bash
然后我们还需要下载宝塔,大家可以查看这篇文章来安转宝塔,下面是centos7的安装命令。
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
这个安装时傻瓜式安装,所以只需要慢慢等就好了,安装成功后会出现下面的界面(这里我是用虚拟机安装的,所以大家就不要尝试去登录了):
docker的其他命令
1.停止容器,我们可以直接输入 docker stop 容器id 来停止当前正在运行的容器
2.退出容器的终端:直接在终端界面输入exit回车就可以退出了
3.如果自己的服务器一不小心重启了,那么容器就会退出,那么我们怎么恢复呢?我们可以输入docker ps -a来查看自己所有的镜像,然后就可以找到我们之前的那个容器了。输入docker restart 容器id 就可以恢复了
当然我们可以设置永久性自启动:
sudo docker update --restart=always 容器id
ps:还有宝塔的一些命令
4.还有如果我们想重新添加新的端口映射该怎么做?
我们需要先停止容器,然后还要停止容器服务systemctl stop docker,
停止后我们需要修改json文件,输入如下命令
vim /var/lib/docker/containers/之前创建容器返回的字符串/hostconfig.json
然后我们修改一下json文件。
这个东西只需要照着添加就可以了。前面是容器的端口,后面是主机的端口。然后我们还要修改另一个json文件config.v2.json,里面也需要我们添加端口。后面在启动一下容器服务和我们的容器就可以了
5.这里我的容器的大小和服务器是一样的,可能有的版本需要扩容,不过这个我也不是很清楚怎么做。
6.我们怎么把我们的容器打包成镜像呢?
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
下面就是把我们的镜像打包为名叫mymysq,v1是标签。
然后我们就可以把容器打包成镜像了,接下来我们可以把我们的容器上传到阿里云的镜像仓库里面,具体操作可以参考这篇文章。不过这个也挺简单的,因为阿里云那边也有详细教程,这里写也没啥意义。
7.容器目录映射 这里可以在运行容器时直接加上-v参数,前面是服务器的后面是容器的比如
docker run -d -it -p 8888:8888 -p 443:443 -p 80:80 -p 527:527 -v /image:/www/wwwroot/img/images imageid
这里就是把服务器耳朵images映射到www/wwwroot/img/images上
8.如何删除容器
使用docker rm 容器id来删除容器
9.如何导出容器
docker export $container_id > 容器快照名.tar就可以到出到当前目录
10.如何导入容器
cat 容器快照名.tar | docker import -centos:v888
这样就可以快速导入为镜像了
11.查看容器已挂载的目录
docker inspect container_name | grep Mounts -A 20
后面就差不多这些了,想到我在补充把。
这里写一下我遇到的坑
1.阿里云用centos安装的镜像,镜像里面的ftp好像用不了(后面我是直接安装的Ubuntu系统)
2.直接在容器里面挂ossfs(就是挂上阿里云oss好像是不可以的),所以我们可以直接在服务器上可以找到我们的容器所在的目录,然后在ossfs上挂上去,这样就可以了。
3.宝塔泛域名解析的问题,注意我们需要修改默认站点,否则就算你加了泛域名也不能访问你的网站。
docker其他命令
[highlight lanaguage="bash"]
#docker删除镜像 docker image rm 镜像名字 #设置某个容器开机自启动 #加上下面这个参数--restart=always docker run -tid --name isaler_v0.0.11 -p 8081:8080 --restart=always -v /alidata/iDocker/run/projectImages/isaler/v0.0.11/log:/usr/local/tomcat/logs isaler_v0.0.11 ##### Flag Description no 不自动重启容器. (默认value) on-failure 容器发生error而退出(容器退出状态不为0)重启容器 unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器 always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器 #### #如果已经启动的项目,则使用update更新: docker update --restart=always isaler_v0.0.11 #复制文件到docker里面(复制主机里面的1.txt到容器里为2.txt) docker cp /root/1.txt 容器id:/root/2.txt#复制容器文件到外面(把容器里面的2.txt复制到1.txt)
docker cp 容器id:/root/2.txt /root/1.txt
[/highlight]