docker常用命令

Docker
教程 https://docs.docker.com

设置Docker环境
构建映像并将其作为一个容器运行
扩展您的应用程序以运行多个容器
在群集中分发您的应用
通过添加后端数据库来堆栈服务
将您的应用部署到生产环境
Docker简介:

docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台。轻量级(较VM而言)

应用程序没有系统依赖性
可以将更新推送到分布式应用程序的任何部分
资源密度可以优化
与虚拟机的区别:

虚拟机是一个系统,容器是一个进程。

一、Docker安装部署

1.1 安装环境
系统环境:CentOS 7.3.1611

1.2 安装方式
① yum安装 ②离线安装

1.2.1 yum安装过程

 

1.2.1.1 安装依赖

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

1.2.1.2 配置yum国内源

$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.2.1.3 安装

安装docker-ce

$ sudo yum makecache fast

$ sudo yum install docker-ce

查看docker-ce列表,以便安装指定版本

$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64 17.12.ce-1.el7.centos docker-ce-stable

 

yum install -y docker-ce-18.03.0.ce

 

1.2.2 离线安装

1.2.2.1 下载安装包

curl https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

1.2.2.2 删除docker-ce

yum remove docker-ce

1.2.2.3 删除docker存储

rm -rf /var/lib/docker

1.3 启动Docker服务
systemctl enable docker

systemctl start docker

查看服务是否启动正常

systemctl status docker(结果如下证明正确)

1.4 测试Docker安装
1.4.1 测试版本

docker --version

1.4.2测试安装

1.通过运行简单的Docker镜像hello-world来测试您的安装是否有效

docker image pull library/hello-world(library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组。由于 Docker 官方提供的 image 文件,都放在library组里面,所以它的是默认组,可以省略)pull之后在本机就可以看到这个image文件了。(docker images ls)

docker run hello-world (run会自动提取,所以上一步pull可以省略)

2.列出hello-world下载到您的计算机的图像

docker image ls

3.hello-world运行后,容器自动终止。下述可以执行过的容器

docker container ls -a

4.有些容器不会自动停止,需用下法手动停止。

docker container kill [containID]

1.5 docker命令
docker命令汇总:

docker run ubuntu echo hello docker 这里ubuntu是一个image,如果本地没有这个image会从

Registry去下载。

docker images 当前本地有的image镜像

docker ps 当前运行的docker的container(容器)这里的CONTAINER ID是docker容器的id

docker stop CONTAINER ID 停止当前container

注:docker在容器内做的操作都是暂时的,为持久化保存,进行 下列设置,实质上是产生了一个新的Image

docker commit -m 'fun' CONTAINER ID nginx-fun ( -m 'fun'是container的message,nginx-fun 是新的image的名称)

docker rmi IMAGE ID 删除image

容器也可以删除

docker ps -a 所有的container(停止了也显示)

docker rm CONTAINER ID 删除容器

 二、容器——使用Docker方式构建应用程序

 

在过去,如果您要开始编写Python应用程序,那么您的第一个业务是在您的计算机上安装Python运行时。使用Docker,您可以将可移植的Python运行时作为映像获取,无需安装。

Docker拖取镜像,镜像运行状态——>容器。

2.1 创建Dockerfile(例子1)
#使用一个官方的Python运行时作为父映像

FROM python:2.7-slim

将工作目录设置为/app

WORKDIR /app

#将当前目录内容复制到/app的容器中。

ADD . /app

#安装requirements.txt中指定的任何需要的软件包

RUN pip install --trusted-host pypi.python.org -r requirements.txt

#使端口80可以在这个容器之外的世界上使用。

EXPOSE 80

#定义环境变量

ENV NAME World

当容器启动时运行app.py

CMD ["python", "app.py"]

Volume:提供独立于容器之外的持久化存储

2.2 创建Dockerfile(例子2)
首先,在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容。

.gitnode_modules npm -debug.log

上面代码表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。

然后,在项目的根目录下,新建一个文本文件 Dockerfile,写入下面的内容。

FROM node:8.4

COPY ./app

WORKDIR /app

RUN npm install--registry=https://registry.npm.taobao.org

EXPOSE 3000

上面代码一共五行,含义如下。

FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。

COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。

WORKDIR /app:指定接下来的工作路径为/app。

RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。

EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。

三、Registry


$docker search whalesay

$docker pull whalesay

$docker push myname/whalesay

 Docker常见命令


容器相关操作
docker create # 创建一个容器但是不启动它
docker run # 创建并启动一个容器
docker stop # 停止容器运行,发送信号SIGTERM
docker start # 启动一个停止状态的容器
docker restart # 重启一个容器
docker rm # 删除一个容器
docker kill # 发送信号给容器,默认SIGKILL
docker attach # 连接(进入)到一个正在运行的容器
docker wait # 阻塞到一个容器,直到容器停止运行
获取容器相关信息
docker ps # 显示状态为运行(Up)的容器
docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)
docker inspect # 深入容器内部获取容器所有信息
docker logs # 查看容器的日志(stdout/stderr)
docker events # 得到docker服务器的实时的事件
docker port # 显示容器的端口映射
docker top # 显示容器的进程信息
docker diff # 显示容器文件系统的前后变化
导出容器
docker cp # 从容器里向外拷贝文件或目录
docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息
执行
docker exec # 在容器里执行一个命令,可以执行bash进入交互式
镜像操作
docker images # 显示本地所有的镜像列表
docker import # 从一个tar包创建一个镜像,往往和export结合使用
docker build -t hello_docker . # 使用Dockerfile创建镜像(推荐)
docker commit # 从容器创建镜像
docker rmi # 删除一个镜像
docker load # 从一个tar包创建一个镜像,和save配合使用
docker save # 将一个镜像保存为一个tar包,带layers和tag信息
docker history # 显示生成一个镜像的历史命令
docker tag # 为镜像起一个别名
镜像仓库(registry)操作
docker login # 登录到一个registry
docker search # 从registry仓库搜索镜像
docker pull # 从仓库下载镜像到本地
docker push # 将一个镜像push到registry仓库中

原文地址:https://www.cnblogs.com/chengkanghua/p/12059924.html