Docker学习笔记
基础知识
版本
● 社区版 ce
● 企业版 ee
文档
● https://docs.docker.com/get-docker/
安装
查看centos版本,docker新版本要求必须centos7.x以上
[ictuser@ictweb ~]$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
/var/lib/docker/ 的内容(包括映像,容器,卷和网络)被保留,需要手动删除该文件。 Docker Engine-Community软件包现在称为docker-ce。
设置存储库
安装所需的软件包。 yum-utils提供了yum-config-manager实用程序,devicemapper存储驱动程序需要device-mapper-persistent-data和lvm2。
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用以下命令来设置稳定的存储库。
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装docker-ce
安装最新版本docker社区版
sudo yum install docker-ce docker-ce-cli containerd.io
执行完命令以后,Docker已安装但尚未启动。 docker组已创建,但没有用户添加到该组。
安装指定版本的docker
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
请注意
启动Docker
$ sudo systemctl start docker
使用 hello-world 测试docker
$ sudo docker run hello-world
数据源
修改或新增 /etc/docker/daemon.json
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
执行
启动停止
docker命令
● 启动 systemctl start docker
● 守护进程重启 sudo systemctl daemon-reload
● 重启docker服务 systemctl restart docker
● 重启docker服务 sudo service docker restart
● 关闭docker service docker stop
● 关闭docker systemctl stop docker
容器命令
● docker ps -a 查看本地所有运行的容器
● docker ps 产看正在运行的容器
● docker start 容器id 运行容器
● docker rm 容器id 移出容器
● docker ps // 查看所有正在运行容器
● docker stop containerId // containerId 是容器的ID
● docker ps -a // 查看所有容器
● docker ps -a -q // 查看所有容器ID
● docker stop $(docker ps -a -q) // stop停止所有容器
● docker rm $(docker ps -a -q) // remove删除所有容器
导入导出命令
涉及的命令有export、import、save、load
save
命令
docker save [options] images [images...]
示例
docker save -o nginx.tar nginx:latest
或
docker save > nginx.tar nginx:latest
其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名
load
命令
docker load [options]
示例
docker load -i nginx.tar
或
docker load < nginx.tar
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
export
命令
docker export [options] container
示例
docker export -o nginx-test.tar nginx-test
其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名
import
命令
docker import [options] file|URL|- [REPOSITORY[:TAG]]
示例
docker import nginx-test.tar nginx:imp
或
cat nginx-test.tar | docker import - nginx:imp
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。
建议 可以依据具体使用场景来选择命令
若是只想备份images,使用save、load即可
若是在启动容器后,容器内容有变化,需要备份,则使用export、import