docker安装使用记录(极简版)
用到哪里写到哪里吧,随着使用的深入以后还会更新这篇文章
参考文章传送门:
Docker简介
docker介绍
Docker是一个可以用来装web应用的容器。Docker这个词的本义是码头工人,主要工作就是搬运那些“集装箱”,将它们搬运到相应的目的地去。Docker拥有着一个“超级码头”,或者说一个巨大的物流中心,我们可以把我们的“集装箱”push到这个超级码头去,以便我们在另一个码头时可以将它直接pull过来,而不是就地复刻一个曾经我们拥有过的集装箱。
有些文章中会拿docker和虚拟机作对比,深入而又透彻,什么使用了LXC技术,不需要HyperV转换之类的,这里我就不再赘述了,总结来说就是docker容器更为轻量,运行起来更为快速。
镜像
镜像,英文image,也就是上面我们提到的”集装箱“,我们的那个”超级码头“也就是镜像源。镜像的联合文件系统我也不再在这里赘述,感兴趣可以自行跳入上面的传送门去了解。
容器
容器,英文名container,可以理解为镜像的实例化。镜像是不可编辑的,容器是可以编辑的。我们可以用一个镜像生成多个容器。容器与容器之间互不干扰。
Docker安装
说明:笔者电脑系统为Ubuntu 24.04 LTS,下面的操作都在root权限下进行
卸载旧版
如果以前安装过,那么先卸载一下旧版docker,没有则无需卸载
1 | apt-get remove docker docker-engine docker.io containerd runc |
安装证书
1 | apt update |
1 | apt-get install ca-certificates curl gnupg lsb-release |
1 | curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - |
写入软件源
1 | sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" |
安装docker
1 | sudo apt-get install docker-ce docker-ce-cli containerd.io |
启动docker
1 | systemctl start docker |
安装一些工具
1 | apt-get -y install apt-transport-https ca-certificates curl software-properties-common |
重启一下docker
1 | service docker restart |
配置阿里云镜像加速器
登录你的阿里云账号,传送门
点左上角三条杠–容器–容器镜像服务ACR–镜像工具–镜像加速器
网站上已经详细地说明了操作步骤,这里我还是将它一步一步分开说一下
/etc/docker应该是已经存在了,如果没有的话就用下面的命令去创建一下
1 | mkdir -p /etc/docker |
在/etc/docker路径下创建一个叫daemon.json的文件,编辑其内容如下:
1 | { |
重新加载一下daemon
1 | service docker restart |
重启docker
1 | systemctl restart docker |
测试安装是否成功
我们先拉取一个hello-world的镜像
1 | docker pull hello-world |
运行一下
1 | docker run hello-world |
如果出现以下界面,则说明安装成功
Docker简单命令
拉取镜像
1 | docker pull 镜像名 |
删除本地镜像
1 | docker rmi 镜像名 |
查看本地拥有的镜像
1 | docker images |
用某一镜像开启一个容器
1 | docker run 镜像名 |
开启容器时在后台运行
1 | docker run -d 镜像名 |
查看当前运行中的容器
1 | docker ps |
查看存在的容器(包括不在运行中的)
1 | docker ps -a |
停止运行某一容器
1 | docker stop 容器ID(可通过上面的ps命令看到,可仅写ID的前几位) |
删除某一容器
1 | docker rm 容器ID |
进入某一容器,以bash界面运行
1 | docker exec -it 容器ID bash |
想退出容器,则输入
1 | exit |
Docker网络
说明:下文中客户端ip:192.168.3.18,服务端ip:192.168.3.25
这里简述一下如何在docker中跑一个对外的web服务,用nginx镜像举例
首先pull一下nginx的镜像
1 | docker pull nginx |
如果我们想让服务跑在服务端主机的11451端口,容器内跑在80端口,那么得用如下命令,在启动容器时做一个端口映射。注意记得开启服务端主机的11451端口。
1 | docker run -d -p 11451:80 nginx |
这里我们可以看一下这个容器的ID和运行情况
1 | docker ps -a |
可以看到已经成功运行了。
此时我们就可以用客户端浏览器去访问服务端的11451端口了,如果看到如下页面,那么就说明成功了。
Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。
dockerfile中的指令及其作用:
要通过dockerfile构建镜像,首先切到dockerfile所在的目录下,然后执行下面的命令:
1 | docker build -t 自定义镜像名 . |