Usage: docker image COMMAND
Manage images
Commands:
build Build an image from a Dockerfile
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Display detailed information on one or more images
load Load an image from a tar archive or STDIN
ls List images
prune Remove unused images
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rm Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
#镜像拉取
docker search NAME
docker pull REPOSITORY[:TAG] #不指定TAG默认下载latest标签
#镜像基本信息查看
docker image ls
docker image ls --no-trunc
#镜像详细信息查看
docker image inspect REPOSITORY:TAG
docker image inspect IMAGEID
#查看全部镜像ID
docker image ls -qa
#镜像导入和导出
docker image save IMAGEID > FILE.tar
- -o, --output: 指定输出文件的路径。
docker save -o myimage.tar myimage:latest
docker image load -i FILE.tar
- -i, --input: 指定输入文件的路径。
docker load -i mynginx.tar
#镜像删除
docker image rm -f ID
docker image rm -f `docker image ls -qa`
#镜像清理
docker image prune -f
#修改镜像标签
docker image tag IMAGEID NEWREPOSITORY:NEWTAG
#创建镜像
docker container commit NAME|CONTAINERID REPOSITORY:TAG #通过容器创建镜像
docker image import FILE.tar REPOSITORY:TAG #通过文件导入镜像
docker image build -t "REPOSITORY:TAG" ./ #通过Dockerfile文件制作镜像
docker容器管理
Usage: docker container COMMAND
Manage containers
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
exec Run a command in a running container
export Export a container's filesystem as a tar archive
inspect Display detailed information on one or more containers
kill Kill one or more running containers
logs Fetch the logs of a container
ls List containers
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
prune Remove all stopped containers
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
run Run a command in a new container
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
#运行交互式容器
docker container run -it IMAGEID|REPOSITORY:TAG
docker container run -it --name="centos8" centos:8 #指定容器名
docker container run -it --name="centos8" --rm centos:8 #临时运行容器(容器中止就删除)
#运行守护式容器
docker container run -d IMAGEID|REPOSITORY:TAG
docker container run -d --name="nginx" nginx:1.19 #指定容器名
docker container run -d -p 8080:80 --name="nginx" nginx:1.19 #指定映射端口(访问宿主机8080端口会转发到容器80端口)
docker container run -d --privileged --name="centos8" centos:8 /usr/sbin/init #支持systemctl(参数--privileged指定以特权模式运行)
#查看容器基本信息
docker container ls -a
docker container ls -a --no-trunc
#查看容器详细信息
docker container inspect NAME|CONTAINERID
#查看全部容器ID
docker container ls -qa
docker ps -qa
#容器其他操作
docker container [-i] start NAME|CONTAINERID #启动容器
docker container stop NAME|CONTAINERID #停止容器
docker container kill NAME|CONTAINERID #杀死容器
#容器连接
docker container attach NAME|CONTAINERID #退出时会影响到当前容器
docker container exec -it NAME|CONTAINERID COMMAND #子进程连接(退出时也不会影响到当前容器)
#容器导出
docker container export NAME|CONTAINERID > FILE.tar
#容器删除
docker container rm -f NAME|CONTAINERID
docker container rm -f `docker ps -qa`
#容器后台和前台的切换
ctrl + pq #容器切换到后台(将交互式容器转变为守护式容器)
docker container attach #容器调用到前台
docker container run -it IMAGEID sleep 99999 #交换容器长时间运行在后台
#查看容器进程
docker container top NAME|CONTAINERID
#查看容器日志
docker container logs -f NAME|CONTAINERID
#管理容器文件
docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH #将容器的文件拷贝到宿主机
docker container cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH #将宿主机的文件拷贝到容器
#重启docker服务容器全部退出的解决办法
docker container run --restart=always IMAGEID|REPOSITORY:TAG
vi /etc/docker/daemon.json
{
"live-restore": true #实现容器不会因为重启docker服务而退出
}
systemctl daemon-reload && systemctl restart docker
docker容器管理高级操作
服务端口映射
#宿主机和容器通过docker0网卡建立通信(自动创建)
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:64:b7:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.7/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe64:b76b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:c1:94:04:a8 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:c1ff:fe94:4a8/64 scope link
valid_lft forever preferred_lft forever
#docker会自动添加一条iptables规则来实现端口映射
#指定端口映射
-p [ip:]hostPort:containerPort
docker container run -d -p 80:80 nginx:1.19
docker container run -d -p 192.168.1.7:80:80 nginx:1.19
#随机端口映射(随机端口49153-60999)
-p [ip::]containerPort
docker container run -d -p 80 nginx:1.19
docker container run -d -p 192.168.1.7::80 nginx:1.19
#指定协议映射(默认映射的协议为tcp)
-p [ip:]hostPort:containerPort/udp
-p [ip::]containerPort/udp
docker container run -d -p 80:80/udp nginx:1.19
docker container run -d -p 192.168.1.7:80:80/udp nginx:1.19
docker container run -d -p 80/udp nginx:1.19
docker container run -d -p 192.168.1.7::80/udp nginx:1.19
#多服务端口映射
-p [ip:]hostPort:containerPort[/udp] -p [ip:]hostPort:containerPort[/udp]
-p [ip::]containerPort[/udp] -p [ip::]containerPort[/udp]
docker container run -d -p 22:22 -p 80:80 nginx:1.19
docker container run -d -p 192.168.1.7:22:22 -p 192.168.1.7:80:80 nginx:1.19
docker container run -d -p 22 -p 80 nginx:1.19
docker container run -d -p 192.168.1.7::22 -p 192.168.1.7::80 nginx:1.19
#docker网络管理
Usage: docker network COMMAND
Manage networks
Commands:
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks
#docker本地网络类型
docker network ls
NETWORK ID NAME DRIVER SCOPE
d1a2c4fcd434 bridge bridge local
fcb209012ece host host local
e85f92c07f31 none null local
#指定容器的网络类型
docker container run --network=TYPE
none #无网络模式
bridge #默认网络模式相当于NAT
host #公用宿主机Network NameSapce(公用宿主机host文件、端口、网络、计算机名称)
container #与其他容器公用Network Namespace
#指定容器的网络类型示例
docker container run -it --network=host --rm busybox