docker 命令

竹智熊猫 2019年12月02日 111次浏览

安装

centos7

# 添加源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 查询可用列表
yum list docker-ce --showduplicates | sort -r
# 安装
sudo yum install docker-ce 

sudo systemctl start docker

启动容器

sudo docker run -d -p 8888:8888 --name hello-world hello-world:latest
sudo docker run ubuntu:15.10 /bin/echo "Hello world"	
参数说明
-t在新的容器内指定一个伪终端或终端
-i允许你对容器内的标准输入(STDIN)进行交互
-d以进程方式运行 (后台模式)
ps当前正在运行的容器 (-a 全部容器 , -q 只显示id)
logsdocker log 容器id 查询指定容器内的标准输出
stop停止容器
rm后面加上id,删除容器(删除全部docker rm $(docker ps -a -q)
rmi删除images文件
accach后面加上id,进入正在运行的后台容器(exit结束后,容器退出后台运行)
execdocker exec -it 123 /bin/sh 进入后台运行的容器,退出后不会退出容器

进入docker 容器

docker exec -it [哈希值] bash

查看当前容器

sudo docker ps -a

停止docker容器

sudo docker stop [id或名称]

删除docker容器

sudo docker rm [id或名称]

查看docker镜像

sudo docker images

下载docker镜像

sudo docker pull  <hub-user>/<repo-name>:<tag>

删除docker镜像

sudo docker rmi [imageId或tagName]

打镜像标签

sudo docker tag [IMAGE ID or REPOSITORY] [hub-user-name]/[repo-name]:[tag]

Dockerfile

编写Dockerfile文件

# 基于java镜像
FROM java:8
# 
VOLUME /tmp
# 将文件添加到容器中
ADD halo.jar /halo.jar
# run命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/halo.jar"]

制作镜像

docker build -t [镜像名称] .
# -t : 指定镜像名称
# .  : 表示Dockerfile所在路径,需要指定Dockerfile文件路径使用 `-f`
# -f : 后面跟俩个参数,[1]Dockerfile文件路径,[2]Dockerfile制作所在文件夹

docker-compose

运行 docker-compose.yml

sudo docker-compose up -d

上传镜像到docker hub

  1. 先在本地打包好镜像
  2. 为镜像打标签
  3. 登录docker hub
  4. push镜像
  5. 验证(参见下载镜像)

登录docker hub

sduo docker login

如果出现 Error saving credentials: error storing credentials - err: exit status 1, out:Cannot autolaunch D-Bus without X11 $DISPLAY`的问题

  • 可能原因是docker的一个bug
  • 首先查看下是否装了 docker-compose sudo docker-compose version
  • 若装了,则需卸载docker-compose后再执行docker命令
  • 卸载命令 ubuntu sudo apt-get autoremove --purge docker-compose 来源

push 镜像

docker push <hub-user>/<repo-name>:<tag>

参考1 参考2