docker常用命令
1.镜像管理
docker pull (镜像名) # 默认拉取最新版本的镜像
docker pull (镜像名:版本号) #拉取指定版本的镜像
docker push (镜像名) # 推送镜像
docker images # 查看当前机器的所有镜像
docker rmi 镜像名 #删除一个镜像
docker tag 源镜像名:版本号 自定义镜像名:版本号 # 为一个镜像打tag
docker save busybox > busybox.tar # 制作镜像
docker load < busybox.tar # 导入镜像
给镜像重命名tag只是在原来的镜像上建立了一个软连接,删除镜像也只是删除tag,直到只剩原镜像
2.容器管理
free -h #查看宿主机存储空间
# 运行容器
# 容器运行时的参数
#--name 指定容器名称 -d 后台运行 -p 指定端口映射规则
#--networkd 指定容器运行的网络模式 -v 指定需要挂载的数据卷
#-e 指定需要传递给容器的环境变量 进入交互,env|grep 环境变量 查看环境变量是否传入成功
docker run jenkins #直接运行
docker run -d jenkins #后台运行
docker run -d --name (容器名) (镜像名) #指定容器name运行
docker stop (容器名) #停止容器
docker kill (容器名) #杀死容器
docker rm (容器名)
docker rm -f (容器名) #强行删除容器
docker ps #列出运行的容器
docker ps -a #列出所有的容器
docker ps -a -s #列出所有容器及占用硬盘空间
CONTAINER ID:容器的id,唯一
IMAGE:使用的镜像
COMMAND:启动容器的脚本
CREATED:创建的时间
STATUS:当前容器的状态
PORTS:当前容器对外暴露的端口号
NAMES:指定的name
## 3.查看信息命令
```#shell
#查看日志
docker logs (容器id)
docker logs (容器名)
#日志实时滚动
docker logs -f ${CONTAINER ID}
docker logs -f (容器名称)
docker info #查看docker服务的信息
docker inspect (容器名称) #查看容器的元数据
docker stats 容器名 #查看容器当前占用的资源,如CPU,内存
```
## 4.容器交互命令
```#shell
docker exec -it 容器名 bash
docker exec 容器名 echo "hello world"
docker exec 容器名 ping www.baidu.com
docker cp path/file 容器名:/path
```
## 5.端口映射 宿主机端口号:容器端口号
```#shell
docker run -d --name csjjenkins jenkins
#启动的容器网络并未对外暴露,在用网络名称空间隔离着,不能访问。
```
端口映射:把容器网络的端口映射到宿主机上,将访问宿主机某个端口的网络流浪包转发给容器,间接达到通信的目的。
```#shell
docker run -d --name csjjenkins -p 8080:8080 jenkins
```
第一次启动Jenkins,需要填入初始化密码
6.文件挂载
持久化或数据保存能力:防止容器挂掉或被人误删导致数据丢失,需要经容器中的数据保存到本地。
docker run -d --name csjjenkins -p 8080:8080 -v /Users/chenshanju/Desktop/docker/images/csjjenkins_home:/var/jenkins_home jenkins
FAQ
1.删除容器
先停止容器
docker stop ${CONTAINER ID}
docker stop ${NAMES}
删除容器
docker rm -f ${CONTAINER ID}
docker rm -f ${NAMES}
2.挂载时遇到的权限问题
需要修改下目录权限,因为当映射本地数据卷时,/Users/chenshanju/Desktop/docker/images/csjjenkins_home目录的拥有者是chenshanju,而容器中Jenkins用户的uid为1000
用户身份不一致会导致权限问题
1.chmod 777 /csjjenkins_home
2.sudo chown -R 1000:1000 /User/chenshanju/Desktop/docker/images/csjjenkins