Docker学习笔记

发布于 2020-07-02  23 次阅读


参考来源:菜鸟教程

安装Docker

直接使用命令安装

yum install docker

使用docker -v查看一下版本号,打印出版本号即可,然后使用sudo systemctl start docker启动docker。

使用Docker

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

docker

docker

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

例如我们要查看 docker stats 指令的具体使用方法:

docker

Docker安装MySQL

这里我们安装MySQL5.5

docker pull mysql:5.5

等待下载完成自动安装,完成后使用以下命令查看本地镜像,

docker images

docker

安装完成后,我们就可以运行容器了:

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.5

参数说明:

  • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过宿主机ip:3306 访问到 MySQL 的服务。
  • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
  • mysql:最后的这个是镜像名:镜像版本,比如我这里的mysql:5.5
  • --name :容器名称

运行完成后使用docker ps -a查看刚才运行的MySQL容器

docker ps -a

然后我们把容器内的配置文件和数据目录拷贝出来:

docker cp /etc/mysql /opt/
  • /etc/mysql:容器内MySQL目录
  • /opt/:要拷贝出来的目录

拷贝完成后我们使用docker stop ccac2de92672(容器CONTAINER ID)停止容器,然后使用docker rm ccac2de92672删除容器,然后我们再以挂载容器目录和配置文件的方式启动容器:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD -v /opt/mysql:/var/lib/mysql -v /opt/mysql/my.cnf:/etc/mysql/my.cnf mysql:5.5
  • -v /opt/mysql:/var/lib/mysql:要挂载的目录:容器内目录
  • -v /opt/mysql/my.cnf:/etc/mysql/my.cnf:要挂载的目录内配置文件:容器内目录内配置文件

遇到的问题

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/opt/mysql/my.cnf\\\" to rootfs \\\"/var/lib/docker/overlay2/4a7cb063309e5095ff0953c03b4667b1de73c4741e8331beeca825f29b06c29e/merged\\\" at \\\"/var/lib/docker/overlay2/4a7cb063309e5095ff0953c03b4667b1de73c4741e8331beeca825f29b06c29e/merged/etc/mysql/my.cnf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

要挂载的目录下my.cnf不是文件,检查拷贝是否出错

[APIError: 500 Server Error: Internal Server Error (\"oci runtime error: container_linux.go:235: starting container process caused \"container init exited prematurely](https://www.cnblogs.com/omgasw/p/12053986.html)

linux 与 docker 版本的兼容性问题,可以尝试重新安装 docker

1.卸载旧版本 docker

yum remove docker  docker-common docker-selinux dockesr-engine -y

2.升级系统软件

yum upgrade -y

3.安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4.添加软件源信息

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.更新并安装 docker-ce

yum makecache fast
yum install docker-ce -y

6.启动服务

systemctl daemon-reload
systemctl restart docker