一、Docker 安装
Windows下Docker安装(docker-toolbox)
在windows环境下使用docker客户端时,可选择的有:Docker Toolbox、Docker Desktop。
docker toolbox包含如下部分:
Docker CLI - 客户端,可以理解为与docker引擎交互的接口
Docker Machine - 服务端,类似于linux上的docker server
Docker Compose - 执行docker-compose 命令。
Kitematic - Docker 的 GUI 版本。
Docker QuickStart shell - 相当于linux下docker的shell环境(可以输入各种命令)。
Oracle VM Virtualbox - 虚拟机。
其实我们真正经常使用的主要就是 Docker QuickStart shell 了。
安装完成后,在桌面上会出现3个图标:一个是命令行形式Docker终端,一个是图形界面的Docker操作工具。
由于Docker引擎的守护进程使用的是Linux的内核,所以我们不能够直接在windows中运行docker引擎。而是需要运行Docker Machine命令 docker-machine, 在你的机器上创建和获得一个Linux虚拟机,
用这个虚拟机才可以在你的windows系统上运行Docker引擎
安装详细过程参考
https://www.lmlphp.com/user/57799/article/item/608120
二、docker 使用
1、系统启用/重启/停用docker
systemctl start docker #启用docker
systemctl restart docker #重启docker
systemctl stop docker #停用docker
2、docker容器
启动容器
docker run -d -p 58080:8080 -v /root/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat:1.0 /root/run.sh
#常用参数
-d:表示以“守护模式”执行,此时不会进入容器
-p:表示宿主机与容器的端口映射, 格式:-v <宿主机端口>:<容器端口>
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
--name:表示容器名称
-e:用于参数传递
-i:交互式操作
-t:终端
新建+启动容器:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
–name=“容器新名字” 为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互);-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
启动交互式容器(前台命令行),要退出终端,直接输入 exit ,这种方式退出后不会在后台运行
应用开机自启
docker update 容器id/名字 --restart=always
–restart=always: 开机自启
列出当前所有正在运行的容器
docker ps [OPTIONS]
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
退出容器
两种退出方式:
- exit : run进去容器,exit退出,容器停止
- ctrl+p+q : run进去容器,ctrl+p+q退出,容器不停止
启动已停止运行的容器
docker start 容器ID或者容器名
重启容器
docker restart 容器ID或者容器名
停止容器
docker stop 容器ID或者容器名
强制停止容器
docker kill 容器ID或容器名
删除已停止的容器
docker rm 容器ID
一次性删除多个容器实例
两种方式:
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell
--eg: docker exec -it -uroot id/bash
重新进入
docker attach 容器ID
attach: 直接进入容器启动命令的终端,不会启动新的进程
exec: 是在容器中打开新的终端,并且可以启动新的进程
从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 6 months ago 231MB[root@docker ~]# docker run -it centos /bin/bash
[root@76539a2682cc /]#[root@docker ~]# ls
anaconda-ks.cfg[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76539a2682cc centos "/bin/bash" 39 seconds ago Up 39 seconds laughing_morse[root@docker ~]# docker attach 76539a2682cc
[root@76539a2682cc /]# cd home/
[root@76539a2682cc home]# ls# 在容器内创建test.java镜像
[root@76539a2682cc home]# touch test.java
[root@76539a2682cc home]# ls
test.java
[root@76539a2682cc home]# exit
exit
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76539a2682cc centos "/bin/bash" About a minute ago Exited (0) 33 seconds ago laughing_morse# 将文件拷贝出来
[root@docker ~]# docker cp 76539a2682cc:/home/test.java /home/
[root@docker ~]# ll /home/
total 0
-rw-r--r--. 1 root root 0 Mar 21 22:19 test.java# 拷贝是一个手动的过程,以后使用 -v 卷的技术,可以实现,自动同步。
重要:有镜像才能创建容器,这是根本前提
启动守护式容器(后台服务器):
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的后台运行模式。
docker run -d 容器名
#使用镜像centos:latest 以后台模式启动一个容器
docker run -d centos
问题:然后docker ps -a 进行查看, 会发现容器已经退出。
很重要的要说明的一点
Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
这个是docker的机制问题,比如你的web容器,我们以nginx为例:正常情况下,我们配置启动服务只需要启动响应的service即可。例如 service nginx start
但是,这样做 nginx为后台进程模式运行,就导致docker前台没有运行的应用。这样的容器后台启动后,会立即自杀因为他觉得他没事可做了。所以,最佳的解决方案是:将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断。O(∩_∩)O哈哈~
3、docker镜像
列出镜像列表
docker images #列出镜像信息
docker images summer-front #列出REPOSITORY为summer-front 的镜像信息
docker images -q # 列出所有镜像的镜像id
docker images -a #列出所有的镜像信息
docker images -f "dangling=true" #列出虚空镜像信息
查找镜像
docker search java #查看java镜像
拉取镜像
docker pull java #拉取最新的java镜像
docker pull java:8 #拉取指定版本的java镜像
构建镜像
docker built -it summer-gitlab:V1 . #构建summer:V1的镜像,后面的.表示从当前上下文拉取信息进行构建
镜像添加标签
docker tag summer-gitlab 192.168.2.47:8080/summer/summer-gitlab #添加镜像标签
推送镜像到镜像仓库
docker push 192.168.2.47:8080/summer/summer-gitlab:V1 #推送镜像到镜像仓库
登录镜像仓库
docker login -u admin -p password 192.168.2.47:8080 #登录镜像仓库,-u 用户名 -p 密码 192.168.2.47:8080为仓库地址
192.168.2.47:8080为仓库地址
4、docker日志查看
docker logs dockername/dockerid
参考教材
Docker教程视频(适合docker 0基础,Docker初学入门)_哔哩哔哩_bilibili
参考资料
官方英文资源
· Docker官网:http://www.docker.com
· Docker windows入门:Redirecting…
· Docker Linux 入门:Redirecting…
· Docker mac 入门:Redirecting…
· Docker 用户指引:Redirecting…
· Docker 官方博客:Docker Blog | App Development News and Thought Leadership | Docker
· Docker Hub: Docker Hub
· Docker开源: Open Source Container Project Collaboration | Docker
中文资源
· Docker中文网站:http://www.docker.org.cn
· Docker中文文档:Docker中文文档 Docker概述-DockerInfo
· Docker安装手册:Docker支持的安装方式 - Docker安装手册 - docker中文社区
· 一小时Docker教程 :https://blog.csphere.cn/archives/22
· Docker中文指南:安装 | Docker 中文指南
其它资源