【Docker】docker常用指令

时间:2021-11-13 13:40:06

开启docker,并设置开机自启动

老式写法:

service docker start
chkconfig docker on

新式写法:

systemctl  start docker.service
systemctl enable docker.service

Build an image from a Dockerfile

docker build -t friendlyhello .

tag一个image,并push

语法:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker push username/repository:tag

示例:

[root@localhost ~]# docker login   //登录
[root@localhost ~]# docker tag friendlyhello ssslinppp/get-started:part1 //tag [root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
friendlyhello latest 0a60bcfe3e8d 28 minutes ago 194MB
ssslinppp/get-started part1 0a60bcfe3e8d 28 minutes ago 194MB
python 2.7-slim d962f7a9f2f1 2 weeks ago 182MB
hello-world latest 1815c82652c0 3 weeks ago 1.84kB [root@localhost ~]# docker push ssslinppp/get-started:part1 //上传 [root@localhost ~]# docker run -p 4000:80 ssslinppp/get-started:part1 //运行测试
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)

容器相关操作

在容器内运行进程

# 后台执行
docker exec -d containerID CMD
docker exec -d containerID touch /etc/new_config_file # 示例 # 交互式执行
docker exec -t -i containerID /bin/bash

查看容器内进程

docker top containerID

查看容器详细信息

docker inspect containerID

查看容器的端口映射情况

docker port containerID

镜像相关操作

查看镜像是如何被构建出来

docker history imageID


官方提供的常用命令

docker build -t friendlyname .  # Create image using this directory's Dockerfile
docker run -p 4000:80 friendlyname # Run "friendlyname" mapping port 4000 to 80
docker run -d -p 4000:80 friendlyname # Same thing, but in detached mode
docker ps # See a list of all running containers
docker stop <hash> # Gracefully stop the specified container
docker ps -a # See a list of all containers, even the ones not running
docker kill <hash> # Force shutdown of the specified container
docker rm <hash> # Remove the specified container from this machine
docker rm $(docker ps -a -q) # Remove all containers from this machine
docker images -a # Show all images on this machine
docker rmi <imagename> # Remove the specified image from this machine
docker rmi $(docker images -q) # Remove all images from this machine
docker login # Log in this CLI session using your Docker credentials
docker tag <image> username/repository:tag # Tag <image> for upload to registry
docker push username/repository:tag # Upload tagged image to registry
docker run username/repository:tag # Run image from a registry
docker stack ls              # List all running applications on this Docker host
docker stack deploy -c <composefile> <appname> # Run the specified Compose file
docker stack services <appname> # List the services associated with an app
docker stack ps <appname> # List the running containers associated with an app
docker stack rm <appname> # Tear down an application
docker-machine create --driver virtualbox myvm1 # Create a VM (Mac, Win7, Linux)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 # Win10
docker-machine env myvm1 # View basic information about your node
docker-machine ssh myvm1 "docker node ls" # List the nodes in your swarm
docker-machine ssh myvm1 "docker node inspect <node ID>" # Inspect a node
docker-machine ssh myvm1 "docker swarm join-token -q worker" # View join token
docker-machine ssh myvm1 # Open an SSH session with the VM; type "exit" to end
docker-machine ssh myvm2 "docker swarm leave" # Make the worker leave the swarm
docker-machine ssh myvm1 "docker swarm leave -f" # Make master leave, kill swarm
docker-machine start myvm1 # Start a VM that is currently not running
docker-machine stop $(docker-machine ls -q) # Stop all running VMs
docker-machine rm $(docker-machine ls -q) # Delete all VMs and their disk images
docker-machine scp docker-compose.yml myvm1:~ # Copy file to node's home dir
docker-machine ssh myvm1 "docker stack deploy -c <file> <app>" # Deploy an app