docker 从最开始的只知道有“docker”这么个东西,到现在用起来大概有一个来月的时间了,就简单记录下为什么要用 docker , 还有 docker 的一些常用命令, 还有使用 docker 过程中遇到的一些问题。
最开始想到要使用 docker 是因为公司的系统部署了几套不同的环境,每套环境都需要安装 nginx , redis , mysql , mq 等一些软件。在这么做了一段时间后就发现工作效率是很底下的,并且是重复的劳动,在这个过程中出错的概率也很高。当然大家干活的时候都是想让自己轻松,愉快一些。如果总是做这样低效,重复性的工作无疑是一种灾难。这个时候就想到用 docker 来解决这个问题。docker 是一种虚拟化技术,一种容器技术。 docker 从 2013 , 2014 左右发布。 我们公司现在才开始使用起来 ... 不得不说这个和国际先进水平比较的话确实落后很多了。
记录一些 docker 使用过程中常用的指令
1. 从远程镜像(image)仓库拉取(pull)镜像指令:
docker pull /hepengdockerhub2019/hepeng-centos:latest
: 是我指定的镜像仓库的地址
hepengdockerhub2019: 是我的账户名称,可以理解为一个命名空间
hepeng-centos : 是我要拉取的镜像名称
latest:是我要拉取的镜像的标签 (Tag)
推送镜像到远程镜像仓库: docker push /hepengdockerhub2019/hepeng-centos:latest
将容器打包成镜像: docker commit -m "镜像的一些描述信息" -a "作者" [容器ID] [新的镜像的名称]
2. 运行相关指令:
基本模式使用方式: docker run [镜像名称] 或者 [镜像ID]
在后台运行: docker run -d [镜像名称] 或者 [镜像ID]
和宿主机进行端口映射: docker run -p 宿主机端口:容器端口 -p 宿主机端口:容器端口 。例如 : docker run -p 80:80 6379:6379 [镜像名称] 或者 [镜像ID]
和宿主机进行文件夹映射: docker run -v 宿主机文件夹路径:容器文件夹路径 , 例如 : docker run -v /usr/local/test/:/usr/local/test [镜像名称] 或者 [镜像ID]
指定容器运行的网络模式: docker run --net=host (指定容器的网络模式为 host ) ,docker 的网络模式有: host , bridge , none , container 。docker 网络模式参考博客(1) ,docker 网络模式参考博客(2)
运行后进入控制台模式: docker -it [镜像名称] 或者 [镜像ID] bin/bash ,
-i, --interactive=false
-i, --interactive=false Keep STDIN open even if not attached
保持标准输入,常同-t一起使用来申请一个控制台进行数据交互。
进入已经运行容器的控制台: docker exec -it 容器ID bin/bash
启动停止运行的容器 : docker start 容器ID