一、容器的创建和使用
1)下载镜像
$ docker pull ubuntu:16.04
$ docker pull centos:7.2.1511
2)创建容器
# 方式一:后台启动
docker run -itd centos:7.2.1511 /bin/bash
# 方式二:加上网络映射
docker run -it --net=host centos:7.2.1511
# 方式三:加上端口映射
docker run -d --name centos7.2 -p 80:80 -p 81:81 -p 3306:3306 --privileged=true centos:7.2.1511 /usr/sbin/init
# 方式四:挂载宿主机目录启动,宿主机的/data目录挂载到容器的/root目录
docker run -it -v /data:/root centos /bin/bash
-t 表示在新容器内指定一个伪终端或终端
-d 表示不会进入容器
-i 表示允许我们对容器内的 (STDIN) 进行交互
3)然后我们使用docker ps
查看到该容器ID信息,接下来就进入该容器:
$ docker attach CONTAINER_ID
# 或者指定名称
$ sudo docker exec -it centos7.2 /bin/bash
注:Ctrl + q + p
是退出容器但保持后台运行,exit
或者Ctrl + D
命令是退出并关闭容器。
4)列出所有容器ID
docker ps -aq
# 查看所有运行或者不运行容器
docker ps -a
5)停止所有的container(容器),这样才能够删除其中的images:
docker stop $(docker ps -a -q) 或者 docker stop $(docker ps -aq)
6)如果想要删除所有container(容器)的话再加一个指令:
docker rm $(docker ps -a -q) 或者 docker rm $(docker ps -aq)
7)删除所有停止的容器
docker container prune
8)查看当前有些什么images
docker images
9)删除images(镜像)
# 通过image的id来指定删除谁
docker rmi <image id>
# 想要删除untagged images,也就是那些tag为none的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
# 要删除全部image(镜像)的话
docker rmi $(docker images -q)
# 强制删除全部image的话
docker rmi -f $(docker images -q)
# 删除所有不使用的镜像
docker image prune --force --all或者docker image prune -f -a
10)容器和宿主机相互复制
# 从容器到宿主机复制
docker cp tomcat:/webapps/js/text.js /home/admin
docker cp 容器名:容器路径 宿主机路径
# 从宿主机到容器复制
docker cp /home/admin/text.js tomcat:/webapps/js
docker cp 宿主路径中文件 容器名:容器路径
11)停止、启动、杀死、重启一个容器
docker stop Name或者ID
docker start Name或者ID
docker kill Name或者ID
docker restart name或者ID
12)docker进入容器,查看配置文件
docker exec :在运行的容器中执行命令
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN(标准输入) 打开,以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
docker exec -it f94d2c317477 /bin/bash
13) Rename Docker Image
// Using Image Name
$ docker tag <OLD NAME (REPOSITORY:TAG)> <NEW NAME (REPOSITORY:TAG)>
e.g.
$ docker tag hello-world:latest hello-world:latest_renamed_using_repo_and_tag
// Using Image ID
$ docker tag <IMAGE ID> <NEW NAME (REPOSITORY:TAG)>
e.g.
$ docker tag bf756fb1ae65 hello-world:latest_renamed_using_imageId
14) Rename Docker Container
// Using Container Name
$ docker rename <OLD NAME> <NEW NAME>
e.g.
$ docker rename sad_shaw hello_world
// Using Container ID
$ docker rename <CONTAINER ID> <NEW NAME>
e.g.
$ docker rename 1972fa4393d5 hello_world
二、容器打包成镜像并保存到dockerhub
1)首先登录dockerhub
$ docker login
2)查看容器的信息找出CONTAINER ID
$ docker ps -a
3)把所需上传的容器变为镜像
$ docker commit -m "info" -a "author" [CONTAINER ID] [新的镜像名称]
4)接下来为存在于本地的镜像打标签
$ docker tag imageName dockerUserName/xxx[:tag]
注:imageName为你需要上传的镜像name,dockerUserName为dockerHub的登录名,xxx为仓库名,必须和你在dockerhub中新建的仓库名相同,tag不指定就是latest。
5)打包好之后,就把打包好的镜像上传
$ docker push dockerUserName/xxx[:tag]
注:tag不指定就是latest
最后去dockerhub上查看是否上传成功!