1. Docker & Docker Compose
1.1. Docker
1.1.1. Docker安装
sudo apt install docker.io
1.1.2. Docker修改国内镜像加速器
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://rqmllol4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1.1.3. Docker常用命令
1.1.3.1 测试
# 测试
docker run hello-world
# 查看已经下载的镜像(从这里可以查看已有镜像的id)
root@iZuf6d10hr1juftyljjsivZ:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 8 months ago 13.3kB
1.1.3.2 镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search #搜索镜像
docker pull #下载镜像 docker image pull
docker rmi #删除镜像 docker image rm
docker search
docker pull
# 下载镜像 docker pull 镜像名[:tag]
root@iZuf6d10hr1juftyljjsivZ:~# docker pull tomcat:8
8: Pulling from library/tomcat #如果不写tag,默认就是latest
90fe46dd8199: Already exists #分层下载: docker image 的核心 联合文件系统
35a4f1977689: Already exists
bbc37f14aded: Already exists
74e27dc593d4: Already exists
93a01fbfad7f: Already exists
1478df405869: Pull complete
64f0dd11682b: Pull complete
68ff4e050d11: Pull complete
f576086003cf: Pull complete
3b72593ce10e: Pull complete
Digest: sha256:0c6234e7ec9d10ab32c06423ab829b32e3183ba5bf2620ee66de866df # 签名防伪
Status: Downloaded newer image for tomcat:8
docker.io/library/tomcat:8 #真实地址
#等价于
docker pull tomcat:8
docker pull docker.io/library/tomcat:8
docker images
root@iZuf6d10hr1juftyljjsivZ:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest e1d7dc9731da 2 weeks ago 544MB
hello-world latest bf756fb1ae65 8 months ago 13.3kB
# 解释
#REPOSITORY # 镜像的仓库源
#TAG # 镜像的标签(版本) ---lastest 表示最新版本
#IMAGE ID # 镜像的id
#CREATED # 镜像的创建时间
#SIZE # 镜像的大小
docker rmi
docker rmi -f 镜像id #删除指定id的镜像
root@iZuf6d10hr1juftyljjsivZ:~# docker rmi -f f19c56ce92a8
docker rmi -f $(docker images -aq) #删除全部的镜像
root@iZuf6d10hr1juftyljjsivZ:~# docker stop $(docker ps -a -q)
1.1.3.2 容器命令
docker run 镜像id #新建容器并启动,这里是新建
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
docker start 容器id #启动容器,这里是启动
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
docker ps -a #查看所有容器,包括已经停止的容器
退出容器
exit #容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作
删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
root@iZuf6d10hr1juftyljjsivZ:~# docker run -it centos /bin/bash
[root@ffc694f6fa0a /]# exit
# 这里如果是exit就是容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作
后台启动命令
# 命令 docker run -d 镜像名
docker run -d -p 8080:8080 --name tomcat01 tomcat
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker run -d centos
a8f922c255859622ac45ce3a535b7a0e8253329be4756ed6e32265d2dd2fac6c
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 问题docker ps. 发现centos 停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -ft 容器id #跟着日志,跟踪容器内部的命令行控制台
docker logs -t --tail 10 容器id #显示最近几行的日志
查看容器中进程信息
docker top ffc694f6fa0a #相当于在容器内部执行top命令
查看镜像的元数据
# 命令
docker inspect 容器id
进入当前正在运行的容器
我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 方式一
docker exec -it 55321bcae33d /bin/bash
# 方式二
docker attach 55321bcae33d
#docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用)
#docker attach # 进入容器正在执行的终端
从容器内拷贝到主机上
root@iZuf6d10hr1juftyljjsivZ:~# docker cp ffc694f6fa0a:/text.txt .
root@iZuf6d10hr1juftyljjsivZ:~# ls
azure catalina.home_IS_UNDEFINED collector text.txt universal_reading-0.0.1.jar
root@iZuf6d10hr1juftyljjsivZ:~# cat text.txt
test
镜像备份与迁移
我们可以通过save命令将镜像打包成文件,拷贝给别人使用
docker save -o 保存的文件名 镜像名
docker save -o ./ubuntu.tar ubuntu
在拿到镜像文件后,可以通过load方法,将镜像加载到本地
docker load -i ./ubuntu.tar
2.1. 参考文档
[进阶] https://blog.csp1999.top/blog/blog/29
[视频] https://www.bilibili.com/video/BV1kv411q7Qc