Docker学习笔记

王誉睿 2019年03月11日 5次浏览

1.Docker概念

Docker是一个基于LXC(linux container,linux容器)技术搭建的容器引擎,基于go语言开发,遵循apache2.0协议开源。

可以理解为:docker把一台服务器隔离成一个个的容器,每个容器内运行一个应用,不同容器相互隔离。

容器创建停止都是秒级的,容器自身对资源需求有限,所以远比虚拟机本身占用的资源少。

2.Docker和虚拟机

Docker的运行机制则是使用Daemon完成了对虚拟机结构中虚拟机系统层+虚拟机操作系统层的简化。

Daemon基于LXC技术共享宿主机操作系统内核,并将宿主机空间进行隔离,形成一个个独立的容器。每个容器看起来就是一个个单独的服务器,可以有自己独立的应用程序、进程、空间等,却不需要内部安装操作系统。

3.Docker Container(容器)

4.Docker image(镜像)

5.Docker Registry(记录中心)

Docker官方或者第三方提供镜像的地方。

6.Docker运行原理

  • pull:用户通过客户端从registry下载镜像。
  • run:用户通过运行本地镜像,成为容器。
  • build:用户可以通过dockerfile文件构建新的镜像。

##7. Docker容器IP和端口映射

docker中四种网络模式:

  1. host模式,使用 —net=host指定。
  2. container模式,使用 —net=container:NAME or ID指定。
  3. none模式,使用 —net=none指定。
  4. bridge模式,使用 —net=bridge指定。

​ bridge模式是docker默认的网络设置,此模式会为每一个容器分配一个未占用的IP使用。但在此模式下,如果容器停止,重新启动时IP会重新分配,这样新的IP很可能会与之前的IP不同。在实际工作中,服务一般需要固定的IP,所以在使用docker的时候通常会为每个容器设置固定的IP。如果需要启动的docker容器比较多,则需要提前规划好IP设置,以确保需要通信的docker容器在相同的网段,并且考虑到扩展性,一般会预留一些IP以供未来扩充使用。

​ 端口映射是docker容器中特别重要的一个概念。容器由于自身的隔离性,使得外界没有办法访问容器内部的服务(如在容器中启动tomcat,外界是无法直接访问到该tomcat的)。docker的端口映射机制,可以将容器内部端口映射到宿主机,用户通过访问宿主机端口即可实现对容器的访问。(docker run中-p参数即指定容器对宿主机的端口映射。)

8.Docker集群

9.Docker安装

获取docker安装并安装:
apt-get install -y docker.io
启动docker服务:
sudo service docker start
docker --version

10.Docker命令

镜像查看:
docker images
镜像搜索:
docker search "镜像关键词"
镜像拉取:
docker pull [opthions] NAME[:TAG|@DIGEST]
镜像删除:
docker rmi 镜像 ID 或镜像名称

11.Docker容器操作命令

生产容器:
  docker run -d -p 8888:8080 --name tomcat-test tomcat
生产容器
  docker run -d -p 8888:8080 --name tomcat-test tomcat
  说明:-d:后台运行 -p:端口映射 8888:宿主机端口.8080:docker容器端口,tomcat-test:容器名字,tomcat:镜像名称
查看容器(查看正在运行的容器)
  docker ps|grep 容器关键字
查询全部(包括已停止)的容器
  docker ps -a|grep 容器关键字
进入容器
  docker exec -it containerId/containerName /bin/bash
退出容器
  exit
停止容器
  docker stop containerId/containerName
启动容器
  docker start containerId/containerName
删除容器
  docker rm containerId/containerName
拷贝文件
  docker cp 宿主机目录及文件 容器名称:容器目录

问题总结1:

部署安装tomcat容器

root@ubuntu:/home/docker# docker pull registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
Using default tag: latest
latest: Pulling from shuodao/tomcat-8.5.27
8f7c85c2269a: Pull complete 
9e72e494a6dd: Pull complete 
3009ec50c887: Pull complete 
9d5ffccbec91: Pull complete 
e872a2642ce1: Pull complete 
558a041b7256: Pull complete 
5bd2d92394a5: Pull complete 
Digest: sha256:05fa942790b8d42bfd4f5a16527609c9e9ddb4a45a04a8d31e5750c3a2b7c1bd
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27:latest
root@ubuntu:/home/docker# docker images
REPOSITORY                                                TAG                 IMAGE ID            CREATED             SIZE
registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27   latest              d07ca8aba782        2 months ago        369 MB
root@ubuntu:/home/docker# docker run -d -p 8888:8080 --name mytomcat registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
8e195d1630b7875b1ab2fde17b4cba1a7bc407d70c332b021d18eb16662ec066
root@ubuntu:/home/docker# docker exec -it mytomcat /bin/bash
root@8e195d1630b7:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@8e195d1630b7:/# cd usr
root@8e195d1630b7:/usr# ls
bin  games  include  java  lib  local  sbin  share  src  tomcat
root@8e195d1630b7:/usr# exit
exit
root@ubuntu:/home/docker#

http://localhost:8888 访问tomcat服务器页面

docker stop mytomcat 停止容器运行,在访问网址,已经无法登陆。

问题总结2:

做一个index.html通过tomcat运行它

docker@ubuntu:~$ docker cp /home/docker/Desktop/bg.html mytomcat:/usr/tomcat/webapps/ROOT

打开浏览器,输入网址:http://localhost:8888/index/.html 访问。

问题总结3:

删除images时候

docker@ubuntu:~$ docker rmi registry.cn-beijing.aliyuncs.com/wz-web/sd-tomcat
Error response from daemon: conflict: unable to remove repository reference "registry.cn-beijing.aliyuncs.com/wz-web/sd-tomcat" (must force) - container af06eabfa3bb is using its referenced image ba886ec36feciej

解决方法:

su root
docker ps -a -q(af06eabfa3bb)

docker stop af06eabfa3bb
docker rm af06eabfa3bb
docker images
——>registry.cn-beijing.aliyuncs.com/wz-web/sd-tomcat   latest              ba886ec36fec        15 months ago       1.62 GB

docker rmi registry.cn-beijing.aliyuncs.com/wz-web/sd-tomcat

(未完待续...)