docker常用操作

安装 Docker
Docker 分为 CE 和 EE 两大版本。
CE 即社区版 EE 即企业版。

一. 卸载旧版本Docker

yum remove docker  docker-client  docker-client-latest docker-common  docker-latest  docker-latest-logrotate  docker-logrotate  docker-selinux   docker-engine-selinx  docker-engine 

二.使用yum安装必要系统工具

yum update -y 
yum makecache 
yum install  -y  yum-utils  device-mapper-persistent-data  lvm2
  1. 添加软件源信息

阿里云源

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

微软源

yum –config-manager –add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

官方源

https://download.docker.com/linux/centos/docker-ce.repo

  1. 如果需要测试版本的 Docker CE 请使用以下命令
    yum-config-manager --enable docker-ce-test

安装 Docker CE
yum makecache fast //更新 yum 软件源缓存
如果你想安装特定 docker-ce 版本,先列出 repo 中可用版本,然后选择安装
yum list docker-ce --showduplicates | sort -r

yum install docker-ce //安装 Docker-ce或docker-ce-版本

安装方法二:
curl -fsSL get.docker.com -o get-docker.sh //使用脚本安装
sh get-docker.sh --mirror Aliyu
或 sh get-docker.sh --mirror AzureChinaCloud

启动docker
systemctl enable docker
systemctl start docker

————————————————————————————————————————————————————
Docker使用命令

命令介绍

服务管理

service docker start       # 启动 docker 服务,守护进程
service docker stop        # 停止 docker 服务
service docker status      # 查看 docker 服务状态
chkconfig docker on        # 设置为开机启动

管理命令:
container 管理容器
image 管理镜像
network 管理网络


容器管理

列出本机正在运行的容器

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                 # 【删除】容器

命令:

  attach              介入到一个正在运行的容器
  build              根据 Dockerfile 构建一个镜像
  commit               根据容器的更改创建一个新的镜像
  cp                      在本地文件系统与容器中复制 文件/文件夹
  create                 创建一个新容器
  exec                 在容器中执行一条命令
  images             列出镜像
  kill                     杀死一个或多个正在运行的容器    
  logs                 取得容器的日志
  pause                暂停一个或多个容器的所有进程
  ps                  列出所有容器
  pull                 拉取一个镜像或仓库到 registry
  push              推送一个镜像或仓库到 registry
  rename            重新启动一个或多个容器
  rm                  删除一个或多个容器
  rmi                  删除一个或多个镜像
  run                  在一个新的容器中执行一条命令
  search                在 Docker Hub 中搜索镜像
  start                启动一个或多个已经停止运行的容器
  stats                显示一个容器的实时资源占用
  stop                    为镜像创建一个新的标签
  top                     显示一个容器内的所有进程
  unpause              恢复一个或多个容器内所有被暂停的进程

                                                           镜像管理  
docker pull centos:latest  # 从docker.io中下载centos镜像到本地
docker images              # 查看已下载的镜像
docker rm image_id         # 删除镜像,指定镜像id

删除所有镜像

none 默认为 docker.io
docker rmi $(docker images | grep none | awk ‘{print $3}’ | sort -r)

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

docker run -t -i nginx:latest /bin/bash


三. 通过容器创建镜像

方法二种:从已经创建的容器中更新镜像 2.Dockerfile 指令来创建一个新的镜像

  1. 从已经创建的容器中更新镜像,并且提交这个镜像
    docker commit -m=“First Docker” -a=“wcjiang” a6b0a6cfdacf wcjiang/nginx:v1.2.1

-m 提交的描述信息
-a 指定镜像作者
a6b0a6cfdacf 记住这个是容器id,不是镜像id
wcjiang/nginx:v1.2.1 创建的目标镜像名


  1. 使用 Dockerfile 指令来创建一个新的镜像
    touch Dockerfile .dockerignore
    这三个文件忽略: .git node_modules npm-debug.log

安装node的 Dockerfile 文件内容:
FROM node:8.4 //该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node
COPY . /app //将当前目录下的所有文件(除了 .dockerignore 排除的路径),都拷贝进入 image 文件的 /app 目录
WORKDIR /app //指定接下来的工作路径为/app
RUN npm install --registry=https://registry.npm.taobao.org // 运行 npm install 命令安装依赖
EXPOSE 3000 //将容器 3000 端口暴露出来, 允许外部连接这个端口

有了 Dockerfile 文件以后,就可以使用 docker image build 命令创建 image 文件了
docker image build -t koa-demo .
或者
docker image build -t koa-demo:0.0.1



四. 发布自己的镜像

docker tag wcjiang/nginx:v1.2.1 wcjiang/nginx-test:lastest //将镜像nginx,起个新的名字nginx-test

  1. 登录docker
    docker login ip:端口(本机忽略)

  2. 上传nginx-test镜像
    docker push wcjiang/nginx-test:lastest

五. 常用命令操作

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y  install docker-ce  

要想去仓库拉去镜像要需要先登录
docker login 地址:端口
例如 : docker login https://harbor.jlbw8.com/

拉取镜像

docker pull harbor.jlbw8.com/bxvip-super/sadmin-web:latest   //latest是目录下面的标签 
docker  run -d  --restart=alway -v /home:/home  -p 80:80  --name mynginx nginx:latest  
docker ps 
nsenter -n -t`docker inspect mynginx -f {{.State.Pid}}` 
netstat -nulpt 
exit 
docker exec  -it  容器名或者进程名   /bin/bash  


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 cp host_path containerID:container_path     # 从主机复制到容器
docker cp containerID:container_path host_path    # 从容器复制到主机
docker container rm a4cd9683f78b                  #删除一个处于终止状态的容器

run
运行一个容器

-d # 指定容器运行于前台还是后台,默认为false
-it #打开STDIN,用于控制台交互分配tty设备,该可以支持终端登录
–name=“” # 自定义容器名字,后续可以通过名字进行容器管理
-v, --volume=[] # 给容器挂载存储卷,挂载到容器的某个目录
-p --publish=[] # 指定容器暴露的端口
-w, --workdir=“” # 指定容器的工作目录
-e, --env=[] # 指定环境变量,容器中可以使用该环境变量
-h, --hostname=“” # 指定容器的主机名
–dns=[ ] # 指定容器的dns服务器
–env-file=[] # 指定环境变量文件,文件格式为每行一个环境变量
–expose=[] # 指定容器暴露的端口,即修改镜像的暴露端口
-e MYSQL_ROOT_PASSWORD=“123456” #设置mysql 初始密码为123456

–net=“bridge” # 容器网络设置:
# bridge 使用docker daemon指定的网桥
# host //容器使用主机的网络
# container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
# none 容器使用自己的网络(类似–net=bridge),但是不进行配置

–restart=“always” # 指定容器停止后的重启策略:
# no:容器退出时不重启
# on-failure:容器故障退出(返回值非零)时重启
# always:容器退出时总是重启

docker run -d --restart=always  -–privileged=true    --name registry    -p 5000:5000   -v /opt/data:/var/lib/  registry:2
docker run  -d  -p 3308:3306 --name mysql01  -e MYSQL_ROOT_PASSWORD="123456"  --restart=always mysql:5.7   

说明
–restart=always 此模式容器会跟 docker daemon会随着docker服务的重启而自动恢复
-v /opt/data:/var/lib/ 主机的目录映射到容器的目录
–name myregistry 定义容器名
-p 5000:5000 端口映射,本地端口5000映射到容器端口5000 -P 是直接容器映射到主机,不用加端口
–-privileged=true 配置了-v /opt/data/registry:/var/lib/registry ,如果没有关闭安全模块selinux,容器将没有权限访问本地目录
-d 后台模式
-it 交互模式启动一个容器 例如 docker exec -it 775c7c9ee1e1 /bin/bash

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
docker run -it nginx:latest /bin/bash

inspect
inspect命令可以分层级显示一个镜像或容器的信息

  1. 创建一个守护态的Docker容器
    docker run -itd ubuntu:14.04 /bin/bash

  2. 使用docker ps查看到该容器信息,接下来就使用docker attach进入该容器
    docker ps
    docker attach 44fc0f05822d9 // 不太适合于生产环境



nsenter
进入一个容器

要显示该容器第一个进行的PID可以使用如下方式
docker inspect -f{{.State.Pid}} d2b461863810

拿到该进程PID之后我们就可以使用nsenter命令访问该容器
nsenter --target 3326 --mount --uts --ipc --net --pid //3326是pid
nsenter -n -t3326 //这个命令也可以进入容器
nsenter -n -tdocker inspect mynginx -f {{.State.Pid}}

或者
docker exec -it 容器名或者进程名 /bin/bash


通过容器创建镜像

  1. 从已经创建的容器中更新镜像,并且提交这个镜像
  2. 使用 Dockerfile 指令来创建一个新的镜像

已存在的容器创建一个新的镜像
docker commit -m=“First Docker” -a=“wcjiang” a6b0a6cfdacf wcjiang/nginx:1.0.0
-m 提交的描述信息
-a 指定镜像作者
a6b0a6cfdacf 记住这个是容器id,不是镜像id
wcjiang/nginx:1.0.0 创建的目标镜像名

docker image 查看


通过Dockerfile创建镜像

  1. 首先创建项目根目录创建文件
    touch Dockerfile .dockerignore

  2. vim .dockerignore
    //下面代码表示,这三个路径要排除,不要打包进入 image 文件
    .git
    node_modules
    npm-debug.log

  3. vim Dockerfile
    FROM node:8.4 //FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node
    COPY . /app //将当前目录下的所有文件,拷贝进入 image 文件的 /app 目录
    WORKDIR /app // 指定接下来的工作路径为/app
    RUN npm install --registry=https://registry.npm.taobao.org // 在/app目录下,运行 npm install 命令安装依赖。
    EXPOSE 3000 // 将容器 3000 端口暴露出来, 允许外部连接这个端口

  4. 使用 docker image build 命令创建 image 文件了
    docker image build -t node . // -t 参数用来指定 image 文件的名字,后面还可以用冒号指定标签如果不指定,默认的标签就是 latest

    docker image build -t node:1.0 . // 后面有个 . 表示 Dockerfile 文件所在的路径为当前路径


发布自己的镜像

1.登录docker
docker login 或者 docker login 仓库地址

docker tag redis:1.0.1 192.168.22.130/test/redis:1.0.1 //打包
上传镜像
docker push 192.168.22.130/test/redis:1.0.1


镜像中安装软件

apt-get update
apt-get install vim

例如:
#进入到centos7镜像系统
docker run -i -t centos:7 /bin/bash
yum update
yum install vim


Docker私有仓库搭建

通过官方提供的私有仓库镜像registry来搭建私有仓库也可以通过部署管理工具 Harbor 来部署 registry
registry

docker pull registry
docker run -d --restart=always -p5000:5000 registry:latest
http://192.168.22.131:5000/v2/ //访问返回 {} 表示成功

推送镜像到私有仓库
1.从官方仓库拉取一个镜像
docker pull nginx
docker tag nginx:latest 192.168.22.131:5000/mynginx //打包创建一个新标签
docker push 192.168.22.131:5000/mynginx //推送到私有仓库中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值