Docker基础知识整理

 

2.3 docker镜像管理

2.3.1 search镜像

[root@docker ~]# docker search centos:6

2.3.2 push镜像

[root@docker ~]# docker pull centos:6

2.3.3 查看镜像

[root@docker ~]# docker images

2.3.4 导入/导出镜像

 

[root@docker ~]# docker save centos:6 >/opt/centos.tar.gz  ==》导出镜像
[root@docker ~]# docker load  </opt/centos.tar.gz  ==》导入镜像

2.3.4 .1 docker导入新的镜像后repository和tag名称都为none的解决方法

可以使用命令:  docker tag [image id] [name]:[版本]

例如: docker tag b03b74b01d97 docker-redis:0.0.1

2.3.5 删除镜像

[root@docker ~]# docker rmi $ IMAGE ID/$TAG

2.3.6 利用镜像创建容器

[root@docker ~]# docker run -it centos:6 /bin/bash

2.4 容器管理

2.4.1 新建容器

 

[root@docker ~]# docker run centos:6 /bin/echo "hehe" =》与在本地执行/bin/echo "hehe"一样
[root@docker ~]# docker run --name mydocker -it centos:6 /bin/bash =》启动一个bash终端,允许用户进行交互
--name:给容器定义名称
-i:让容器的标准输入保持打开
-t:Docker分配一个伪终端并绑定到容器的标准输入上

 

2.4.2 启动/停止容器

 

[root@docker ~]# docker start $NAMES/$CONTAINER ID
[root@docker ~]# docker stop $NAMES/$CONTAINER ID
[root@docker ~]# docker ps  ==》列出已经启动的容器
[root@docker ~]# docker ps –a  ==》列出所有容器,包括未启动的

 

2.4.3 删除容器

 

[root@docker ~]# docker rm $CONTAINER ID  ==》删除已经停止的容器
[root@docker ~]# docker rm -f  $CONTAINER ID  ==》删除正在运行的容器
[root@docker ~]# docker kill  $CONTAINER ID  ==》删除正在运行的容器
[root@docker ~]# docker kill $(docker ps -a -q)  ==》删除历史运行的容器(会将当前的也进行kill)

 

2.4.4 进入容器

2.4.4.1 attach命令进入

 

[root@docker ~]# docker attach $CONTAINER ID
注意:该命令是系统自带的,并且启用attach命令有时候并不是特别的方便,当多个窗口同时attach到一个容器的时候,多有的窗口都会同步显示,当某个窗口因某个命令堵塞时,其他窗口也就无法再执行命令了,在退出容器时,该容器会自动停止

 

2.4.4.2 nsenter命令进入容器(该命令需要安装)

 

[root@docker ~]# yum install -y util-linux  ==》安装nsenter
[root@docker ~]# docker inspect --format "{{.State.Pid}}" test ==》找到容器进程ID
[root@docker ~]# nsenter -t 19245 -u -i -m –p   ==》进入容器
-t, --target <pid>     target process to get namespaces from
指定容器的进程ID
-m, --mount[=<file>]   enter mount namespace
进入到mount namespace空间中
-u, --uts[=<file>]     enter UTS namespace (hostname etc)
进入到UTS namespace空间中
-i, --ipc[=<file>]     enter System V IPC namespace
进入到System V IPC namespace空间中
-n, --net[=<file>]     enter network namespace
进入到network namespace空间中
-p, --pid[=<file>]     enter pid namespace
进入到pid namespace空间

 

2.4.4.3 编写脚本快速进入容器

[root@docker scripts]# vim docker_in.sh
#/bin/bash
 
PID=$(docker inspect -f "{{.State.Pid}}" $1)
nsenter -t $PID -m -u -i -n -p

2.4.4.4 使用docker exec进入Docker容器

  1. $ sudo docker exec --help   

 

      接下来我们使用该命令进入一个已经在运行的容器

  1. $ sudo docker ps 
  2. $ sudo docker exec -it 775c7c9ee1e1 /bin/bash  

2.4.4.5 提交修改后的仓库

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

2.4.4.6 查看容器进程信息

docker top <container-id>|<contianer-name>

示例结果

yili@yili-mbp:~$ docker top 329a8e40a3b0
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
999                 32153               32106               0                   Aug06       

 2.4.4.7 查看容器性能信息

1、命令查看资源信息
docker stats OPTIONS <container-id>|<contianer-name>
OPTIONS	默认	说明
–all, -a	false	显示所有容器(默认显示刚刚运行)
–format		使用Go模板打印图像
–no-stream	false	禁用流统计信息,仅拉取第一个结果
2、查看docker资源的文件信息
ls /sys/fs/cgroup/memory/docker/容器id/

示例输出如下

yili@yili-mbp:~$ docker stats -a
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O             PIDS
eb7647d9b2dd        0.06%               6.672 MB / 4.145 GB   0.16%               19.51 MB / 29.

2.4.4.8 docker hub共有镜像发布

1、注册docker hub仓库帐号密码(https://hub.docker.com/

2、注册docker id后,在linux中登录dockerhub

      docker login

3、tag修改镜像名称并push到docker hub共有镜像仓库

docker tag 镜像名 注册用户名/镜像名
docker push 注册用户名/镜像名

yili@yili-mbp:~$ docker tag tomcat:7 zjhsky/tomcat:7
yili@yili-mbp:~$ docker push zjhsky/tomcat:7

4、访问docker hub 仓库push之后的镜像

上传完成后访问:https://hub.docker.com/r/zjhsky/tomcat

 

2.4.4.9 docker hub共有镜像发布

1.下载一个docker官方私有仓库镜像
    docker pull registry
2.运行一个docker私有容器仓库
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry  registry
    -d 后台运行 
    -p  端口映射 宿主机的5000:容器内的5000
    -v  数据卷挂载  宿主机的 /opt/data/registry :/var/lib/registry 
    registry  镜像名
    /var/lib/registry  存放私有仓库位置
# Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制
3.修改docker的配置文件,让他支持http方式,上传私有镜像
    vim /etc/docker/daemon.json 
    # 写入如下内容
    {
        "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
        "insecure-registries":["192.168.11.37:5000"]
    }
4.修改docker的服务配置文件
    vim /lib/systemd/system/docker.service
   找到[service]这一代码区域块,写入如下参数
    [Service]
    EnvironmentFile=-/etc/docker/daemon.json
5.重新加载docker服务
    systemctl daemon-reload
6.重启docker服务
    systemctl restart docker
    # 注意:重启docker服务,所有的容器都会挂掉

7.修改本地镜像的tag标记,往自己的私有仓库推送
    docker tag tomcat:7 47.99.236.192:5000/tomcat:7
    docker push 47.99.236.192:5000/tomcat:7
    访问curl http://192.168.119.10:5000/v2/_catalog查看推送的仓库
8.下载私有仓库的镜像
    docker pull 47.99.236.192:5000/tomcat:7

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值