Docker使用集合
大约 3 分钟
包含常用的docker命令和容器启动部署命令,区分系统版本ubuntu和manjaro
安装和基础配置
manjaro
sudo pacman -S docker
#使用pacman软件管理安装docker,如果没有找到安装包则需要update pacman
sudo dockerd
#启动docker
ubuntu https://www.runoob.com/docker/ubuntu-docker-install.html 根据教程中手动安装是在太慢,放弃此安装方式,使用脚本自动安装
curl -fsSL https://get.docker.com -o get-docker.sh
#下载执行shell
sudo sh get-docker.sh
#执行shell 如果不能执行记得加上执行权限chmod +x *.sh
通用版可以直接下载docker的离线包,解压到指定目录即可使用,生产中使用ubuntu内网部署时用到 https://download.docker.com/linux/static/stable/x86_64/ 离线版本下载页 https://zhuanlan.zhihu.com/p/578402141 离线安装教程
tar xvf docker.tgz
#解压docker离线包
sudo mv docker/* /usr/bin
#将docker运行文件移动到 用户应用目录
sudo dockerd
#启动docker
在实际生产中也遇到过内网windows7部署docker的需求
- 首先检查电脑是否能够开启虚拟化,一般在bios中操作
- 下载docker toolbox https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 内网环境下需要去github下载对应的镜像 https://github.com/boot2docker/boot2docker/releases/ 注意,下载版本号是有说法的, DockerToolbox-18.03.0-ce.exe 对应的是 https://github.com/boot2docker/boot2docker/releases/download/v18.03.0-beta1/boot2docker.iso 否则启动报错摸不着头脑
- 在安装好DockerToolbox并启动后会报错找不到镜像文件,将下载好的镜像放到指定目录下C:\Users\Administrator.docker\machine\cache 并重启软件
- 启动的docker有默认的内网ip地址,需要自行做ip映射;在命令窗内无法ctrl CV,可使用鼠标右键复制命令
- 使用准备好的离线容器导入运行即可
完成安装后任何命令都需要使用sudo,且每次重启电脑后都需要手动进行sudo dockerd 可以通过以下配置实现docker自启和无需sudo参考 https://zhuanlan.zhihu.com/p/578402141
https://www.cnblogs.com/securitybob/p/14809209.html
# vim /etc/systemd/system/docker.service
# 添加
[Unit]
Description = docker
After = network.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/bin/dockerd
[Install]
WantedBy = multi-user.target
#赋执行权限
chmod +x /etc/systemd/system/docker.service
#刷新配置,否则会报Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
systemctl daemon-reload
# 开机启动
systemctl enable docker.service
# 启动docker
systemctl start docker
# docker状态
systemctl status docker
# 重启docker服务
systemctl restart docker
#注意,在启动docker是需要输入密码进行提权,加入开机启动后只需要输入本次密码即可
#加入用户组
sudo usermod -aG docker bjtang
sudo chmod a+rw /var/run/docker.sock
sudo systemctl restart docker
#如果没有配置systemctl 在sudo dockerd命令窗 ctrl+c 重新dockerd即可
docker info
镜像加载与使用
这一步需要提前学习 pull run images 等镜像相关命令
从镜像站加载常用的docker镜像如果出现docker pull失败请参考 https://blog.csdn.net/qq_40709110/article/details/104740600
#加载redis镜像 docker pull daocloud.io/library/redis #启动redis镜像 docker run --restart=always -p 6379:6379 --name redis -d redis -e TZ=Asia/Shanghai #加载nginx镜像 docker pull nginx #启动nginx镜像 #完整步骤参考 https://www.bjtang.com/docker部署nginx实现二级域名ssl证书部署 docker run --name nginx -d -p 80:80 -p 443:443 -v 本地网页文件夹地址:/usr/share/nginx/html -v 本地配置文件夹地址:/etc/nginx/conf.d --privileged=true -d nginx -e TZ=Asia/Shanghai #加载sqlServer镜像 #启动sqlServer镜像 #重启docker,容器跟着重新启动 --restart=always #映射端口号 宿主机:容器内 -p 6379:6379 #映射文件目录 宿主机:容器内 -v 本地配置文件夹地址:/etc/nginx/conf.d #容器别名 --name redis #后台运行 -d #以特权模式运行,可以做额外的操作,比如挂载磁盘/将应用设置为系统服务 --privileged=true #-e是传入环境变量,这里是切换时区,没有跨国业务推荐此参数,否则时间总是相差8小时 -e TZ=Asia/Shanghai
从本地dockerFile文件构建镜像
vim Dockerfile #输入以下数据保存退出 FROM openjdk MAINTAINER bjtang bjtang@bjtang.com VOLUME /tmp ADD 当前目录的项目.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] #仅作为示例使用,论方便还是得java -jar