yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest logrotate \
docker-engine
yum install -y yum-utils
然后配置Docker的yum源
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker -v(查看docker版本)
docker images
systemctl start docker
systemctl stop docker(停止docker)
systemctl restart docker(重启docker)
systemctl enable docker(开机自动启动docker)
docker部署mysql
命令:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123\
mysql
然后就可以使用sqlyog连接到这点虚拟机ip上的mysql了。
利用docker安装应用时,Docker会自动搜索并下镜像,镜像不仅包含应用本身,还包含了运行所需的环境、配置等等,Docker会在运行时创建一个隔离环境,成为容器。
所以,可以在docker上搭建集群(这里搭建mysql集群)
使用 docker ps 命令可以查看已经启动的服务有哪些
镜像仓库:存储和管理镜像的平台Docker官方维护了一个公共的仓库:Docker Hub
docker run
,创建并运行一个容器, -d是让容器在后台运行。--name mysql
,给容器起个名字,唯一。-p 3306:3306
,设置端口映射,把宿主机的端口和容器的3306端口做一个映射,当我们访问外部机器的3306端口时,docker会把请求转为容器内的3306端口。(前面是宿主机端口,后面是容器端口)-e KEY=VALUE
,设置环境变量mysql
,指定运行“镜像名字”mysql:5.7
docker pull nginx
(拉取nginx镜像)
docker images
(查看本地镜像列表)
docker save -o nginx.tar nginxs:latest
(将本地的nginx镜像打包,:latest是版本,-o后面的名字是打包后的文件名)
ll
(查看目录,会多出nginx.tar包)
docker rmi nginx
(删除nginx镜像)
docker load -i nginx.tar
(-i后面跟本地文件名,加载nginx.tar镜像,然后跟docker images查看,nginx镜像就回来了)
docker -run -d --name nginx -p 80:80 nginx
(docker -run 创建并启动容器,-d代表后台运行,–name起名字,-p 80:80端口映射 -e是环境变量,没有就不用写,最后加上镜像名称,然后回车)
docker -ps
(查看容器状态,其中输出的关键字如下,
CONTAINER ID容器ID,
IMAGE容器所使用的镜像,
COMMAD内部运行时的启动命令,
CREATED创建时间,
STATUS状态,
up就是启动中,
PORTS端口映射)
docker stop nginx
(停止nginx容器,然后再用docker -ps查看,会发现nginx没了,所以docker -ps是查看运行中的容器)
docker ps -a
(查看所有的容器)
docker start nginx
(再启动nginx容器)
docker logs nginx
(查看nginx的运行日志)
docker logs -f nginx
(持续查看nginx日志,ctrl+c停止)
docker exec -it nginx bash
(进入nginx容器,-it就是加上一个可执行命令的终端,bash是命令行交互方式)
exit
(退出)
docker stop nginx
(停止nginx容器)
docker rm nginx
(删除nginx容器)
docker rm nginx -f
(强制删除nginx(运行中的容器也可以删掉))
/var/lib/docker/volumes/html
和/var/lib/docker/volumes/conf
创建数据卷对应的目录。docker volume --help
查看数据卷命令docker rem -f nginx
(先删除nginx容器)docker run -d --name nginx -p 80:80 -v html:/user/shar/nginx/html nginx
(-v html:/user/shar/nginx/html,创建html数据卷,与容器内/user/shar/nginx/html这个文件进行挂载)docker volume ls
(查看数据卷是否创建成功)docker volume inspect html
(展示数据卷的详情信息)cd /var/lib/docker/volumes/html
(进入虚拟机这个目录)cat index.html
(查看文件内容,和我们的nginx内的html对应)docker inspect nginx
docker run
命令时,使用-v 本地目录:容器内目录可以完成本地目录挂载, mkdir mysql
cd mysql
mkdir data
mkdir init
mkdir conf
然后创建mysql容器并实现挂载
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123\
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql
ip addr
可以看到虚拟机的网卡docker netword ls
(查看自定义网络)docker netword create wang
(自定义一个名为“wang”的网络)docker netword connect wang mysql
(mysql加入wang网络)docker inspect mysql
(查看mysql容器,就多出了一个自定义网桥)--network wang
docker netword rm wang mysql
(删除mysql)docker build -t java1 .
(构建一个java1的镜像,最新版本)dis
查看,生成了java1镜像docker run -d \
--name java \
-p8080:8080 \
--network wang \
java(java镜像名字)
docker logs -f java
(查看镜像日志)docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/nginx/html:/user/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network wang \(与java项目共享网络)
nginx
dps
多容器操作,通过一个单独的docker-compose.yml模板文件,来定义一组相关联的应用容器,帮助我们来实现多个相互关联的Docker容器快速部署。