docker基本命令
docker运行
systemctl start docker
systemctl status docker
docker version
# systemctl stop docker #有些进程会使docker.socker 处于连接状态,需断开这个连接,然后再关闭docker。
Warning: Stopping docker.service, but it can still be activated by:
docker.socket
# sudo systemctl stop docker.socket #断开这个连接
容器操作
#运行方法1: 前台运行(交互) [root@localhost ~]# docker run -it --name web -p 8888:80 nginx #运行方法2: 后台运行 [root@localhost ~]# docker run -d --name web-8888 -p 8888:80 nginx 75d3c6aae3c28cca7fc9307a9a84a84223358c28408d362d091539cae5cf1377
#运行方法3:
docker start 容器名/ID
#运行方法4:交互式运行,和方法1有什么区别呢?
docker run -i -t alpine /bin/sh #运行
exit #退出镜像
docker ps -a
docker run web-8888/id #启动容器
docker stop web-8888/id #停止单个容器
docker rm web-8888/id #删除单个容器,运行时的docker不让删除,需要先stop掉。
docker container prune #删除所有停止的容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) #启动所有容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) #停止所有容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2) #删除所有容器
docker inspect livetranscoder | grep IPAddress -A 20 #容器信息,并grep出目标以下20行
运行时访问容器
docker exec -it ms-server /bin/sh #方法1 容器名
docker exec -it 2360 /bin/bash #方法2 容器号
#docker attach 镜像名称 #方法3
#不推荐,直接连接到容器的主进程(PID 1),也就是启动容器时运行的第一个进程。这种方式会进入容器的主会话,看到的是容器主进程的标准输入、输出和错误流。
#如果主进程是一个交互式 shell(如 bash),那么使用attach就类似于进入了这个 shell;
#但如果主进程是一个服务(如 Apache 或数据库),attach会显示该服务的输出日志,ctl+c 就会使docker退出。
例如:
# docker exec -it user /bin/bash 进入edge-user容器
# cd /usr/local/openresty/nginx/ #容日的nginx目录
镜像操作
# docker pull alpine #从镜像仓库中拉取或者更新指定镜像
#镜像导出导入 # docker save -o metersphere.tar metersphere:v12.0 (不改名镜像名称和tag) #导出镜像 # docker load -i metersphere.tar #导入镜像 镜像快照 # docker export ms-server> ms-server.tar 导出快照 # cat ms-server.tar | sudo docker import - ms-server:v12.0 导入快照
# docker images 查看镜像 # docker rmi ac9aa07c4186 #docker rmi IMAGE-ID --删除掉这个镜像
# docker rmi $(docker images | awk '{print $3}' |tail -n +2) #删除所有镜像
docker文件系统
--rm 容器运行完毕后会自行删除
-v linux目录:docker目录 将本地目录绑定到了容器的/builds目录下
-w 将当前工作目录设置到/builds
[root@localhost ~]# docker run --rm -v $PWD/hello:/builds -w /builds golang /bin/bash -c "go build main.go" [root@localhost hello]# ls main main.go #在linux系统目录下编译出main可执行文件
日志:
docker logs web-8888 查看日志

浙公网安备 33010602011771号