#=### 声明 此笔记是根据网上视频教程做的 url https://www.bilibili.com/video/av49095718?p=24
docker三要素
镜像 容器 仓库
镜像与容器的关系 镜像就好比操作系统window.iso 容器是 在电脑上安装后的操作系统 人可以使用的操作系统
镜像的crud
docker images 列出指定的镜像
docker images -a
docker images -qa列出镜像的id
docker pull tomcat 从repository中拉取镜像
docker search tomcat 查询仓库中的镜像 从国外网站上查询 但是下载是从配置的daemon.json文件路径下载
docker rmi -f tonmcat 删除指定镜像
docker rmi -f tomcat nginx 删除多个镜像
docker rmi -f $(docker images -q) 删除全部镜像 可以类比 delete from table_name where id in (select id from table_name)
容器的操作
查看docker下正在运行多少容器
docker ps 类比linux的 ps -ef | grep tomcat
docker run -it centos --name my_centos 以交互的方式运行 centos容器
exit 从centos中退出
ctrl+d 退出容器且关闭, docker ps 查看无
ctrl+p+q 退出容器但不关闭, docker ps 查看有
docker ps -l 显示上一个运行的容器 相对此时 容器是停止的
docker ps -a 当前运行的+历史运行的 === docker ps + docker ps -l
docker ps -n 3 上三次运行的显示 类似 docker ps -l 都是历史运行的
过去exit的如何启动
docker restart id 重启某个应用
docker stop id或者容器名 停止某个应用
docker kill id 强制关闭容器
docker rm id或者容器名 删除已经停止的容器
docker rm -f $(docker images -q) 一次性删除多个容器
docker ps -qa | xargs docker rm
以守护进程的方式启动
守护进程 :片面理解 后台进程
docker run -d centos 以后台的形式运行centos 通过docker ps 是无法查询其状态的
docker logs id 打印日志
查看容器内的进程
docker top id 查看某个容器内的进程 容器可以用top的原因是 容器是一个简易版的linux环境
docker inspect id 查看容器运行的内部细节
docker attach id 进入centos的终端
docker exec id ls -l 进入centos中执行ls -l
从docker中拷贝到虚拟机中 实现持久化
[root@localhost ~]# docker attach 367364821b52
[root@367364821b52 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@367364821b52 /]# vi
[root@367364821b52 /]# vi hello
[root@367364821b52 /]# read escape sequence
[root@localhost ~]# docker cp 367364821b52:/hello /root
[root@localhost ~]# ll
total 12
-rw-------. 1 root root 2305 Nov 10 01:25 anaconda-ks.cfg
-rw-r–r--. 1 root root 16 Feb 2 22:21 hello
-rw-r–r--. 1 root root 2353 Nov 10 02:11 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 13 22:50 perl5
[root@localhost ~]#
数据卷
容器与虚拟机 实现多个文件的映射
[root@localhost ~]# docker run -it -v /cen_volume:/doc_volume centos
容器 exit start attach 后查看 卷还在
dockerfile 实现数据卷
1, vim vi myDockerFile 在本机建
2,
#继承centos
from centos
#数据卷
volume ["/usb1","/usb2","/usb3"]
cmd echo "success"
cmd /bin/bash
3, docker build -f /opt/myDockerFile -t mycentos . 别忘了 最后一个 点
4,
5,查看对应本机的文件夹 docker inspect mycentos
容器与容器之间的volume继承(共享)
[root@localhost opt]# docker run -it --name object mycentos 启动一个容器
[root@localhost ~]# docker run -it --name sun --volumes-from object mycentos 启动另一个容器
实现容器卷的继承
注意:容器与容器间的数据卷比较特殊 所有容器共通数据卷 只有最后一个容器退出时 数据卷才销毁 特性 父通子 子通父
dockerfile命令
dcokerfile文件关键字的用法
[root@GZY opt]# cat myDockerFile
#继承最原始的组件
from centos
#数据卷
volume ["/usb1","/usb2","/usb3"]
#声明一个变量 引用path用 $path
ENV path /etc/
#启动此容器时的光标所在目录
WORKDIR $path
#运行一些命令
cmd echo “success”
#运行linux的命令
run yum install -y net-tools
#触发器 当子类继承这个容器时 会触发命令
onbuild run echo “这是一个触发器”
cmd /bin/bash
[root@GZY opt]#
自制tomcat
配置文件
在opt下 有以下文件
[root@GZY tomcat]# ll
total 158896
drwxr-xr-x. 9 root root 220 Feb 25 21:27 apache-tomcat-7.0.96
-rwxrw-rw-. 1 root root 9167727 Sep 15 16:11 apache-tomcat-7.0.96.tar.gz
-rw-r--r--. 1 root root 745 Feb 25 22:03 Dockerfile
drwxr-xr-x. 8 10 143 233 Apr 11 2015 jdk1.7.0_80
-rwxrw-rw-. 1 root root 153530841 Dec 24 2017 jdk-7u80-linux-x64.tar.gz
-rw-r--r--. 1 root root 0 Feb 25 21:04 tomcat.txt
[root@GZY tomcat]#
docker文件
```
[root@GZY tomcat]# cat Dockerfile
from centos
copy tomcat.txt /usr/local/cincontainer.txt
add apache-tomcat-7.0.96.tar.gz /usr/local
add jdk-7u80-linux-x64.tar.gz /usr/local
run yum install vim -y
ENV MYPATH /usr/local
workdir $MYPATH
#设置环境变量
ENV JAVA_HOME /usr/local/jdk1.7.0_80
ENV CLASSPATH
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
ENV catalina_home /usr/local/apache-tomcat-7.0.96
ENV catalina_base /usr/local/apache-tomcat-7.0.96
ENV PATH
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:
c
a
t
a
l
i
n
a
h
o
m
e
/
l
i
b
:
catalina_home/lib:
catalinahome/lib:catalina_home/bin
EXPOSE 8080
#设置启动命令
ENTRYPOINT ["/usr/local/apache-tomcat-7.0.96/bin/catalina.sh",“run”]
#cmd /usr/local/apache-tomcat-7.0.96/bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0.96/bin/catalina.out
[root@GZY tomcat]#
mysql
redis