Docker由浅入深

镜像和容器

为了更好地说明 image 和 container的关系,我们可以类比为面向对象:

docker面向对象
容器对象
镜像

类实例化为对象相当于镜像产生容器,一个类可以实例化为多个对象,一个镜像也可以产生多个容器


安装docker

我是在linux机器上安装的docker,直接用命令 yum install docker 即可完成安装,然后用 systemctl start docker 启动docker容器,同理我们要停止docker,只需要把start改成stop,即可,启动之后,我们可以看到docker的版本 docker -v,每次我们关闭linux机器,docker就会自动关闭,但是我们可以设置开机启动 systemctl enable docker

下面介绍一下docker的常用操作:

docker serach:用来查找docker镜像,默认会在 docker hub来寻找镜像,下面我测试一下mysql镜像:
在这里插入图片描述

怎么用这个镜像?

首先pull下来: docker pull 镜像名:标签 会默认帮我们下载最新的镜像,下面演示一下mysql的下载 docker pull mysql:

这里有个小问题,docker pull mysql 一直没成功,好像是下载速度太慢了,这里我们用aliyun的加速,首先在这里 阿里云加速配置加速账号,它会给你个加速地址 ,我们只需要在 /etc/docker/daemon.json 下面填写好,填写成下面这个样子:然后重启docker服务,就能下载了。

#  这是 daemon.json的样子,这里大家用自己的地址
{
  "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]   
}

在这里插入图片描述
下载完后,我们可以直接docker images 就能看到下载的镜像,如果我们要下载其他版本的mysql,那就需要我们指定标签了 。

怎么看有哪些标签 ?

这就需要去官网找了,直接搜索你想要的镜像,然后选择标签一栏:
在这里插入图片描述
直接按照画圈的地方的命令下载就完事了

如果你要卸载镜像 直接 docker rmi 镜像id,镜像id 就是那个:
在这里插入图片描述


容器操作的步骤 (以tomcat为例)
  1. 搜索镜像 docker search tomcat(这里如果你要指定版本,还是需要去docker hub 里面去找标签)
  2. pull 镜像 (根据上一步的镜像名:标签)选择合适的镜像 docker pull tomcat,默认最新
  3. 运行容器:
docker run --name mytomcat -d tomcat:latest    
// mytomcat是自己起的名字,-d 表示后台运行 tomcat:latest是自己的容器名
docker ps   // 查看docker中正在运行的容器

docker stop 容器id   // 停止正在运行的容器
docker start 容器id  // 开启容器
docker ps -a    // 查看所有的容器,包括运行的和停止的
docker rm 容器id  // 删除容器 删除完后 docker ps -a 就不显示了 ,
//   这是删除容器而非镜像,我们删除完后还是可以重新启动容器的 docker run --name....

下面是容器的端口映射
docker run -d -p 8888:8080 tomcat  // 主机:容器端口  也就是容器的8080端口可以通过主机8888访问

这里我没有关闭防火墙也可以在主机访问到tomcat页面,如果你不能访问,可以关闭防火墙试试,访问方式为 虚拟机ip:8888,比如我的 http://192.168.119.128:8888/
防火墙查看状态 service firewalld status
关闭防火墙 service firewalld status

最后,查看容器的日志: docker logs 容器id 更多的命令,查看docker官方文档。


下面来了解一下究竟怎么用一个docker镜像

我们还是以mysql为例:

我们设置mysql不能像tomcat 一样直接映射一个端口,我们还要为其设置数据库的登录密码,这个怎么设置?

对于这类问题,最好的解决办法就是查看官方文档:
在这里插入图片描述
我们之前说了,你要查看tag,点击第三个栏,如果你想了解它的一些用法,那就好好阅读第一栏,里面给了个很好的例子:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

我们如何指定登录密码,里面很清楚了 -e MYSQL_ROOT_PASSWORD=my-secret-pw 只需要传入-e 参数即可,所以最后我们应该这样:

docker run -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql

在这里插入图片描述
我们可以用数据库软件在本地连接数据库了。


交互式进入容器操作

上面我们都是直接 -d 以后台的方式启动容器,但是当我们想要进入容器中,比如 ubuntu容器中,该怎么做呢?

下面给出了命令 :docker exec -it 容器id bash ,That’s OK,但是,首先我们要启动容器。

下面是构建自己的容器,也就是 docker build 命令的使用,我们在本机新建一系列文件夹 /usr/local/docker/tomcat ,并且新建一个dockerfile 文件,文件内容如下:

from tomcat    # 这段话需要指定容器
RUN rm -rf /usr/local/tomcat/webapps/ROOT/*
RUN echo "hello docker" > /usr/local/tomcat/webapps/ROOT/index.html

我们在新的容器中移除 /ROOT/ 下面所有的文件,并重写index文件。我们重建镜像并命名为mytom:
docker build -t mytom . 最后那个点表示当前的文件夹下面的dockerfile。这个过程相当于我们把tomcat先克隆下来,再进行重新改造成我们自己的镜像,再打包发布。
在这里插入图片描述
上面那个none是个虚悬镜像,之前发布的时候,修改过一次,这次属于第二次发布,所以出现了虚悬镜像,就是上面那个名字为none的。要想清理所有的虚悬镜像,就要先停掉并移除该虚悬镜像对应的所有容器,再执行docker image prune 。完毕后,我们重启mtom镜像,docker run -d -p 8080:8080 mytom,然后在浏览器访问,就能看到我刚写的index页面。


docker的挂载

我们在本地的Tomcat文件下新建一个ROOT/index.html文件,随便在index中写入一句话,我们然后把这个文件挂载到Tomcat容器中,下面是操作命令:

docker run -p 8080:8080 --name tomcat -d -v /usr/local/docker/tomcat/ROOT/:/usr/local/tomcat/webapps/ROOT tomcat

参数 -v 后面的内容是你本地主机下的路劲,而 :后面的路径是容器中Tomcat的路径。这就给挂载上去了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值