docker命令小结

简介: 应用场景 docker使用的时候,有自己一套专业的命令模式,其中有镜像,容器,仓库等等,其中各种命令用法比较容易混淆,这里粗略的整理一下。

应用场景

docker使用的时候,有自己一套专业的命令模式,其中有镜像,容器,仓库等等,其中各种命令用法比较容易混淆,这里粗略的整理一下。

1. 镜像:

 # docker pull 镜像名    (下载镜像)

 # docker run -t -i 镜像名 /bin/bash        (利用镜像创建一个容器,在其中运行bash)

 # docker images (查看镜像,repository:仓库,TAG:镜像标签,标记同一仓库的不通镜像,ID:镜像唯一ID号)

 # docker tag 原仓库名:原版本名TAG ubuntu:latest  (为镜像添加新的标签TAG)

 # docker inspect 镜像名或镜像ID     (获取镜像的详细信息)

 # docker search 镜像名      (搜索镜像)

 # docker rmi 镜像名    (删除镜像,如果在镜像上层有容器运行,删除失败)

 # docker rmi -f 镜像名    (强制删除镜像)

创建镜像有三种方式:

 # docker commit -m "add a new file" -a "Docker Newbee" 容器名 新的镜像名 (基于已有镜像的容器创建)

 # cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04   (基于本地模板导入)

 # docker save -o ubuntu_14.04.tar ubuntu:14.04    (存出本地镜像到本地文件ubuntu:14.04)
 # docker load --input ubuntu_14.04.tar   (载入镜像)

 # docker push user/test:latest   (上传本地镜像到仓库 docker tag test:latest user/test:latest)

2. 容器:

启动容器有两种方式:一种是基于镜像新建一个容器并启动,一种是将终止状态的容器重新启动

 # docker create -it ubuntu:latest   (创建容器,create新建的容器处于禁止状态,docker start 容器名 来启动)

 # docker run ubuntu /bin/echo 'Hello World' (输出一个‘Hello World’,之后容器自动终止)

 # docker run -t -i ubuntu:14.04 /bin/bash     (启动一个bash终端,允许用户进行交互)

 # docker run -d ubuntu /bin/sh   (使docker容器在后台已守护状态运行)

 # docker stop/stop/restart 容器ID

 # docker run -idt 镜像名 ||  docker attach 容器名  (当多个窗口attach到同一个容器的时候,所有窗口会同步显示)

 # docker exec -ti 容器ID /bin/bash   (进入到刚刚创建的容器中)

 # docker rm 容器id或者容器名    (删除终止状态的容器  -f强制)

 # docker rm `docker ps -a -q`     (删除所有容器的命令)

 # docker export 容器id > test_for_run.tar    (导出容器到一个tar文件)

 # cat test_for_run.tar |docker import - test/ubuntu:v1.0  (导入文件,成为镜像)

注:docker import 和docker load的区别:

使用docker load命令来导入镜像存储文件到本地的镜像库;使用docker import命令来导入一个容器快照到本地镜像库。

3. 仓库:

集中存放镜像的地方,一个容器与之混淆的概念是注册服务器,实际上注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,每个仓库下面有多个镜像。

 # d1.dockerpoll.com/ubuntu   d1.dockerpoll.com是注册服务器地址,ubuntu是仓库名

 # docker run -d -p 5000:5000 registry   (自动下载并启动一个registry容器,创建本地的私有仓库)

 # curl 127.0.0.1:5000/v1/search   (访问私有仓库中所包含的镜像)

 # docker tag daocloud.io/library/mysql:latest 127.0.0.1:5000/test   (修改本地镜像的tag)

 # docker push 127.0.0.1:5000/test    (上传镜像到私有仓库)

 # docker pull 192.168.199.31:5000/test   (从私有仓库上pull到在使用的客户端)

 # tree /opt/data/registry/repositories/ (查看镜像的存储目录和文件  tree /tmp/registry/repositories/    yum -y install tree)

 # http://192.168.199.31:5000/v1/search   (浏览器访问私有仓库的镜像)

4. 数据管理:

用户杂使用docker的过程中,需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这就涉及到容器的数据管理操作。管理数据的两种方式:数据卷,数据卷容器。

1.在容器内创建数据卷,把本地的目录或文件挂载到容器内的数据卷中

2.使用数据卷容器在容器和主机、容器和容器之间共享数据,并实现数据的备份和恢复。

5. 数据卷:

 # sudo docker run -d -P --name web -v /webapp training/webapp python app.py (使用training/webapp镜像创建web容器,并创建一个数据卷挂载到容器的/webapp目录)

 # sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py (挂载主机的/src/webapp目录到容器的/opt/webapp目录做为数据卷)

 # sudo docekr run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash (从主机挂载单个文件到容器中做为数据卷)

数据卷容器:(其实就是一个普通的容器,专门提供数据卷供其他容器挂载使用)

 # docker run -it -v /dbdata --name dbdata ubuntu (创建一个数据卷容器dbdata,在其中创建一个数据卷挂载到/dbdata)

 # docker run -it --volumes-from dbdata --name db1 ubuntu   (容器db1和db2都挂载到了同一个数据卷到相同的/databata目录)

 # docker run -it --volumes-from dbdata --name db2 ubuntu

6. 网络基础配置:

docker提供了映射容器端口到宿主机和容器关联机制来为容器提供网络服务,使用端口映射机制来将容器内的应用服务提供给外部网络,通过容器互联让多个容器之间进行快捷的网络通信。

容器与外部网络:

 # docker run -d -P training/webapp python app.py

容器与容器间:

 # docker run -d --name db training/postgres

 # docker run -d -P --name web --link db:db training/webapp python app.py

7. 使用dockerfile创建镜像

包含四个部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令

FROM MAINTAINER RUN  CMD  EXPOSE  ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ONBUILD

创建镜像:

 # docker build -t build_repo/first_image /tmp/docker_builder/  (dockerfile所在路径/tmp/docker_builder,生成的镜像标签为build_repo/first_image)

 # docker run -ti -d -v /usr/local/src:/usr/local/src centos /bin/bash

 # docker run -d -ti –name tomcat01 docker.io/tomcat

 # docker run -ti docker.io/nginx /bin/bash


 # docker build -t="xubin/jweb" .       

docker build -t xubin/jweb  .

1,创建项目:https://github.com/changedi/mydocker

2,编辑 Dockerfile:https://github.com/changedi/mydocker/blob/master/Dockerfile

3,在本地项目中运行 docker build <image_name> .,build一个自定义名字的镜像

4,启动这个镜像容器:docker run -d -p 80:80 <image_name>

这样,这个镜像就好了,服务也起来了,后续可以通过docker ps来查看启动的镜像,通过docker stop来停止容器。
 # docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash

 # tar -zxf /mnt/software/jdk-7u67-linux-x64.tar.gz -C .

 # mv jdk1.7.0_67/ jdk/

 # tar -zxf /mnt/software/apache-tomcat-7.0.55.tar.gz -C .

 # mv apache-tomcat-7.0.55/ tomcat/

首先,编辑.bashrc文件

 # vi ~/.bashrc

然后,在该文件末尾添加如下配置:

 # export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME

最后,需要使用source命令,让环境变量生效:

 # source ~/.bashrc

编写运行脚本

我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:

首先,创建运行脚本:

 # vi /root/run.sh

然后,编辑脚本内容如下:

 # !/bin/bash source ~/.bashrc sh /opt/tomcat/bin/catalina.sh run

注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。

最后,为运行脚本添加执行权限:

 # chmod u+x /root/run.sh

退出容器

当以上步骤全部完成后,可使用exit命令,退出容器。

随后,可使用如下命令查看正在运行的容器:

 # docker ps

使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”:

 # docker commit 57c312bbaad1 huangyong/javaweb:0.1

 # docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh
目录
相关文章
|
3月前
|
Docker 容器
Docker run命令-p参数详解
本文介绍Docker端口映射的基础用法。通过`docker run -p &lt;宿主机端口&gt;:&lt;容器端口&gt;`实现端口映射,例如`-p 5000:80`将宿主机5000端口映射到容器80端口,外部访问宿主机5000端口时流量会转发至容器内部的80端口。示例命令中,`-d`用于后台运行,`--restart=always`确保容器自动重启,`--name`指定容器名称。部署完成后可通过`http://服务器IP地址:5000`验证服务是否正常运行。
|
4月前
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
790 30
|
4月前
|
Ubuntu Linux 开发者
常用的Docker命令:docker_cmd_sheet
以上就是一些常用的Docker命令,希望能帮助你更好地驾驭这个强大的工具。记住,Docker就像是一个魔法咒语,只有真正理解和熟练使用,才能发挥出它的最大魔力。
119 22
|
4月前
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
161 16
|
4月前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
299 5
|
4月前
|
关系型数据库 MySQL Docker
|
11月前
|
安全 Docker 容器
|
11月前
|
网络安全 数据安全/隐私保护 Docker
|
5月前
|
NoSQL 应用服务中间件 Redis
Docker 常用命令整理
Docker 常用命令整理
148 1
|
9月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
329 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解