One of docker study notes: basic commands

Problems that may be encountered during the use of Docker: http://www.tuicool.com/articles/u6rumiE

 
Centos7 installs docker using the following methods:
sudo yum update
sudo yum install docker
sudo service docker start
sudo chkconfig docker on
 
The above installation method currently only installs the docker1.10 version. If you want to install the latest 1.12+, you can refer to the following installation method:
Its biggest feature is that swarm is integrated and does not need to be installed independently.
 
 
docker command:
help information:
sudo docker --help
sudo docker command --help:比如 sudo docker run --help
sudo docker info : Display docker installation information
sudo docker version: version information
 
Configuration file path:
 
/etc/sysconfig/docker 
 
 
Docker image and container directory
Home directory: /var/lib/docker
Container storage directory: /var/lib/docker/containers/
Image storage directory: /var/lib/docker/image
 
1. Start and stop the dcoker service:
sudo service docker start
sudo service docker stop
sudo service docker restart
sudo service docker status
 
 
2. Mirror operation command
1. Download the mirror
sudo docker pull centos
可以访问 https://hub.docker.com/ 查询镜像信息,以及使用方法
PS:docker镜像存储迁移到新的地址: https://store.docker.com
 
 
2.为镜像打tag
sudo docker tag docker.io/centos:latest centos:7
 
3.查看本机镜像
sudo docker images
 
4.基于容器创建镜像
sudo docker commit -m "注释信息"  -a "作者信息"  容器ID  新的镜像名称
-p : 创建镜像时暂停容器运行
 
5.搜索镜像
sudo docker search -s 100 centos   :这样只会搜索官方仓库,私有仓库不支持search,可以使用curl  http://ip:5000/v2/_catalog 的方式查看,具体参看笔记三:创建镜像仓库私服
-s :搜索星标至少为100的镜像
 
6.删除镜像
sudo docker rmi centos:7 
sudo docker rmi -f 镜像ID
 
7.导出镜像
sudo docker save -o centos_latest.tar centos:7
 
8.导入镜像
sudo docker load --input centos_latest.tar
sudo docker load < centos_latest.tar
 
9.批量删除全部镜像
sudo docker rmi $(sudo docker images -q)
 
10.查看镜像的内部信息
sudo docker inspect 镜像ID
 
三、容器操作命令
1.创建、启动、停止容器
sudo docker create -it centos:latest  
[hanqunfeng@localhost ~]$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
10ed3667e49a        centos:latest       "/bin/bash"         27 seconds ago       Created                                 jovial_keller
 
sudo docker start 容器ID
[hanqunfeng@localhost ~]$ sudo docker start 10e
10e
[hanqunfeng@localhost ~]$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
10ed3667e49a        centos:latest       "/bin/bash"         About a minute ago    Up 3 seconds                            jovial_keller
 
sudo docker stop 容器ID :等待一会再停止
[hanqunfeng@localhost ~]$ sudo docker stop 10e
10e
[hanqunfeng@localhost ~]$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
10ed3667e49a        centos:latest       "/bin/bash"         3 minutes ago        Exited (137) 2 seconds ago                       jovial_keller
 
sudo docker kill 容器ID:立刻停止
说明:容器内没有程序在执行,容器自动停止
 
sudo docker restart 容器ID:停止并重启
 
sudo docker run 相关参数
实际应用时,更多的使用run命令,run命令相当于先执行create,再执行start
练习使用,打开容器终端:
sudo docker run -t -i centos:latest /bin/bash
-t:为docker分配一个伪终端并绑定到容器的标准输入上
-i:让容器的标准输入保持打开
exit退出容器
 
run命令启动容器示例:挂载数据卷、指定端口
1)容器内挂载
sudo docker run -d -P --name web -v /webapp(容器内目录)centos:latest(镜像)  python app.py(执行命令,非必需)
-d:后台运行
-P:将容器内的全部端口暴露给主机端口,端口随机分配49000~49900
--name:容器名称
-v:创建数据卷,可以被其它容器共享,可以多次使用
 
2)挂载主机目录到容器
sudo docker run -d  -p 22:22 -p 3306:3306 --name web -v  /src/webapp(主机目录):/webapp(容器内目录) centos:latest(镜像)  python app.py(执行命令,非必需)
-p:指定具体的主机与容器对应的端口,主机端口:容器端口,可以多次使用
 
sudo docker run -d -p 22:22 -p 3306:3306 --name web -v /src/webapp(主机目录):/webapp(容器内目录) :ro centos:latest(镜像)  python app.py(执行命令,非必需)
ro:只读,默认为rw读写
 
3)挂载容器中的数据卷到新的容器
sudo docker run -d -P --name web2  --volumes-from web(容器名称) centos:latest(镜像)  python app.py(执行命令,非必需)
--volume-from:如果容器中被挂载了数据卷,则该数据卷也会被挂载到当前创建的容器,两个容器共享该数据卷,可以多次使用,可以和 -v 参数同时使用
 
4)数据卷备份
sudo docker run --volumes-from web -v $(pwd):/backup --name worker centos:latest tar cvf /backup/webapp.tar /webapp
将容器web的数据卷/webapp,备份到主机的当前目录
 
5)恢复数据卷
首先需要创建一个带数据卷的容器
sudo docker run -v /webapp --name dbdata centos:latest /bin/bash   :  要与恢复的数据卷路径相同
然后创建另一个新的容器,挂载dbdata的容器,并解压备份到其数据卷中
sudo docker run --volumes-from dbdata -v $(pwd):/backup centos:latest tar xvf /backup/webapp.tar
 
6)指定内存和CPU
sudo docker run -d --cpuset-cpus=0-3 --cpu-shares=512 --memory= 104857600 centos:latest 
sudo docker run -d --cpuset-cpus=1,2 --cpu-shares=1024 --memory= 104857600 centos:latest 
--cpuset-cpus=0-3:设定容器可以使用哪些主机上的cpu核心,0-3:表示0核~3核,4个核心,1,2:表示1核和2核
--memory= 104857600 :可以使用主机内存的上限,单位是B,这里表示100M 1024B * 1024B * 100
 
 
2.查看容器
sudo docker ps :显示状态为运行(up)的容器
sudo docker ps -a:查看主机已经创建了多少个容器
sudo docker ps -qa:只显示容器ID
 
sudo docker top 容器ID:查看指定容器的进程信息,类似于在容器内部执行top命令
 
3.查看容器输出日志
sudo docker logs 容器ID
 
4.进入后台执行的容器
比如启动一个后端运行的容器:sudo docker run -idt centos:latest 
sudo docker  exec -ti 容器ID /bin/bash  :进入根目录 /
sudo docker  exec -ti 容器ID bash  :进入工作目录 ,镜像的WORKDIR
sudo docker  exec -ti 容器ID sh :进入根目录 /
 
5.删除容器
sudo docker rm -f -v 容器ID
-f:如果容器正在运行,则强行终止并删除
-v:删除容器挂载的数据卷,默认情况下删除容器不会删除数据卷,要删除一个数据卷,必须在删除最后一个挂载该数据卷的容器时使用 -v 参数
 
6.导出容器到文件
 
sudo docker export 容器ID > test_for_run.tar
 
7.导入容器为镜像
cat test_for_run.tar | sudo docker import -  test/centos:v1.0(新镜像标识,REPOSITORY:TAG)
 
[hanqunfeng@localhost ~]$ sudo docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
test/centos                v1.0                421afb772f3b        57 seconds ago      196.6 MB
 
8.批量删除全部容器
sudo docker rm -f -v $( sudo docker ps -qa)
 
9.查看容器的内部信息
sudo docker inspect 容器ID :会显示容器的环境变量,IP地址,端口等信息
 
10.查看容器开放的端口
sudo docker port 容器ID
 
11.查看容器设置的环境变量
sudo docker exec 容器ID env
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=327016388&siteId=291194637