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 #断开这个连接

 

镜像操作

#aws ECR鉴权

export AWS_ACCESS_KEY_ID="xxx"
export AWS_SECRET_ACCESS_KEY="xxx"
export AWS_SESSION_TOKEN="xxx"

AWS ECR login with credential
aws ecr get-login-password --region us-east-2 | sudo docker login --username AWS --password-stdin 108225804818.dkr.ecr.us-east-2.amazonaws.com

new pull run
sudo docker pull 108225804818.dkr.ecr.us-east-2.amazonaws.com/nltranscoder:2.2.0.260317.1-rocky8

#普通不需要鉴权的
# 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) #删除所有镜像

 

容器操作

#运行方法1: 前台运行(交互)
docker run -it --name web -p 8888:80 nginx
#使用GPU docker run --privileged=true -e NVIDIA_DRIVER_CAPABILITIES=all --gpus all -it --network=host -v /nas:/nas 108225804818.dkr.ecr.us-east-2.amazonaws.com/nltranscoder:2.2.0.260313.1-rocky8
不使用GPU
docker run --privileged=true -it --network=host -v /nas:/nas 108225804818.dkr.ecr.us-east-2.amazonaws.com/nltranscoder:2.2.0.260317.1-rocky8
#运行方法2: 后台运行 docker run -d --name web-8888 -p 8888:80 nginx

#运行方法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文件系统

--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  查看日志

 

posted @ 2021-10-12 17:03  seven1986  阅读(107)  评论(0)    收藏  举报