Docker命令全释

1、查看版本

# docker version

2、镜像
获取镜像

# docker pull        #默认从Docker Hub镜像源
# docker pull hub.c.163.com/public/ubuntu:14.04    #从网易获取

查看镜像信息

# docker images

添加镜像标签

# docker tag ubuntu:latest myubuntu:latest

查看镜像详细信息

# docker inspect ubuntu:14.04	
# docker inspect -f {{".Architecture"}}     #获取镜像的Architecture

查看镜像历史

# docker history ubuntu:14.04

搜索镜像

# docker search nginx

删除镜像

# docker rmi myubuntu:latest           #-f可强制删除

创建镜像

# docker run -it ubuntu:14.04 /bin/bash
root@a925cb40b3f0:/# touch test
root@a925cb40b3f0:/# exit
# docker commit -m "Added a new file" -a "Docker Newbee" a925cb40b3f0 test:0.1
9e9c814023bcffc3e67e892a235afe61b02f66a947d2747f724bd317dda02f27
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test 0.1 9e9c814023bc 4 seconds ago 188 MB

操作系统模板文件导入镜像

# cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04

导出和导入镜像

# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 8f1bd21bd25c 2 weeks ago 188 MB
...
# docker save -o ubuntu_14.04.tar ubuntu:14.04
# docker load --input ubuntu_14.04.tar或# docker load < ubuntu_14.04.tar

上传镜像

# docker tag test:latest user/test:latest
# docker push user/test:latest
The push refers to a repository [docker.io/user/test]
Sending image list
Please login prior to push:
Username:
Password:
Email:

3、容器
新建容器

# docker create -it ubuntu:latest
af8f4f922dafee22c8fe6cd2ae11d16e25087d61f1b1fa55b36e94db7ef45178
# docker ps -a

启动容器

# docker start af
af	
# docker ps -a

新建并启动容器

# docker run ubuntu /bin/echo 'Hello world'            #执行完毕后容器被自动终止
Hello world                   
# docker run -it ubuntu:14.04 /bin/bash              #允许用户交互
root@af8bae53bdd3:/#     

终止容器

# docker stop ce5

进入容器

# docker attach ce5                      
# docker exec -it ce5 /bin/bash
# docker run -idt ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
243c32535da7 ubuntu:latest "/bin/bash" 18 seconds ago Up 17 seconds
nostalgic_hypatia
# PID=$(docker-pid 243c32535da7)
10981
# nsenter --target 10981 --mount --uts --ipc --net --pid        #通过nsenter命令进入容器
root@243c32535da7:/#

删除容器

# docker rm 243              #-f可以直接删除在运行的容器

导出和导入容器

# docker export -o test_for_run.tar ce5或# docker export ce5 >test_for_stop.tar
# docker import test_for_run.tar - test/ubuntu:v1.0

4、仓库
搭建本地仓库:参考Kubernetes简易搭建(无证书RPM版)Dashboard部署

5、数据管理
(1)数据卷(Data Volumes):容器内数据直接映射到本地主机环境
-P是将容器服务暴露的端口,是自动映射到本地主机的临时端口
-v标记也可以指定挂载一个本地的已有目录到容器中去作为数据卷
例1:使用training/webapp镜像创建一个web容器,并创建一个数据卷挂载
到容器的/webapp目录

# docker run -d -P --name web -v /webapp training/webapp python app.py

例2:加载主机的/ src/webapp目录到容器的/ opt/webapp目录

#  docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

例3:Docker挂载数据卷的默认权限是读写(rw),用户也可以通过ro指定为只读

#  docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

例4:从主机挂载单个文件到容器中作为数据卷(不推荐)

# docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash          #可以记录在容器输入过的命令历史

(2)数据卷容器(Data Volume Containers):使用特定容器维护数据卷
如果用户需要在多个容器之间␀享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载

# docker run -itd -v /dbdata --name dbdata centos
# docker run -itd --volumes-from dbdata --name db1 centos         #使用--volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态
# docker run -itd  --volumes-from dbdata --name db2 centos
# docker exec -it dbdata /bin/bash
[root@65187e5ee777 /]# ls
bin  dbdata  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@65187e5ee777 /]# cd dbdata/
[root@65187e5ee777 dbdata]# ls
[root@65187e5ee777 dbdata]# touch 1.txt
[root@65187e5ee777 dbdata]# exit
exit
# docker exec -it db1 /bin/bash
[root@df495a5b13d4 /]# cd dbdata/
[root@df495a5b13d4 dbdata]# ls
1.txt

(3)利用数据卷容器来迁移数据
备份

# docker run --volumes-from dbdata -v $(pwd):/backup --name worker centos tar cvf /backup/backup.tar /dbdata

恢复

# docker run -itd -v /dbdata --name dbdata2 centos /bin/bash
# docker exec -it dbdata2 /bin/bash
[root@66141fcd5c64 /]# cd dbdata/
[root@66141fcd5c64 dbdata]# ls
# docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
# docker exec -it dbdata2 /bin/bash
[root@66141fcd5c64 /]# cd dbdata/
[root@66141fcd5c64 dbdata]# ls
1.txt

6、时间同步

root@a7df73c35fc3:/opt/webapp# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
root@a7df73c35fc3:/opt/webapp# exit
# docker restart a7d
# docker exec -it a7d /bin/bash
root@a7df73c35fc3:/opt/webapp# date
Mon Sep  7 10:23:48 CST 2020

7、端口映射与容器互联
(1)从外部访问容器应用
通过- P或-p参数来指定端口映射。当使用-P(大写的)标记时,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口

# docker ps -a|grep webapp
a7df73c35fc3        training/webapp     "python app.py"          About an hour ago   Up About an hour           0.0.0.0:32771->5000/tcp   web
[root@master ~]# curl 10.254.8.2:5000                   #访问docker ip的5000端口
Hello world![root@master ~]# curl 192.168.120.162:32771           #访问宿主机的32771端口
Hello world![root@master ~]# 
# docker logs -f a7d
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
10.254.8.1 - - [07/Sep/2020 14:17:51] "GET / HTTP/1.1" 200 -
192.168.120.162 - - [07/Sep/2020 14:18:02] "GET / HTTP/1.1" 200 -

(2)映射所有接口地址

# docker run -d -p 5000:5000 training/webapp python app.py
# docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py     #绑定所有地址的多端口

(3)映射到指定地址的指定端口

# docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

(4)映射到指定地址的任意端口

# docker run -d -p 127.0.0.1::5000 training/webapp python app.py
# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py          #使用udp标记来指定udp端口

(5)查看映射端口配置

# docker port a7d
5000/tcp -> 0.0.0.0:32771

(6)容器互联
–link参数的格式为-- link name:alias,其中name是要连接的容器名
称,alias是这个连接的别名

# docker run -d --name db training/postgres         #创建一个新的数据库容器
# docker run -d -P --name web --link db:db training/webapp python app.py       #创建一个新的web容器
# docker ps
# docker run --rm --name web2 --link db:db training/webapp env
# docker run -t -i --rm --link db:db training/webapp /bin/bash
root@aed84ee21bde:/opt/webapp# cat /etc/hosts
root@aed84ee21bde:/opt/webapp# ping db
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值