Docker从安装到使用(根据Spring Cloud与Docker微服务实战一书总结)
目录
4.Docker常用命令
5.Docker容器常用命令
1.Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包、测试以及部署应用程序,并可缩短从编写到部署运行代码的周期。
2.Docker可分为两种版本:Docker EE(企业版)和Docker CE(社区版)。Docker CE是免费的Docker产品的名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。
3. 安装Docker
3.1 CentOS安装:
在CentOS中,老版本Docker的软件包名是docker或docker-engie,而Docker CE的软件包名称是docker-ce。因此,若已安装过老版本的Docker,需使用如下命令卸载。
sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine
需要注意的是,执行该命令只会卸载Docker本身,不会删除Docker存储的文件,例如镜像、容器、卷以及网络文件等。这些文件保存在/var/lib/docker目录中,需要手动删除。
安装仓库
3.1.1.执行以下命令,安装Docker所需的包。其中,yum-utils提供了yum-config-manager工具;device-mapper-persistent-data及lvm2则是devicemapper存储驱动所需的包。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.1.2.执行如下命令,安装stable仓库。必须安装stable仓库,即使你想安装edge或test仓库中的Docker构建版本。
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
注意后面的地址链接可以换成阿里云的路径:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.1.3.[可选]执行如下命令,启用edge及test仓库。edge/test仓库其实也包含在了docker.repo文件中,但默认是禁用的,可使用以下命令启用。
sudo yum-config-manager --enable docker-ce-edge #启用edge仓库
sudo yum-config-manager --enable docker-ce-test #启用test仓库
若需再次禁用,可加上--disable标签。例如,执行如下命令即可禁用edge仓库。
sudo yum-config-manager --disable docker-ce-edge
安装Docker CE
3.2.1.执行以下命令,更新yum的包索引
sudo yum makecache fast
3.2.2.执行如下命令即可安装最新版本的Docker CE
sudo yum install docker-ce
3.2.3.在生产环境中,可能需要指定想要安装的版本,此时可使用如下命令列出当前可用的Docker版本。
yum list docker-ce.x86_64 --showduplicates | sort -r
列出版本后,可使用如下命令安装想要安装的Docker CE版本。
sudo yum install docker-ce-<VERSION>
3.2.4.启动Docker。
sudo systemctl start docker
3.2.5.验证安装是否正确。
sudo docker run hello-world
然后Docker将下载测试镜像,并使用该镜像启动一个容器。如能够看到类似如下的输出,说明安装成功。(下图为转载借用)
3.2.6.升级Docker CE
sudo yum makecache fast
然后按照安装Docker的步骤,即可完成升级。
3.2.7.卸载
sudo yum remove docker-ce
若需删除Docker存储的文件,例如镜像、容器、卷等信息,需执行如下命令:
sudo rm -rf /var/lib/docker
4. Docker常用命令
4.1.1 搜索镜像
可使用docker search命令搜索存放在Docker Hub中的镜像.
命令格式: docker search [OPTIONS] TERM
示例:
docker search java
执行该命令后,会在Docker Hub中搜索含有java 这个关键词的镜像仓库。
4.1.2 下载镜像
命令格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
示例 1:
docker pull java
执行该命令后,Docker会从Docker Hub中的Java仓库下载最新版本的java镜像。
示例 2:该命令还可指定想要下载的镜像标签以及Docker Registry地址,例如
docker pull reg.itmuch.com/java:7
这样就可从指定Docker Regitry中下载标签为7的Java镜像。
4.1.3 列出镜像
使用docker images命令即可列出已下载的镜像。
命令格式:docker images [OPTIONS] [REPOSITORY[:TAG]]
示例:
docker images
docker images java
docker images java:8
docker images --digests
docker images --filter "dangling=true" #展示虚悬镜像
4.1.4 删除本地镜像
使用docker rmi命令即可删除指定镜像。
命令格式:docker rmi [OPTIONS] IMAGE [IMAGE...]
示例1:删除指定名称的镜像
docker rmi hello-world
示例2:删除所有镜像
docker rmi -f $(docker images)
4.1.5 保存镜像
使用docker save即可保存镜像。
命令格式:docker save [OPTIONS] IMAGE [IMAGE...]
示例:
#将busybox保存为busybox.tar
docker save busybox > busybox.tar
docker save --output busybox.tar busybox
4.1.6 加载镜像
使用docker load命令即可加载镜像。
命令格式:docker load [OPTIONS]
示例:
#从busybox.tar文件中加载镜像。
docker load < busybox.tar
docker load --input busybox.tar
4.1.7 构建镜像
通过Dockerfile构建镜像。
命令格式:docker build [OPTIONS] PATH | URL | -
示例:
docker build -t itmuch/some-repo:some-tag . #注意后面的点哦
5.Docker容器常用命令
5.1.1 新建并启动容器
使用docker run命令即可新建并启动一个容器。
示例1:
docker run java /bin/echo 'Hello World'
这样终端会打印Hello World的字样,跟在本地直接执行/bin/echo 'Hello World'一样。
示例2:
docker run -d -p 91:80 nginx
这样就可以启动一个Nginx容器。访问http://Docker宿主机IP:91/。会看到Nginx的欢迎页面。
5.1.2 列出容器
使用docker ps命令即可列出运行中的容器。
命令格式:docker ps [OPTIONS]
示例:
docker ps
若需列出所有容器(包括已停止的容器),可使用-a参数。
5.1.3 停止容器
使用docker stop命令即可停止容器。
命令格式:docker stop [OPTIONS] CONTAINER [CONTAINER...]
示例:
docker stop 784fd3b294d7
其中 784fd3b294d7是容器ID,当然也可以使用docker stop 容器名称来停止指定容器。
5.1.4 强制停止容器
可使用docker kill命令发送SIGKILL信号来强制停止容器。
命令格式:docker kill [OPTIONS] CONTAINER [CONTAINER...]
示例:
docker kill 784fd3b294d7
5.1.5 启动已停止的容器
使用docker run命令即可新建并启动一个容器。对于已停止的容器,可使用docker start命令来启动。
命令格式:docker start [OPTIONS] CONTAINER [CONTAINER...]
示例:
docker start 784fd3b294d7
5.1.6 重启容器
可使用docker restart命令来重启容器。该命令实际上是先执行了docker stop命令,然后执行了docker start命令。
命令格式:docker restart [OPTIONS] CONTAINER [CONTAINER...]
示例:
docker restart 784fd3b294d7
5.1.7 进入容器
在某些场景下,可能需要进入运行中的容器。
使用docker attach命令进入容器。例如:
docker attach 784fd3b294d7
在很多场景下,使用docker attach命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。
使用nsenter进入容器。
nsenter工具包含在util-linux2.23或更高版本中。为了连接到容器,需要找到容器第一个进程的PID,可通过以下命令获取:
docker ps #先列出容器,获取到CONTAINER ID(容器ID)
docker inspect --format "${{State.Pid}}" 784fd3b294d7 #获取到PID
nsenter --target PID --mount --uts --ipc --net --pid
5.1.8 删除容器
使用docker rm命令即可删除指定容器。
命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER...]
示例1:删除指定容器
docker rm 784fd3b294d7
该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。
示例2:删除所有容器
docker rm -f $(docker ps -a -q)
5.1.9 导出容器
使用docker export命令可将容器导出成一个压缩包文件。
命令格式:docker export [OPTIONS] CONTAINER
示例:
#将red_panda容器导出成latest.tar文件
docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda
5.1.10 导入容器
使用docker import命令即可从归档文件导入内容并创建镜像。
命令格式:docker import [OPTIONS] file|URL| - [REPOSITORY[:TAG]]
示例:
#从nginx2.tar文件导入,并创建nginx镜像
docker import nginx2.tar nginx