原创

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-ce-18.09.1 ,而不是 3:18.09.1-3.el7。
启动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

正文到此结束
本文目录