目录
3、查看本地已拉取的镜像 —— docker image ls / docker images
4、搜索站点内的镜像资源 —— docker search 镜像名
三、修改镜像的标签 —— docker tag 镜像ID 新repository:新tag
四、启动容器(拉取+启动)—— docker run -itd repository名
1、启动容器并给容器自定义命名 —— docker run --name "自定义名字" -itd 镜像名
2、启动容器运行指定命令后自动退出并删除 —— docker run --rm -it 镜像名 bash -c "执行的命令"
八、删除一个镜像 —— docker rmi repository:tag
九、进入一个容器内部 —— docker exec -it 容器name bash
十、宿主机和容器内文件的相互传输(格式和scp类型)——docker cp 宿主目录 容器NAME:容器目录
十一、端口映射(容器内映射到宿主机上)—— docker run -p 外port:内port
一、简述
win系统常用Ghost技术来做镜像,把系统和系统上安装的应用程序一起打包做备份,在别的电脑上安装这个GHO镜像则会有和源系统一摸一样的系统和应用。
docker功能类似,而且是分层的,在拉取镜像时候可见。
docker镜像拉取下来后,可以直接运行,运行后的东西我们叫容器,一个镜像可以启动很多容器。
容器就是镜像启动后的状态,在linux系统里看就是一个进程。
容器可以进入,就如同进入一个虚拟机一样。
二、拉取镜像
1、配置加速器
-
/etc/docker/daemon.json上进行配置
官方地址是 hub.docker.com , 但我们可以自己配置一个阿里云镜像站加速。
这个镜像站可以去阿里云后台申请。
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
查看 daemon.json
配置完生效需要重启 systemctl restart docker
-
是否配置生效的验证
docker info 里会显示registry mirrors 一项
发生错误的话可以看debug信息
dockerd --debug 这个报错是正常的,因为在运行所以守护程序没启动。
2、拉取镜像 —— docker pull 镜像名
这个busybox是单层的镜像
redis是多层的镜像
3、查看本地已拉取的镜像 —— docker image ls / docker images
TAG 通常是版本号,最新版就是latest
IMAGE ID 镜像独有自己的ID
4、搜索站点内的镜像资源 —— docker search 镜像名
official 是官方的
要搜索镜像具体的版本,可以去官网 https://hub.docker.com/ 搜索,点击 tag 查看
docker pull nginx:1.23.2 拉取指定版本的nginx镜像
三、修改镜像的标签 —— docker tag 镜像ID 新repository:新tag
也可以写成: docker tag 旧repository:旧tag 新repository:新tag
IMAGE ID 是唯一确定容器身份的,新tag的名字虽然不一样但是image id 会是一样的。
修改镜像的tag会产生一个新的image记录,但是用的镜像id是一样的。
四、启动容器(拉取+启动)—— docker run -itd repository名
-i 让容器的标准输入打开
-t 表示分配一个伪终端
-d 表示后台启动
启动时打印显示的 container id 是完整的,docker ps 中查看到的只是ID的一部分,但是依然可以用于执行容器操作。
实际上启动时候会先从本地寻找这个镜像,如果没有会先自动去拉取,拉取完后启动。
1、启动容器并给容器自定义命名 —— docker run --name "自定义名字" -itd 镜像名
有了name以后,操作容器既可以用 CONTAINER ID 也可以用NAMES
就好像操作镜像时候既可以用 也可以用 REPOSITORY:TAG
2、启动容器运行指定命令后自动退出并删除 —— docker run --rm -it 镜像名 bash -c "执行的命令"
作用:只是为了运行容器里的某些指令,执行完以后,自动会退出并删除容器
五、查看容器启动状态 —— docker ps -a
加了-a可以看到未启动的容器
六、停止容器 —— docker stop 容器id
七、删除一个容器 —— docker rm 容器id
需要先stop停止这个容器。
如果未停止就要强行删除,加-f 选项(force)
八、删除一个镜像 —— docker rmi repository:tag
一个镜像文件可能起了几个tag(image id 一致的多个tag的镜像),这时用 镜像id 删除会报错,需要用 docker rmi repository:tag 方式来删除,但这时因为该镜像还有别的tag所以只会删除该tag的镜像记录而已,并没有把该镜像文件完全删除去。
当镜像只有唯一的tag的时候,可以使用 docker rmi 容器id 的删除方式。
当镜像不是tag的时候,需要加 -f 强制一次性删除该镜像id相关的所有tag的镜像。
九、进入一个容器内部 —— docker exec -it 容器name bash
1、bash启动不了时,则可用 sh 替代
容器和宿主机内核一样,说明是共享了一个内核
容器里的 hostname 就是 容器ID
十、宿主机和容器内文件的相互传输(格式和scp类型)——docker cp 宿主目录 容器NAME:容器目录
在挂载点目录下的文件可以直接查看,非挂载目录下的文件需要通过命令传输。
宿主机——>容器
docker cp 宿主机目录文件 容器NAME:容器内目录
容器 —— > 宿主 机
docker cp 容器NAME:容器内目录文件 宿主机目录
十一、端口映射(容器内映射到宿主机上)—— docker run -p 外port:内port
1、指定映射的端口
docker run -itd -p 宿主机端口:容器内端口 --name XXX 镜像名 bash
把容器内的80端口映射到宿主机上的8088端口,则直接能从宿主机的8088端口访问容器80端口。
docker ps 中也能看到映射的端口
2、自动映射端口
自动 把容器已暴露的端口 随机映射 到宿主机上
docker run -itd -P --name XXX 镜像名 bash
丶实验例子:
ubantu很纯洁,先下载update才能使用install
ubuntu 的apt相当于nginx的yum