Docker基本使用教程
前言
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
Docker安装
1.使用官方安装脚本自动安装
安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
2.手动安装
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
使用以下命令来设置稳定的仓库(三选一)。
# 官方源(比较慢)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 清华源
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd。
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker # 启动docker
sudo systemctl status docker # 查看docker状态
sudo systemctl enable docker # 设置开机自启动
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
sudo docker run hello-world
卸载 docker
删除安装包:
yum remove docker-ce
删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker
3.离线安装(无外网环境)
下载地址:https://download.docker.com/linux/static/stable/x86_64/
(例如我下载的是docker-20.10.9.tgz)
tar -zxvf docker-20.10.9.tgz # 解压产品包
sudo cp docker/* /usr/bin/ # 拷贝到/usr/bin目录
sudo dockerd & # 启动Docker守护进程
docker info # 验证是否安装成功,若正常打印版本信息则安装成功
将docker注册为系统服务方便后续管理
sudo vi /usr/lib/systemd/system/docker.service #配置文件中添加如下内容
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
启动/停止 docker 服务
systemctl start/stop docker
开机自启/取消开机自启 docker 服务
systemctl enable/disable docker
Docker使用
1.镜像使用
DockerHub 是一个由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。
可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为:https://hub.docker.com/
也可以使用docker search
命令来搜索镜像
docker search <image name>
通过docker pull
命令拉取Docker镜像
docker pull <image name>
查看当前系统上所有Docker镜像
docker images
各个选项说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
删除镜像(需先删除该镜像下所有容器)
docker rmi <image name>
导出镜像
docker save <image name> > <存储路径>
导入镜像
将导出的镜像tar包导入到其它Docker服务器上
docker load < <镜像tar包路径>
此时可以看到导入的镜像没有仓库名和标签
为该镜像添加仓库名和标签
2.容器使用
使用镜像创建一个容器,参数为以命令行模式进入该容器
docker run -itd <image name> /bin/bash
参数说明:
- -i: 交互式操作。
- -t: 终端。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
- -d: 后台运行。
要退出终端,直接输入exit
查看所有容器
docker ps -a
查看已启动的容器
docker ps
容器的启动/停止(容器ID可只输入前几位)
docker start <container ID> # 启动容器
docker stop <container ID> # 停止容器
docker kill <container ID> # 停止容器
docker restart <container ID> # 重启容器
docker stop
关闭容器,会发送停止命令,并允许该容器处理后续的数据,因此该命令运行后至容器关闭需要大概3-5秒的时间,且当再次启动该容器后进程号不变;
docker kill
直接“杀死”容器,该命令会强制容器停止运行,因此该命令执行后Docker容器会被瞬间关闭,再次启动后会生成新的进程,因此进程号发生改变。
进入容器
- docker attach:退出容器会关闭该容器
- docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
docker exec -it <container ID> /bin/bash
删除容器
docker rm <container ID>
3.文件操作
上传文件
docker cp SRC_PATH CONTAINER ID:DEST_PATH
例:
docker cp /root/test.txt ecef8319d2c8:/root/
该命令的意思是将当前操作系统(Linux)家目录(root)下的文件test.txt拷贝到容器id为ecef8319d2c8的家目录(root)文件夹下。如果是win系统的话请替换为win下的合法路径(例如:D:/test.txt)。
下载文件
docker cp CONTAINER:SRC_PATH DEST_PATH
例:
docker cp ecef8319d2c8:/root/test.txt /root/
该命令的意思是将容器id为ecef8319d2c8的家目录(root)文件夹下的文件test.txt拷贝到当前操作系统(Linux)家目录(root)下。如果是win系统的话请替换为win下的合法路径(例如:D:/test.txt)。
Docker的相关使用
Docker搭建DB2数据库
之前的博客已经记录,地址如下:https://www.cnblogs.com/werr370/p/16072984.html
Docker安装CentOS容器并配置静态ip
之前的博客已经记录,地址如下:https://www.cnblogs.com/werr370/p/17353411.html