nineth_Docker
1. Docker 概述
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
优点:更高效的利用系统资源、更快速的启动时间、一致的运行环境、持续交付和部署、更轻松的迁移
应用场景:web 应用的自动化打包和发布;自动化测试和持续集成、发布;在服务型环境种部署和调整数据库或其它应用
三大概念:镜像image(分层存储)、容器container(从镜像创建运行的实例)、仓库repository(集中存放镜像文件的场所)
为什么docker快:容器是只读写+镜像,镜像是一堆只读层+...
2.Docker 安装
# 查看/etc/yum.repos.d/有没有Centos-7.repo或CentOS-Base.repo,如果没有 # 去下面这个网站https://opsx.alibaba.com/mirror 找CentOS7版本,下载即可 yum install -y docker # 下载安装docker rpm -qi docker # 查看docker Version,目前是1.31.1,这是阿里云mirror,版本一般会老,如果要最新的要去官网下载,不过speed比较慢
systemctl status docker # 查看docker 状态,未启动情况下active:inactive
systemctl start docker # 启动docker, 当然 stop 则是停止
3.Docker基本使用命令
docker search hello-world # 搜索相关镜像 stars最多的就是最多人推荐的, docker pull docker.io/hello-world # docker pull automated 即可下载 docker image # 查看docker 镜像 docker run -it 94e /bin/bash # ID的前3位(上面语句得知的)或者镜像名字,此方法是新建一个容器并交互,exit即可退出
-i #交互运行 -t #开启一个终端 -d #后台运行 -P #随机端口 -p #自定义端口 --name #指定名字 docker ps -a # 即可查看已经开过的容器 -q 查看镜像ID docker container ls # 查看真正运行的容器
# 安装加速器及centos curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io # 下载加速器 # 并修改/etc/docker/daemon.json文件,去掉逗号(语法错误)否则无法开启 # 然后docker pull centos 下载centos文件(用search的方式)
# 容器操作
docker run -d centos /bin/bash -c "while true;do echo 爱滴魔力转圈圈; sleep 1;done" # 跑一个-d 后台运行 centos 后台镜像 /bin/sh 解释器 -c 运行一行命令 while 循环语句 ; docker logs -f 容器ID # 持续查看消息 # docker ps -a 和 docker container ls # 相同程序的ID是一直,如果程序没有持续运行则会消失挂掉(即一定要start 可以一直开着的才不会挂掉) docker exec -it 容器ID /bin/bash # 进入开启过的容器种
docke start 容器ID
# 删除 docker rmi 镜像ID # 可能无法成功删除,会提示镜像有依赖镜像或有运行文件,需要先删除依赖镜像/运行文件,再删除此镜像; docker rm 容器ID
docker rm -f 'docker ps -aq' # f是强制删除,后面语句则是全部容器
# 导入及导出 # 如果要导出镜像到本地文件,可以使用docker save命令。 [root@docker ~]# docker save centos > /opt/centos.tar.gz # 导出docker镜像至本地 [root@docker ~]# ll /opt/ -rw-r--r--.1 root root 204205056 12月 30 09:53 centos.tar.gz # 可以使用docker load从本地文件中导入到本地docker镜像库 [root@docker ~]# docker load < /opt/centos.tar.gz # 导入本地镜像到docker镜像库 [root@docker~]# docker images # 查看镜像导入情况 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos latest 60e65a8e4030 5 days ago 196.6 MB
# 外部访问容器 # 在容器内跑一个app.py程序, 运行在9000端口 docker run -d -P training/webapp python app.py # -P 参数会随机映射端口到容器开放的网络端口, 如果本地没有这个镜像,docker run会自动为我们下载镜像 docker container ls # 查看是否有,后面多开也可以继续查看 # 使用-p参数自定义一个端口到虚拟机上, 如9000端口 docker run -d -p 9000:5000 training/webapp python app.py # 我们可以通过虚拟机的IP 192.168.1.55加端口9000进行访问
# 提交创建自定义的镜像(docker container commit) # 1.我们进入交互式的centos容器中,发现没有vim命令 docker run -it centos /bin/bash # 2.在当前容器中,安装一个vim yum install -y vim # 3.安装好vim之后,exit退出容器 exit # 4.查看刚才安装好vim的容器记录 docker container ls -a # 5.提交这个容器,创建新的image # 此时这个镜像就自带vim docker commit 059fdea031ba tiger/centos-vim # 6.查看镜像文件 [root@master /home]docker images REPOSITORY TAG IMAGE ID CREATED SIZE tiger/centos-vim latest fd2685ae25fe 5 minutes ago 348MB
# 发布docker image到仓库 # 1 docker提供了一个类似于github的仓库dockerhub, 网址https://hub.docker.com/需要注册使用 # 2 注册docker id后,在linux中登录dockerhub docker login docker tag tiger/centos-vim 909336740/centos-vim # tag是复制并重命名镜像,909336740是我的账号,你们要用自己的 docker images # 查看 docker push lxh661314/centos-cmd-exec:latest # 发布到dockerhub上 # 个人账户的 Repositories就能看到 # 删除本地镜像,测试下载pull 镜像文件 docker rmi -f d69 docker pull lxh661314/centos-entrypoint-exec


浙公网安备 33010602011771号