连接进行进入命令行模式,exit命令退出。

docker run -t -i nginx:latest /bin/bash
通过容器创建镜像
我们可以通过以下两种方式对镜像进行更改。

从已经创建的容器中更新镜像,并且提交这个镜像
使用 Dockerfile 指令来创建一个新的镜像
下面通过已存在的容器创建一个新的镜像。

docker commit -m=”First Docker” -a=”wcjiang” a6b0a6cfdacf wcjiang/nginx:v1.2.1
上面命令参数说明:

-m 提交的描述信息
-a 指定镜像作者
a6b0a6cfdacf 记住这个是容器id,不是镜像id
wcjiang/nginx:v1.2.1 创建的目标镜像名
通过Dockerfile创建镜像
假设创建一个 node.js 镜像,首先在 node.js 项目根目录创建文件。

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

.git
node_modules
npm-debug.log
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 端口暴露出来, 允许外部连接这个端口。
有了 Dockerfile 文件以后,就可以使用 docker image build 命令创建 image 文件了。

$ docker image build -t koa-demo .

或者

$ docker image build -t koa-demo:0.0.1 .
上面命令,-t 参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是 latest。注意后面有个 .,表示 Dockerfile 文件所在的路径为当前路径

发布自己的镜像
在Docker 注册账户,发布的镜像都在这个页面里展示
将上面做的镜像nginx,起个新的名字nginx-test
docker tag wcjiang/nginx:v1.2.1 wcjiang/nginx-test:lastest
登录docker
docker login
上传nginx-test镜像
docker push wcjiang/nginx-test:lastest

The push refers to a repository [docker.io/wcjiang/nginx-test]

2f5c6a3c22e3: Mounted from wcjiang/nginx

cf516324493c: Mounted from wcjiang/nginx

lastest: digest: sha256:73ae804b2c60327d1269aa387cf782f664bc91da3180d10dbd49027d7adaa789 size: 736

镜像中安装软件
通常情况下,使用docker官方镜像,如 mysql镜像,默认情况下镜像中啥软件也没有,通过下面命令安装你所需要的软件:

第一次需要运行这个命令,确保源的索引是最新的

同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引

apt-get update

做过上面更新同步之后,可以运行下面的命令了

apt-get install vim
如果你安装了CentOS或者Ubuntu系统可以进入系统安装相关软件

进入到centos7镜像系统

docker run -i -t centos:7 /bin/bash
yum update
yum install vim
容器管理
容器就像一个类的实例

列出本机正在运行的容器

docker container ls

列出本机所有容器,包括终止运行的容器

docker container ls –all
docker start [containerID/Names] # 启动容器
docker stop [containerID/Names] # 停止容器
docker rm [containerID/Names] # 删除容器
docker logs [containerID/Names] # 查看日志
docker exec -it [containerID/Names] /bin/bash # 进入容器

从正在运行的 Docker 容器里面,将文件拷贝到本机,注意后面有个【点】拷贝到当前目录

docker container cp [containID]:[/path/to/file] .
docker run centos echo “hello world” # 在docker容器中运行hello world!
docker run centos yum install -y wget # 在docker容器中,安装wget软件
docker ps # 列出包括未运行的容器
docker ps -a # 查看所有容器(包括正在运行和已停止的)
docker logs my-nginx # 查看 my-nginx 容器日志
docker run -i -t centos /bin/bash # 启动一个容器
docker inspect centos # 检查运行中的镜像
docker commit 8bd centos # 保存对容器的修改
docker commit -m “n changed” my-nginx my-nginx-image # 使用已经存在的容器创建一个镜像
docker inspect -f {{.State.Pid}} 44fc0f0582d9 # 获取id为 44fc0f0582d9 的PID进程编号

下载指定版本容器镜像

docker pull gitlab/gitlab-ce:11.2.3-ce.0
容器服务管理
docker run -itd –name my-nginx2 nginx # 通过nginx镜像,【创建】容器名为 my-nginx2 的容器
docker start my-nginx –restart=always # 【启动策略】一个已经存在的容器启动添加策略

no – 容器不重启

on-failure – 容器推出状态非0时重启

always – 始终重启

docker start my-nginx # 【启动】一个已经存在的容器
docker restart my-nginx # 【重启】容器
docker stop my-nginx # 【停止运行】一个容器
docker kill my-nginx # 【杀死】一个运行中的容器
docker rename my-nginx new-nginx # 【重命名】容器
docker rm new-nginx # 【删除】容器
进入容器
创建一个守护状态的Docker容器
docker run -itd my-nginx /bin/bash
使用docker ps查看到该容器信息
docker ps

    内容分页 1 2 3 4 5
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。