docker常用命令
docker安装:https://www.cnblogs.com/xioawu-blog/p/11818417.html
镜像管理:
载入镜像
docker pull centos /ubuntu
查看已拉取的镜像
docker image ls
或 docker images
删除镜像
docker rmi image id
docker rmi image id1 image_id2
删除所有镜像
docker rmi $(docker images -q)
使用镜像启动一个容器,参数为以命令行模式进入该容器:
docker run -it centos /bin/bash
- -i: 交互式操作。
- -t: 终端。
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
- -d: 让容器在后台运行
- -P: 将容器内部使用的网络端口随机映射到我们使用的主机上。
- --name: 为容器命名。
启动容器:
启动容器,并命名为Centos7:
docker run -it --name Centos7 centos /bin/bash
后台运行,加了 -d 参数默认不会进入容器:
docker run -itd --name ubuntu-test ubuntu /bin/bash
问题:在docker容器中使用systemctl 命令报错
原因:默认情况下,在第一步执行的是/bin/bash
,而docker中的bug,无法使用systemctl
;
所以使用/usr/sbin/init
同时添加--privileged=true
参数就能够使用systemctl
了,
但覆盖了默认的/bin/bash,因此我们想进入容器就不能使用docker attach
了;而只能使用docker exec -it <dockername> /bin/bash
解决:运行容器时添加--privileged=true
,修改/bin/bash
为/usr/sbin/init
;
docker run -itd --name nginxv2 --privileged=true centos /usr/sbin/init
docker exec -it nginxv2 /bin/bash
要退出终端,直接输入 exit:
进入容器:
docker attach 29db244aa653/ Python(CONTAINER ID/NAMES): 退出容器,会导致容器停止 ,通过容器Id或者name都可以操作容器
docker exec -it 243c32535da7 /bin/bash (退出容器,容器不会停止。)
查看容器:
docker ps -a 查看所有容器
docker ps 查看up状态的容器
dockers ps -n 2 查看最近创建的2个容器
停止容器:
docker stop b750bbbcfd88
停止所有容器:docker stop $(docker ps -a -q)
启动一个已经停止的容器:
docker start b750bbbcfd88
删除容器:
docker rm -f 1e560fca3906
删除所有容器:docker rm $(docker ps -a -q)
获取容器详细信息:
docker inspect <CONTAINER ID> / <NAMES>
导出导入容器:
导出: docker export 1e560fca3906 > ubuntu.tar
导入:cat /root/ubuntu.tar | docker import - test/ubuntu:v1
docker import http://example.com/exampleimage.tgz example/imagerepo