安装
centos7
# 添加源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
## yum-config-manager 缺失
## 使用 yum install yum-utils 安装
# 查询可用列表
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) |
logs | docker log 容器id 查询指定容器内的标准输出 |
stop | 停止容器 |
rm | 后面加上id,删除容器(删除全部docker rm $(docker ps -a -q) ) |
rmi | 删除images文件 |
accach | 后面加上id,进入正在运行的后台容器(exit结束后,容器退出后台运行) |
exec | docker 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>
上传文件到dokcer
docker cp /root/test.txt [id或名称]:/root/
下载文件到宿主机
docker cp [id或名称]:/root/test.txt /root/
换源
换源 - 命令
python -m pip install XXXXX -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
换源 - linux 配置
修改或添加文件~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
换源 - windows 配置
修改或添加文件C:\Users\xx\pip\pip.ini
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
删除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制作所在文件夹
命令解释
- FROM
- 声明使用的基础镜像
- RUN
- 只在build的时候执行
- 终版的时候少用RUN,善用
&&
符合链接命令
- COPY
- 接收2个参数【源路径】和【目标路径】
- 源路径可以是文件或目录。
.
表示目录下全部文件。?
统配任意字符 - 目标路径,不存会自动创建
- CMD
docker run
运行时执行,仅最后一个生效- 提供多个参数,第一个为执行文件或命令,后面为参数,多个参数需要分写
CMD ["java","-jar","app.jar"]
- 也可以为
ENTRYPOINT
命令提供参数。
- ENTRYPOINT
- 一般为定好的程序默认需要执行的,不会被
docker run
命令覆盖,如果需要覆盖则需要使用--entrypoint
参数。 - 其他与
CMD
一致
- 一般为定好的程序默认需要执行的,不会被
- EXPOSE
- 仅声明当前docker使用了这个端口
- 可以搭配
docker run
中的-P
使用。(注意是大写的 P )
- ENV
- 设置环境变量
docker-compose
运行 docker-compose.yml
sudo docker-compose up -d
上传镜像到docker hub
- 先在本地打包好镜像
- 为镜像打标签
- 登录docker hub
- push镜像
- 验证(参见下载镜像)
登录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>
常见异常问题
- WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f5312976190>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/XXXXX/
方案:在宿主机中更改/usr/lib/sysctl.d/00-system.conf
文件,添加net.ipv4.ip_forward=1
,然后重启网络systemctl restart network