以下命令均是在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