什么是docker:
- Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
docker 安装:
- 卸载旧版本:
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
- 安装新版本:
#执行以下命令安装依赖包
$ sudo yum install -y yum-utils
# 执行下面的命令添加 yum 软件源:
$ sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# 官方源
# $ sudo yum-config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo
#更新 yum 软件源缓存,并安装 docker-ce
$ sudo yum install docker-ce docker-ce-cli containerd.io
docker镜像操作
-
启动docker:
sudo systemctl start docker
-
获取镜像:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
例子:docker pusll centos:8
-
运行镜像:
docker run {容器id或容器名称}
启动容器命令参数:- 定义容器名称
--name
可定义容器的名称,比如docker run -d -i -t --name my_python python
,启动容器并命名为my_python - 守护模式启动
-d
: 参数内增加-d则是以守护模式启动,比如docker run -d mysql
,以守护模式启动mysql - 交互模式启动容器
-i -t
: 以交互模式启动容器,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开,比如docker run -i -t -d python bash
以交互模式启动python - 映射容器端口
-p
: 使用-p参数可将容器内的端口映射到主机的端口,这样我们通过映射到主机的端口就可以访问到容器内的端口,比如docker run -d -p 127.0.0.1:81:80 nginx:alpine
,这样我们就可以通过127.0.0.1:81访问到容器内的80端口了,且可使用多个-p来映射多个端口,比如docker run -d -p 81:80 -p 433:433 nginx:alpine
;注意假如要绑定 UDP 端口需要在端口号后面加 /udp,比如docker run -d -p 127.0.0.1:81:80/udp nginx:alpine
- 挂载主机目录
-v
: 使用-v参数可以将主机任意目录挂载到docker容器中,即使删除容器,数据也会保存在主机,格式-v 主机目录:docker内要挂载主机的目录
,比如docker run -i -t -d -v /src/webapp:/usr/share/nginx/html nginx:alpine
,该命令加载主机的 /src/webapp 目录到容器的 /usr/share/nginx/html目录
- 定义容器名称
-
获取当前已下载的镜像:
docker image ls
-
删除本地镜像:
docker image rm [选项] <镜像1> [<镜像2> ...]
例子:docker image rm python
解释:删除python镜像
docker容器操作
- 获取所有容器运行状态:
docker ps -a
运行状态详解如下图:
- 停止容器运行:
docker stop {容器id或容器名称}
例子:docker stop python
解释:停止python容器 - 启动容器:
docker start {容器id或容器名称}
例子:docker start python
解释:启动python容器 - 删除容器:
docker rm {容器id或容器名称}
例子:docker rm python
解释:删除python容器 - 进入容器:
docker exec -it {容器id或容器名称} bash
例子:docker exec -it python
解释:进入python容器 - 导出容器:
docker export {容器id或容器名称} >{导出的文件名}
例子:docker exprot python >python310.tar
解释:将python容器导出为python310.tar - 导入容器:
cat {要导入的文件} | docker import - {镜像名称}
例子:cat python310.tar | docker import - python3
解释:将 python310.tar导入为python3镜像,此时使用docker image ls
会发现出现python3名称的镜像 - 查看容器内进程信息:
docker top {容器id或容器名称}
例子:docker top python
解释:查看python容器下的进程信息 - 查看容器内的日志:
docker logs -f {容器id或容器名称}
例子:docker logs -f python
解释:查看python容器内的日志信息 - 复制容器内的文件到主机:
docker cp {容器id}:{容器文件地址} {要复制文件到主机的位置}
,
例子:docker cp f13:/root/test.txt /home
解释:将容器id-f13内root目录下的test.txt 文件拷贝到主机的home目录下 - 复制主机的文件到容器内:
docker cp {要复制文件到主机的位置} {容器id}:{容器文件地址}
,
例子:docker cp /home/test.txt f13:/root
解释:将主机的home目录下的test.txt文件拷贝到容器id为f13的root目录下