docker学习笔记


[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]

 


文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录