启动docker服务
systemctl start docker
查看docker状态
systemctl status docker
停止docker
systemctl stop docker
重启
systemctl restart docker
开机启动docker
systemctl enable docker
Docker镜像相关命令
查看本地镜像
sudo docker images
TAG:版本(默认是latest)
搜索
sudo docker images
下载redis
sudo docker pull redis
若要指定版本,去dockerhub官网,搜索:hub.docker.com
sudo docker pull redis:5.0
删除 镜像
通过id删除
sudo docker rmi 7614ae9453d1
通过名字删除
sudo docker rmi redis:latest
删除所有镜像
Docker容器相关命令
创建容器
sudo docker run -it --name c1 redis:5.0 /bin/bash
-i :保持容器一直运行
-t : 给容器分配一个终端,可以接收命令
--name=c1(= 也可以换为空格)
redis:5.0: 选择一个镜像
/bin/bash:进入容器的初始化指令(相当于打开shell)
此时已经进入容器内部。
退出容器
exit
查看正在运行的容器
sudo docker ps
如果通过-it创建的容器,一退出就会关闭,ps指令看不到。如果想看历史容器,需要使用
sudo docker ps -a
第二种方式创建容器:
sudo docker run -id --name=c2 redis:5.0
-d:后台运行创建容器。(不会立刻进入容器,需要命令才能进入。通过exit不会自动关闭)
进入容器:
sudo docker exec -it c2 /bin/bash
退出后容器还是up状态,没有关闭
总结
停止容器
sudo docker stop c2
启动容器
sudo docker start c2
删除容器
sudo docker rm c1
删除所有容器(· 是 ~ 不加shift打出来的,不是单引号)
sudo docker ps -aq
sudo docker rm ·sudo docker ps -aq·
注意:正在运行的容器不能被删除
查看容器信息
sudo docker inspect c2
总结:
容器的数据卷
思考:
1:Docker容器删除后,在容器中产生的数据还在吗?
不在了
2:在宿主机(linux虚拟机)创建一个Docker容器,Docker容器和外部机器(Windows)可以直接交换文件吗?
不可以(宿主机和外部机器可以)
3:容器之间想要进行数据交互怎么做?
数据卷
配置数据卷
示例
sudo docker run -it --name=c1 -v /home/miao/study/dockerStudy/test1/data:/root/data_container ubuntu /bin/bash
测试:
在宿主机data目录下创建文件,容器中也会同步创建
在容器中写入文件,宿主机也会同步。
将容器删除后宿主机中数据仍然存在
可重新挂载
挂载多个目录
sudo docker run -it --name=c3 -v /home/miao/study/dockerStudy/test1/data:/root/data2 -v /home/miao/study/dockerStudy/test2/data:/root/data3 ubuntu
两个容器挂载同一个数据卷,实现两个容器的数据交换
将/home/miao/study/dockerStudy/data 当做数据卷
创建第一个容器
创建第二个容器
在c5中写入数据,在c4中同步存在
数据卷容器
示例:
先创建数据卷容器c3
sudo docker run -it --name=c3 -v /volume ubuntu
查看c3信息
创建c1 c2 容器
sudo docker run -it --name=c1 --volumes-from c3 ubuntu
sudo docker run -it --name=c2 --volumes-from c3 ubuntu
在c2中创建txt文件,c1 c3中会同步
对比c1 c2 c3信息
应用部署
示例:
登录mysql
使用SQLyog连接
宿主机ip:192.168.149.135
镜像
例如:下载的时候分层下载
镜像制作
示例:
注意:id 可以不写全,有区分性就行
压缩:
sudo docker save -o miao.tar miao_images:1.0
通过ll命令查看
删除 miao_images,再通过压缩文件还原
注意:新的镜像包含部分改变,不是目录挂载的都可以生效。
例如:ubuntu20.04的dockerfile
示例:
第四行写错了:应该是CMD java -jar app.jar
1:准备一个程序包
2. 编写dockerfile文件
构建镜像
查看images, 创建容器并且做端口映射
案例(将centos7改为ubuntu):
编写dockerfile
vim ubuntu_dockerfile
build
sudo docker build -f ./ubuntu_dockerfile -t miao_images:1.0 .
-f:指定dockerfile 的文件路径
-t:设置新镜像的名称以及版本
根据创建的镜像创建容器
sudo docker run -it --name=c2 miao_images:1.0
创建成功。
参考:黑马程序员Docker教程。