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

ubuntu apt install无法安装docker_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

ubuntu apt install无法安装docker_Docker_02


docker pull

ubuntu apt install无法安装docker_Docker_03

# 下载镜像 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

ubuntu apt install无法安装docker_docker_04

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