目录
一、镜像基本操作
1.1 查看docker版本
[root@docker ~]# docker version
1.2 查找镜像
[root@docker ~]# docker search httpd
1.3 下载镜像
[root@docker ~]# docker pull httpd
1.4 查看镜像
[root@docker ~]# docker images # 查看镜像列表
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 0a30f4c29d25 8 days ago 138MB
[root@docker ~]# docker inspect 0a30f4c29d25 # 查看该镜像httpd具体信息
1.5 对镜像添加标签
[root@docker ~]# docker tag httpd:latest httpd:web
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 0a30f4c29d25 8 days ago 138MB
httpd web 0a30f4c29d25 8 days ago 138MB
1.6 删除镜像
[root@docker ~]# docker rmi httpd:web # 可用-f强制删除
Untagged: httpd:web
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 0a30f4c29d25 8 days ago 138MB
Docker删除镜像的注意点:
- 若存在同一个镜像对应两个标签,无法用删除ID的方法删除镜像
- 只有删除完一个镜像的所有标签,才会删除该镜像
批量删除
docker rmi `docker images -q`
1.7 镜像的导出
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 0a30f4c29d25 8 days ago 138MB
centos 7 8652b9f0cb4c 12 days ago 204MB
[root@docker ~]# mkdir /docker
[root@docker ~]# docker save -o /docker/httpd httpd:latest
[root@docker ~]# ls -lh /docker/
total 135M
-rw------- 1 root root 135M Nov 26 16:12 httpd
1.8 镜像的导入
[root@docker ~]# docker load < /docker/httpd
二、容器基本操作
2.1 创建容器
[root@docker ~]# docker create -it httpd:latest /bin/bash
d5e1e780cb302b43eabb566348316b05f71884c2b633ffe8a7265c760c2330a2
# -i:in代表输入
-t:tty伪终端
2.2 查看容器
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5e1e780cb30 httpd:latest "/bin/bash" About a minute ago Created wizardly_archimedes
2.3 启动容器
[root@docker ~]# docker start d5e1e780cb30
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5e1e780cb30 httpd:latest "/bin/bash" 5 minutes ago Up 31 seconds 80/tcp wizardly_archimedes
# 此时状态为up
[root@docker ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:caff:fe6f:dc56 prefixlen 64 scopeid 0x20<link>
ether 02:42:ca:6f:dc:56 txqueuelen 0 (Ethernet)
RX packets 13703 bytes 556150 (543.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 15889 bytes 55852058 (53.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 此时查看ip会多一个172.17.0.1的地址
2.4 登陆正在运行的容器
[root@docker ~]# docker exec it d5e1e780cb30 /bin/bash
2.5 停止容器
[root@docker ~]# docker stop d5e1e780cb30
# 停止所有容器
[root@docker ~]# docker stop `docker ps -q`
[root@docker ~]# docker stop $(docker ps -q)
使用 Docker stop 会造成异常退出(非0值)
2.6 创建并且运行容器
[root@docker ~]# docker run -dit httpd:latest # docker run -it 本地不存在的镜像,直接从网络上拉取
docker run相关指令
-a stdin 指定标准输入输出内容类型,可选 STDIN / STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb” 为容器指定一个名称;
–dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;
-h “mars” 指定容器的hostname;
-e username=“ritchie” 设置环境变量;
–env-file=[] 从指定文件读入环境变量;
–cpuset=“0-2” or --cpuset=“0,1,2” 绑定容器到指定CPU运行;
-c 待完成
-m 待完成
–link=[] 待完成
–expose=[] 待完成
2.7 删除容器
[root@docker ~]# docker rm d5e1e780cb30
# 删除所有容器
[root@docker ~]# docker ps -a |awk '{print "docker rm "$1}'
2.8 容器的导出
[root@docker ~]# docker export b838c021dc78 > /docker/httpd-container
[root@docker ~]# ls -lh /docker/
total 267M
-rw------- 1 root root 135M Nov 26 16:21 httpd
-rw-r--r-- 1 root root 132M Nov 26 17:17 httpd-containe
2.9 容器的导入
# 会生成镜像,不会生成容器
[root@docker ~]# cat /docker/httpd-container | docker import - httpd:new
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd new e72079c97ed3 3 seconds ago 134MB
httpd latest 0a30f4c29d25 8 days ago 138MB