一、起因
之前购买的服务器快要过期了,打算续费发现巨贵,远不如新买的服务器划算,所以只能乖乖买新的服务器。可是,原有的应用要重新部署到新服务器,估算部署工作量巨大,想想就觉得好恐怖。这种被运维部署工作支配的恐怖感,相信不止我一个人有过。我再想,当时为什么就不能好好利用Docker来解决现在的烦恼?Docker类似虚拟机,沙箱环境可以隔离外部环境,性能开销低,更轻量化。Docker可以很方便的迁移容器到新的运行环境,所以正好解决上述的问题。
二、docker镜像命令
- 搜索docker hub镜像
docker search image - 拉取image到本机
docker pull image - 列出镜像列表
docker images - 删除一个或多个镜像
docker rmi image - 显示镜像的历史
docker history image:tag - 通过容器创建镜像
docker commit -m=”Commit info” -a=”author” container-id author/image:tag - 上传镜像到docker hub
docker push author/image:tag
三、docker容器命令
- 启动容器
docker run image/name/id
docker run –name name image:tag #前台方式运行镜像并给容器命令
docker run -d image:tag #后台方式运行镜像
docker run -v /path1:/path2 #容器里路径/path2数据挂载到外部路径/path1
dcoker run -e KEY=value #传入运行环境参数
docker run -p port1:port2 image:tag #端口映射,宿主端口:容器端口 - 停止容器
docker stop name/id - 重启容器
docker restart name/id - 杀死容器
docker kill name/id - 删除容器
docker rm name/id - 显示容器进程信息
docker top name/id - 容器中执行命令
docker exec name/id command
docker exec -it name/id bash #交互方式执行命令 - 查看容器
docker ps #运行容器
docker ps -a #所有容器 - 查看容器端口映射
docker port name/id - 查看容器详细信息
docker inspect name/id
四、mysql容器实例
1 | docker run --name mysql -d -p 0.0.0.0:3306:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.6.39 |
参数解析:
- –name: 指定容器名称为mysql
- -d: 指定后台运行
- -p: 将容器内部端口3306暴露出来
- -v: 容器数据挂载至宿主
- -e: 容器运行环境参数,设置mysql运行匿名登陆
特别注意:
上述创建的mysql容器,时区为零时区,对于中国地区,需要将时区调至为东八区。
若使用tzselect命令调整时区,退出本次终端后则失效,所以最直接的办法是使用下述的命令:1
2
3
4
5docker exec -it mysql bash #进入mysql容器
date -R #查看时区,确定为零时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设置软连接
exit #退出容器
docker restart mysql #重启mysql容器
最后一步,得重启mysql容器才能生效。