目录
一、Docker服务相关命令
二、镜像相关命令
-查看镜像:查看本地所有的镜像
-搜索镜像:从网络中查找需要的镜像
-拉取镜像
-删除镜像
三、容器相关命令
-查看容器
-创建容器
-进入容器
-启动容器
-停止容器
-重启应用
-删除容器
-查看容器信息
四、docker 容器的数据卷
数据卷作用
配置数据卷
数据卷容器
数据卷小结
五、docker应用部署
1、mysql部署
补充:
一、docker宿主主机与容器互相传输文件方式
二、本地与远程的文件互相传输
三、linux下文件查找
四、查看进程和端口
-启动docker 服务
systemctl start docker
-停止docker服务
systemctl stop docker
-重启docker服务
systemctl restart docker
-查看docker服务状态
systemctl status docker
docker images #查看本地所有的镜像
docker images -q #查看所有镜像的id
docker search 镜像名称
eg:docker search redis
从docker仓库下载镜像到本地,镜像名称格式为【名称:版本号】,如果版本号不指定则是最新的版本,如果不指定镜像版本,可以去docker hub搜索。
docker pull 镜像名称[:版本号]
删除本地镜像
docker rmi 镜像id #删除指定本地镜像
docker rmi `docker images -q` #删除本地所有镜像
docker ps #查看正在运行的容器
docker ps -a #查看所有的容器
docker run 参数
eg: docker run -it --name=r1 redis:6.2
docker start 容器id
docker stop 容器id
docker-compose down && docker-compose up -d
docker rm 容器id :删除已经停止的容器
docker rm -f 容器id :强行删除容器
分别执行 hostname、ip addr、env 这三个命令可以获取相关信息
第1种:进入容器内部获取信息
docker exec -it 容器id /bin/bash
第2种:执行docker exec命令
docker exec 容器id hostname
docker exec 容器id ip addr
docker exec 容器id env
第3种:使用docker inspect命令(推荐)
docker inspect 容器名
思考:
数据卷******
创建启动容器时,使用-v参数设置数据卷
docker run ... -v 宿主机目录(文件): 容器内目录(文件)
eg: docker run -it --name=mysql -v /root/data/jcx:/root/container 96d0eae5ed60 /bin/bash
示例:多个容器挂载同一个数据卷,实现不同容器之间的数据交换
容器1: docker run -it --name=A -v /root/jcx:/root/container/data1 mysql /bin/bash
容器2: docker run -it --name=B -v /root/jcx:/root/container/data2 mysql /bin/bash
说明:将容器A和容器B都挂载到数据卷/root/jcx下,实现A、B数据之间同步。
多容器进行数据交换
目标:在docker容器中部署mysql,并通过外部mysql客户端操作mysql server.
实现步骤
操作步骤:
在/root 目录下创建mysql目录用于存储mysql数据信息
mkdir /root/mysql
cd /root/mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
docker exec -it c_mysql /bin/bash
mysql -uroot -p123456
Windows上用navicat连接docker上部署的mysql 服务
用宿主机的ip + 宿主机上数据卷的端口
eg: 192.168.10.7:3307 用户名密码:root/123456
1、从宿主机器copy文件到容器里
docker cp 要拷贝的文件路径 容器名:容器里的路径
docker cp /jcx/arthas-boot.jar 容器id:/jcx/
2、从容器copy文件到宿主机
docker cp 容器id:/容器里文件路径 宿主机路径
docker cp 容器id:/jcx/a.txt /jcx/
说明:不管容器有没有启动,拷贝命令都会生效。
scp命令:scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的
1、从本地复制到远程
在本地服务器上将/root/lk目录下所有的文件传输到服务器43.224.34.73的/home/lk/cpfile目录下,命令为:
scp -r /root/lk [email protected]:/home/lk/cpfile
2、从远程复制到本地
在本地服务器上操作,将服务器43.224.34.73上/home/lk/目录下所有的文件全部复制到本地的/root目录下,命令为:
scp -r [email protected]:/home/lk /root
1、find ***********
在指定目录下查找(常用)
【语法】find path -name filename
find / -name redis
find / -name redis* #模糊匹配
find / -mmin -20 #最近20分钟内修改的文件
find / -mtime -1 #最近一天内修改的文件
2、which
which 从环境变量文件(/etc/profile)中的path目录中查找,且witch找的都是可执行文件
which redis
3、locate
linux系统每天至少自动扫描一次文件,将结果保存到数据库,locate查的是数据库记录。locate查询比find要快,但最新文件如果在数据库中没有记录,是需要手动更新(updatedb)
locate redis
4、whereis
与which类似查询【可执行文件】,whereis查询更多,会查找出相关的man文件
whereis redis
1、linux查询端口
netstat -anp #显示所有已开放端口
netstat -anp | grep 80 #查询指定端口通过grep过滤
netstat -tnlp #显示tcp的端口和进程等相关情况
说明:
2、杀掉占用端口的进程
kill -9 pid
3、Linux查看某个服务是否启动
ps -ef | grep redis