Docker命令

docker 常用命令如下



管理命令:
container 管理容器
image 管理镜像
network 管理网络
node 管理Swarm节点
plugin 管理插件
secret 管理Docker secrets
service 管理服务
stack 管理Docker stacks
swarm 管理Swarm集群
system 查看系统信息
volume 管理卷

​如:docker container ls 显示所有容器​


​普通命令:​


​attach 进入一个运行的容器​​​​build 从一个DockerFile构建镜像​ ​​​commit 从容器创建一个镜像​​​​cp 从容器和主机文件系统之间拷贝文件​ ​​​create 创建一个容器​​​​diff 检查容器文件系统上的更改​ ​​​events 从服务器获取实时事件​​​​exec 在正在运行的容器中运行命令​ ​​​export 将容器的文件系统导出为tar存档​​​​history 显示镜像的历史记录​ ​​​images 查看镜像列表​ ​​​import 从归档文件中创建镜像​​​​info 显示系统范围的信息​ ​​​inspect 返回Docker对象的低级信息​ ​​​kill kill运行中的容器​​​​load 从存档或者STDIN加载镜像​​​​login 登陆docker镜像仓库​ ​​​logout 退出docker镜像仓库​ ​​​logs 获取一个容器的日志​​​​pause 暂停一个或多个容器中的所有进程​ ​​​port 查看端口映射或容器的特定映射列表​ ​​​ps 查看容器列表​ ​​​pull 从镜像仓库拉取镜像​ ​​​push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库​ ​​​rename 重命名容器​​​​restart 重启容器​ ​​​rm 删除容器​ ​​​rmi 删除镜像​ ​​​run 创建一个新的容器并运行一个命令​ ​​​save 将指定镜像保存成 tar 归档文件​​​​search 从Docker Hub搜索镜像​​​​start 启动容器​​​​stats 实时显示容器资源使用情况的统计信息​ ​​​stop 停止容器​​​​tag 标记本地镜像,将其归入某一仓库​ ​​​top 展示一个容器中运行的进程​ ​​​unpause 恢复容器中所有的进程​ ​​​update 更新容器配置​​​​version 显示Docker的版本信息​​​​wait 阻塞直到容器停止,然后打印退出代码​


​如:docker images 显示所有镜像​




下面将分别介绍一些常用操作

docker 拉取并运行一个镜像

1、下载镜像



$ docker pull centos 


2、查看已经下载的镜像



$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 49f7960eb7e4 6 weeks ago 200MB
hello-world latest f2a91732366c 8 months ago 1.85kB


3、运行一个镜像并生成容器



//运行一个centos镜像,并执行/bin/bash命令
$ docker run centos /bin/bash


输入命令docker ps或者docker container ls查看运行中的容器,发现列表为空,原因是容器在执行完成命令后会自动退出,下面介绍让让容器停留在后台的方法



$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

​$ docker container ls​​​​CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES​




使用命令docker ps -a或者docker container ls -a 查看所用容器,并显示了容器的状态



$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5525373371f3 centos "/bin/bash" 7 minutes ago Exited (0) 7 minutes ago nifty_rosalind



docker 让镜像运行停留在后台

1、启动一个容器并后台运行

docker run命令 通过增加-i -t参数可以让容器并进入容器



docker run -i -t centos /bin/bash


按 Ctrl + P + Q 退出容器,再用 docker ps 进行查看



$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61b041e4e063 centos "/bin/bash" 3 minutes ago Up 3 minutes nervous_saha



状态显示仍在运行中

docker 进入一个运行的容器



$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36afde543eb5 mysql:5.7 "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp mymysql

$ docker exec -it 36afde543eb5 /bin/bash



-i 保持STDIN打开 -t 分配一个虚拟TTY窗口

docker 提交一个镜像到镜像仓库

1、首先到https://hub.docker.com/注册一个账号,保存下用户名密码 2.控制台登陆dockerhub账户



$ docker login
输入刚注册的用户名密码


2、查看镜像



$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest f06a5773f01e 2 days ago 83.4MB



3、选择需要上传的镜像,重命名为指定的格式



$ docker  tag redis username/myredis:v1



username:为自己注册的用户名

​myredis:为自己为镜像取的名字​


​v1:为任意设置的版本号​


4、完成上述操作后,即可提交镜像到自己的仓库



docker push username/myredis:v1


docker 映射文件从宿主机到容器,端口号映射



//将宿主机的81端口映射到容器的80端口
//将宿主机的/develop/data卷,映射到容器的/data卷

​$ docker run -i -t -p 81:80 -v /develop/data????data centos /bin/bash​




-p:映射端口号 -v:磁盘目录映射

docker 更改端口号映射



运行中的容器无法映射新的端口号,也无法更改端口号映射,但可以通过两种方法解决


1、iptable转发端口



//查看容器ip
$ docker inspect 36afde543eb5 | grep IPAddress
"IPAddress": "172.17.0.2"

​//将主机的8081端口映射到宿主机的8080端口​​​​$ iptables -t nat -A DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.2:8080​


2、先提交容器为镜像,再运行这个容器,同时指定新的端口映射



//提交容器为镜像
$ docker commit 9995ffa15f46 mycentos:0.1
//停止旧的容器
$ docker stop 9995ffa15f46
//重新从旧的镜像启动容器
$ docker run -i -t -p 8081:8080 mycentos:0.1



从DockerFile创建镜像



$ docker build -t myimage:v1 .


-t :指定镜像名称和标签,格式为'name:tag' .: 最后一个点代表当前目录,也可以换成其它的路径