0%

docker

基本概念

Docker 类似一个虚拟机(实际有差别,虚拟机需要翻译,docker只是环境隔离,性能上会比虚拟机好)。

在docker中有几个基本的概念。

1、镜像:类似于平时使用的iso或者image镜像文件。

2、容器:容器其实就会类似于虚拟机

3、tar文件:类似于vmdk文件,可以直接打个包在别的地方直接run运行。

4、Dockerfile。docker 的一些配置

5、仓库:存放有很多已经打包好的镜像,MySQL镜像、ngnix镜像等。

image-20201220085110478

常用的操作命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 直接从远程仓库下载mysql镜像
docker search mysql # 查找mysql镜像
docker pull mysql # 拉取mysql镜像
# 等价于命令docker pull mysql:latest,不指定版本会直接默认下载最新的版本镜像。

# 查看本地的镜像
docker images
# 删除镜像,注意:如果有容器示例正在使用该镜像则是无法删除,需要先停止删除容器示例。
docker rmi <imagesID>

# 运行容器
docker run -d 3307:3306 mysql
# -d 指定后台运行不阻塞当前shell窗口
# -p 指定内外部端口映射 外部:内部

# 查看正在运行的容器,查看活跃的容器。
docker ps
# 查看所有的容器(包括运行和不运行的)
docker ps -a

# 进入容器
docker exec -it id bash

# 启动停止容器
docker stop <容器ID>
docker restart <容器ID>

# 删除docker实例
docker rm -f 实例ID

# 保存容器镜像
docker commit 实例ID 新的名字

# 导入tar镜像
docker load < test.tar
docker load -i test.tar

# 将docker镜像报错成tar包
docker save repository:1.0 > /root/test.tar
docker save ab2f358b8612 -o /root/my.tar

# 查看docker的相关信息
docker info

# 查看docker网络
docker network ls

# 查看某个容器的详细信息
docker inspect containerid
image-20201220085110478

制作docker镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 安装一个minimal版本的操作系统
# 2. 安装依赖的包
# 3. 将服务器打包成一个docker镜像
tar -cvpf /tmp/centos8.2.tar --directory=/ --exclude=/proc --exclude=/dev --exclude=/run --exclude=/tmp --exclude=/root
--exclude=/home --exclude=/var/crash /

# 将镜像tar包导入到docker images镜像中
docker import centos8.2.tar

# 刚导入的镜像仓库和标签显示none,可以打印
docker tag 'IMAGE ID' 仓库地址:标签

# 上传镜像
docker push repository:tag

常见问题

在docker容器内出现命令没有的情况

1.执行命令apt-get update

更新/etc/apt/sources.list/etc/apt/sources.list.d目录下的源索引,更新软件包,

2、安装对应的软件包。

例如vim没有安装命令找不到,可以直接执行命令安装apt-get install vi

3、宿主机
检查/etc/docker/daemon.json文件dns是否正常。

1
2
3
4
{
"registry-mirrors":["https:adada.com"], //镜像源
"dns":["114.114.114.114", "8.8.8.8"] //dns
}
小主,路过打个赏再走呗~