小白菜 docker 高级命令整理

以下命令均是在centos 7 系统下运行的docker。

1. 守护式方式启动容器。 此方式启动容器后不会进入容器内部。

docker run -di --name 容器的别名 容器的ID

2. 进入已启动的容器

# 最初的docker进入容器的方法如下
docker attach 容器ID  [/bin/bash]
上面的命令执行后, 经常会导致进入docker容器是卡住。 推荐下面这个

# 新的docker进入容器的方法
docker exec -it 容器ID /bin/bash 

3. 只执行docker中的某个命令,而不进入docker容器

docker exec 容器ID 具体的命令 

例如

docker exec 容器ID ls -a /sys

4. 查看docker的日志文件

docker logs


# 推荐大家直接去找日志文件的形式查看更方便一些

/var/lib/docker/containers/具体的容器(前缀跟容器ID一致)

5. 查看docker某个容器内的进程

docker top 容器ID

6. docker容器与宿主机之间的文件copy

# 从宿主机向docker容器copy文件
docker cp 宿主机的文件地址(或目录)  容器ID:容器的文件夹

例如
docker cp /home/a.txt 627c187853d0:/tmp


# 从容器向宿主机copy文件
docker cp 容器ID:容器的文件或文件夹 宿主机的文件目录

例如
docker cp 627c187853d0:/tmp/a.txt /home

7. docker 启动容器时指定端口映射

# 启动容器时, 指定容器指定端口映射到宿主机的哪个端口上
docker run -it -p 宿主端口:容器端口 镜像ID


# 例如 指定容器tomcat的8080端口通过宿主机的 8888端口访问
docker run -it -p 8888:8080 tomcat

# 随机生成容器与宿主机的端口映射, 需要用到参数 大P
docker run -it -P tomcat

8. 提交运行时容器为新的镜像

docker commit -a='作者名字' -m='备注信息' 运行时容器ID 新镜像的名称

9. 推送镜像到hub.docker.com 公共库中。

# 首先需要注册hub.docker上的账号, 
# 1. 登录docker
docker login

# 2. push 到公共库中
docker push 镜像名称:版本号 
# 例如
docker push dbp/tomcat7:1.0.1

10. 推送镜像到阿里云的仓库阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

        1.  设置镜像实例列表
        2.  设置Registery登录密码

        3. 创建镜像仓库

当前期准备完成后,以下是具体的仓库操作

# 1. 登录阿里云Docker Registry
docker login --username=阿里云账号全名 registry.cn-hangzhou.aliyuncs.com
# 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

# 2. 从Registry中拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
# 3. 将镜像推送到Registry
docker login --username=阿里云账号全名 registry.cn-hangzhou.aliyuncs.com
docker tag [本地镜像ID] registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
# 请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。


# 4. 示例
# 使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

docker images

REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB

docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
# 使用 "docker push" 命令将该镜像推送至远程。

docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

11. docker  宿主机与容器之间的目录挂载,即实现双向的数据同步

# 实现目录挂载需要用到 -v命令
docker run -it -v 宿主机目录:容器目录  镜像ID

# 实现多目录挂载, 只需要跟多个 -v即可
docker run -it -v 宿主机目录:容器目录 -v 宿主机目录2:容器目录2 镜像ID

# 如果是centos7 挂载引起的权限不足, 可能是由于centos7的 setlinux安全模块吧权限禁用了, 只需要在后面跟上参数 --privileged=true 即可解决

# 如果挂载的目录下的文件不可修改, 只需要在容器目录下加上ro即可
docker run -it -v 宿主机目录:容器目录:ro  镜像ID

12. docker 迁移和备份

# 保存docker的镜像为tar文件 
docker save -o  文件名(以.tar结尾)镜像名:版本号
# 例如 :此时会导出这个镜像为一个tar的文件,可以下载到u盘。
docker save -o mytomcat.tar tomcat:latest


# 加载tar的docker文件为docker镜像
docker load -i 文件名(以.tar结尾的文件)
# 例如, 此时mytomcat镜像会被加载
docker load -i mytomcat.tar

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值