[root@docker01 ~]# docker search busybox
[root@docker01 ~]# docker pull busybox
[root@docker01 ~]# docker save -o busybox.tar busybox:latest
或者
[root@docker01 ~]# docker save > busybox1.tar busybox:latest
[root@docker01 ~]# ls
anaconda-ks.cfg busybox.tar initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@docker01 ~]# du -h busybox.tar
1.4M busybox.tar
[root@docker01 ~]# docker images
PS: 虽然我们查看到的镜像标签为latest(最新的),但并不表示它一定是最
新的且标签不固定,可变动,镜像如果没有写标签,默认以latest为标签
[root@docker01 ~]# docker rmi -f busybox:latest //强制删除
[root@docker01 ~]# docker load < busybox1.tar
或者
[root@docker01 ~]# docker load -i busybox.tar
[root@docker01 ~]# docker ps
[root@docker01 ~]# docker ps -a
[root@docker01 ~]# docker rm -f 容器id
或者
[root@docker01 ~]# docker rm -f 容器name //强制删除
[root@docker01 ~]# docker create -it --name dc01 centos:7
PS:创建完成以后容器是created状态,没有启动
[root@docker01 ~]# docker start dc01
dc01
docker stop:停止容器
docker start:开启容器
docker restart:重启容器
docker pause:挂起一个容器
docker unpause:恢复容器
docker run [options] image 基于一个镜像开启一个容器
-d:在后台运行一个容器
-i:已交互模式运行容器
-t:给容器分配一个伪终端
-P:随机指定映射端口
-p:指定端口映射,格式:主机端口:容器端口
-v:建立宿主机与容器目录同步
--name="mysql": 伪容器指定一个名字(如果不指定会有一个随机名字)
--restart=always : 始终保持运行(随着docker开启而运行)
# 批量开启容器
[root@docker01 ~]# docker start $(docker ps -aq)
96f8d1af3797
fc61c1c30b2b
# 批量停止容器
[root@docker01 ~]# docker stop $(docker ps -aq)
96f8d1af3797
fc61c1c30b2b
#批量删除容器
[root@docker01 ~]# docker rm -f $(docker ps -aq)
96f8d1af3797
fc61c1c30b2b
#批量删除容器
[root@docker01 ~]# docker ps -aq | xargs docker rm -f
区别为:
1. 使用exit退出时attach回关闭容器,exec不会
2. exec可以在命令行内远程操作容器
3. exec会启用一个新的进程,相互独立,而attach不会生成新的进程,多人使用时建议exec
使用attach进入容器,他们只会有一个进程号,任何操作都会同步
#宿主机传输给docker容器
[root@docker01 ~]# docker cp nginx-1.17.5.tar.gz dc01:/root
#docker容器传输给宿主机
[root@docker01 ~]# docker cp dc01:/root/test.txt .
[root@docker01 ~]# docker cp nginx-1.17.5.tar.gz dc01:/root
[root@docker01 ~]# docker exec -it dc01 /bin/bash
[root@6916c8c9b3fc ~]# yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
[root@badccc243dff ~]# tar -zxf nginx-1.17.5.tar.gz
[root@badccc243dff ~]# cd nginx-1.17.5
[root@6916c8c9b3fc nginx-1.17.5]# useradd -M -s /sbin/nologin nginx
[root@6916c8c9b3fc nginx-1.17.5]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
[root@e6bdc6bb1648 nginx-1.17.5]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@e6bdc6bb1648 nginx-1.17.5]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@e6bdc6bb1648 nginx-1.17.5]# nginx
[root@e6bdc6bb1648 ~]# echo 'Hello Word' > /usr/local/nginx/html/index.html
[root@e6bdc6bb1648 ~]# curl 127.0.0.1
Hello Word
docker commit 提交容器副本使之成为一个新的镜像
docker commit -a=“作者” -m=“描述” 容器id 新的镜像名:标签
镜像打包
[root@docker01 ~]# docker commit -a='lzs' -m='installed nginx' dc01 mycentos:nginx
导出到本地
[root@docker01 ~]# docker save -o mycenos.tar mycentos:nginx
scp拷贝docker03
[root@docker01 ~]# scp -rp mycenos.tar [email protected]:/root/
docker03直接通过这个镜像运行容器
[root@docker03 ~]# docker run -itd --name dc01 mycentos:nginx
[root@docker03 ~]# docker exec -it dc01 /bin/bash
[root@e42e1e72445b /]# nginx
[root@e42e1e72445b /]# curl 127.0.0.1
Hello Word