使用Docker容器来运行应用

一、起因

之前购买的服务器快要过期了,打算续费发现巨贵,远不如新买的服务器划算,所以只能乖乖买新的服务器。可是,原有的应用要重新部署到新服务器,估算部署工作量巨大,想想就觉得好恐怖。这种被运维部署工作支配的恐怖感,相信不止我一个人有过。我再想,当时为什么就不能好好利用Docker来解决现在的烦恼?Docker类似虚拟机,沙箱环境可以隔离外部环境,性能开销低,更轻量化。Docker可以很方便的迁移容器到新的运行环境,所以正好解决上述的问题。

二、docker镜像命令

  1. 搜索docker hub镜像
    docker search image
  2. 拉取image到本机
    docker pull image
  3. 列出镜像列表
    docker images
  4. 删除一个或多个镜像
    docker rmi image
  5. 显示镜像的历史
    docker history image:tag
  6. 通过容器创建镜像
    docker commit -m=”Commit info” -a=”author” container-id author/image:tag
  7. 上传镜像到docker hub
    docker push author/image:tag

三、docker容器命令

  1. 启动容器
    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 #端口映射,宿主端口:容器端口
  2. 停止容器
    docker stop name/id
  3. 重启容器
    docker restart name/id
  4. 杀死容器
    docker kill name/id
  5. 删除容器
    docker rm name/id
  6. 显示容器进程信息
    docker top name/id
  7. 容器中执行命令
    docker exec name/id command
    docker exec -it name/id bash #交互方式执行命令
  8. 查看容器
    docker ps #运行容器
    docker ps -a #所有容器
  9. 查看容器端口映射
    docker port name/id
  10. 查看容器详细信息
    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

参数解析:

  1. –name: 指定容器名称为mysql
  2. -d: 指定后台运行
  3. -p: 将容器内部端口3306暴露出来
  4. -v: 容器数据挂载至宿主
  5. -e: 容器运行环境参数,设置mysql运行匿名登陆

特别注意:
上述创建的mysql容器,时区为零时区,对于中国地区,需要将时区调至为东八区。
若使用tzselect命令调整时区,退出本次终端后则失效,所以最直接的办法是使用下述的命令:

1
2
3
4
5
docker exec -it mysql bash #进入mysql容器  
date -R #查看时区,确定为零时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设置软连接
exit #退出容器
docker restart mysql #重启mysql容器

最后一步,得重启mysql容器才能生效。

五、参考资料

Docker 命令大全

评论