先了解几个概念:
镜像 mysql 镜像
容器 mysql服务
仓库 mysql仓库
linux最小化安装时没有netstat命令 可以使用yum -y install net-tools安装
删除旧版本,如果没有可以不执行
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
或者
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新缓存
yum makecache fast
安装docker CE
yum -y install docker-ce
启动后台服务
systemctl start docker
测试
docker run hello-world
因为没有hello-world 镜像所以首次运行时会自动下载一个镜像然后运行
设置国内镜像源
为了加速方位可以vi /etc/docker/daemon.json
然后加入
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
然后重启docker
查看本机所有的镜像可以使用如下命令
docker images或者docker image ls
docker官方镜像站点https://hub.docker.com/
使用docker命令查找镜像 例如docker search nginx
可以列出nginx所有相关镜像
拉取镜像
docker pull nginx
运行镜像
docker run 镜像名 一般要加一些参数 以nginx为例
docker run -p 80:80 -d --name nginx_web nginx
注意:镜像名指的是仓库名称:标签名 如果只写仓库名默认是最新版本镜像 即 镜像名:latest
运行镜像会创建一个容器 后续可以使用docker stop 或者docker start 容器名 停止或者启动容器 例如
docker stop nginx_web
docker start nginx_web
查看运行中的容器
docker ps
查看所有容器
docker ps -a
宿主机容器相互拷贝文件
从宿主机向容器拷贝文件 格式:docker cp 宿主机文件名 容器名:路径
从容器向宿主机拷贝文件 格式:docker cp 容器名:路径/文件名 宿主机路径/文件名
例如
docker cp index.html nginx8080:/usr/share/nginx/html
docker cp nginx8080:/usr/share/nginx/html/index.html ./
删除容器 docker rm 容器名 例如
docker rm nginx_web
从容器创建镜像 docker commit -m "备注信息" 容器名称 镜像名称
例如docker commit -m "nginx的首页被改动" nginx nginx_new
备注:如果使用了数据卷挂载(-v) 则在宿主机目录中的更改不会影响容器内的文件内容,创建新镜像时仍然按原始容器内的文件内容创建
删除镜像 docker rmi 镜像名称 或者 docker image rm 镜像名称
例如docker rmi nginx_new
提示:如果通过该镜像创建了容器则需要先删除容器 如果删除容器时容器在运行则需要先停止
查看docker系统占用的所有空间 docker system df
进入容器内查看docker exec -it nginx /bin/bash
数据卷(目录映射)
可以将宿主机的某个目录映射到容器内的某个目录 操作方式
docker run -p 8080:80 -d --name nginx8080 -v /home/wwwroot/default:/usr/share/nginx/html nginx
其中 /home/wwwroot/default 是宿主机目录 /usr/share/nginx/html 是容器内的目录
支持多个目录的映射
以nginx为例
容器内的目录
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf
/usr/share/nginx/html/
宿主目录和容器内目录的映射关系
/usr/local/nginx81/ 映射到 /etc/nginx
/home/wwwroot/default81 映射到 /usr/share/nginx/html/
先从其他容器拷贝对应的配置文件 例如
docker cp nginx8080:/etc/nginx /usr/local/nginx81/
执行如下指令
docker run -p 81:80 -d --name nginx81 \
-v /usr/local/nginx81/nginx:/etc/nginx \
-v /home/wwwroot/default81:/usr/share/nginx/html/ \
nginx