在本文中,我们将带你了解docker安装在这篇文章中,我们将为您详细介绍docker安装的方方面面,并解答docker安装mysql常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的167do
在本文中,我们将带你了解docker 安装在这篇文章中,我们将为您详细介绍docker 安装的方方面面,并解答docker安装mysql常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker、Docker in Docker(实际上是 Docker outside Docker): /var/run/docker.sock、docker 使用 curl 命令安装 docker-compose 安装后报错。
本文目录一览:- docker 安装(docker安装mysql)
- 167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo
- centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker
- Docker in Docker(实际上是 Docker outside Docker): /var/run/docker.sock
- docker 使用 curl 命令安装 docker-compose 安装后报错
docker 安装(docker安装mysql)
1.卸载
sudo yum remove docker-ce
$ sudo rm -rf /var/lib/docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3.升级
yum -y upgrade
java 配置docker插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</build>
<!-- Docker maven plugin -->
</plugins>
</build>
Dockerfile 配置
FROM daocloud.io/library/java:openjdk-8u40
VOLUME /tmp
ADD datav-eureka-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8761
FROM centos
MAINTAINER yaolin
COPY jdk1.7.0_79 jdk1.7.0_79
ADD websocket.jar app.jar
ENV JAVA_HOME=/jdk1.7.0_79
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo
background : 最近为小伙伴们筹划docker系列的技术分享,研究了一会docker相关技术, 在此记录一下构建nginx容器时候的坑
1.nginx服务器根目录问题
docker 官方镜像提供的nginx基于debian/jessie平台,其文件结构和ubuntu中的nginx中并不相同
eg:
run一个niginx容器
<span>//80端口被占用,so...</span> $ sudo docker run <span>-it</span><span>-p</span><span>800</span>:<span>800</span> nginx $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES <span>1801</span>a32aab54 nginx <span>"nginx -g ''daemon off"</span><span>2</span> minutes ago Up <span>2</span> minutes <span>80</span>/tcp, <span>443</span>/tcp, <span>0.0</span><span>.0</span><span>.0</span>:<span>800</span><span>-></span><span>800</span>/tcp berserk_kare
进入容器内部
<span>$ </span>sudo docker exec -it <span>1801</span>a32aab54 /bin/bash root<span>@1801a32aab54</span><span>:/</span><span># </span>
查看nginx目录
<span># cd /etc/nginx/</span> conf<span>.d</span>/ koi-utf mime<span>.types</span> nginx<span>.conf</span> uwsgi_params fastcgi_params koi-win modules/ scgi_params win-utf
可以看到不仅没有熟悉的 /sites-available,也没有 /sites-enabled
继续查看nginx配置
<span># cat /conf.d/default.conf</span><span>server</span> { listen <span>80</span>; server_name localhost; <span>#charset koi8-r;</span><span>#access_log /var/log/nginx/log/host.access.log main;</span> location / { root /usr/share/nginx/html; <span>index</span><span>index</span>.html <span>index</span>.htm; } <span>#error_page 404 /404.html;</span><span># redirect server error pages to the static page /50x.html</span><span>#</span> error_page <span>500</span><span>502</span><span>503</span><span>504</span> /<span>50</span>x.html; location = /<span>50</span>x.html { root /usr/share/nginx/html; } <span>#...省略php-fpm配置,好长..</span> }
根目录配置: root /usr/share/nginx/html;
测试
<span># cd /usr/share/nginx/html</span><span># touch index.html</span><span># echo "test nginx in docker" >index.html</span>
php-fpm配置相关
'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });以上就介绍了167 docker docker构建nginx容器系列问题,包括了docker,nginx方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker
1. 先决条件 centos7+docker 最新版本
sudo yum updat
2. 配置一下镜像源,创建 /etc/docker/daemon.conf 文件,在其中输入如下内容
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
3. 启动 docker 命令:
systemctl start docker
重启 docker 服务:
service docker restart
4. 查看和下载 Crawlab 的镜像命令 :
docker search crawlab #(查找Crawlab镜像)
docker pull tikazyq/crawlab:latest #(下载Crawlab镜像)
5. 创建 docker 组:
sudo groupadd docker (删除docker这个用户:userdel -r docker)
6.centos7 查看所有用户:
cut -d : -f 1 /etc/group
7. 将您的用户添加到该 docker 用户组,命令:
sudo usermod -aG docker 用户名
8. 查看 “docker” 组下的所有用户,命令:
grep ''docker'' /etc/group
9.Docker Compose 安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
稍等片刻,有点慢!!!!
赋权:
sudo chmod +x /usr/local/bin/docker-compose
查看版本:
docker-compose --version
10. 查找 docker-compose.yml 文件位置:
find / -name "docker-compose.yml*"
(会出现 find: ‘/run/user/1000/gvfs’: 权限不够,执行:umount /run/user/1000/gvfs 和 rm -rf /run/user/1000/gvfs, 再执行就不会出错了!!!
11. 图中:
/var/lib/docker/overlay2/50df4de9bf340501cade27650953ad983948b10e13bbe931710ef090ab1a4602/diff/app/docker-compose.yml-----------是我的路径
cd 到 app 目录就可以了
vim docker-compose.yml #编辑
注意: 新版镜像的 CRAWLAB_API_ADDRESS 是这样的: CRAWLAB_API_ADDRESS: "http://192.168.157.128:8000"
12. 启动 Crawlab
cd 进入到 docker-compose.yml 所在文件目录下
才能运行:docker-compose up
集群启动容器,否则找不到文件
查看 woker 容器日志命令:docker-compose logs worker
正常会启动四个容器:master、woker、redis、mongo
第一次次启动会下载安装并配置节点和数据库(redis 和 mongodb)
13.Crawlab
浏览器访问 :http://ip:8080 用户名密码是 admin/admin
第一次访问没问题,但是第二次启动会报各种错,博主正在研究中 ----- 持续更新中!!!
Docker in Docker(实际上是 Docker outside Docker): /var/run/docker.sock
在 Docker 容器里面使用 docker run
/docker build
?
Docker 容器技术目前是微服务/持续集成/持续交付领域的第一选择。而在 DevOps 中,我们需要将各种后端/前端的测试/构建环境打包成 Docker 镜像,然后在需要的时候,Jenkins 会使用这些镜像启动容器以执行 Jenkins 任务。
为了方便维护,我们的 CI 系统如 Jenkins,也会使用 Docker 方式部署。 Jenkins 任务中有些任务需要将微服务构建成 Docker 镜像,然后推送到 Harbor 私有仓库中。 或者我们所有的 Jenkins Master 镜像和 Jenkins Slave 镜像本身都不包含任何额外的构建环境,执行任务时都需要启动包含对应环境的镜像来执行任务。
我们的 Jenkins Master、Jenkins Slaves 都是跑在容器里面的,该如何在这些容器里面调用 docker run
命令启动包含 CI 环境的镜像呢? 在这些 CI 镜像里面,我们从源码编译完成后,又如何通过 docker build
将编译结果打包成 Docker 镜像,然后推送到内网仓库呢?
答案下面揭晓。
一、原理说明:/var/run/docker.sock
Docker 采取的是 Client/Server 架构,我们常用的 docker xxx
命令工具,只是 docker 的 client,我们通过该命令行执行命令时,实际上是在通过 client 与 docker engine 通信。
我们通过 apt/yum 安装 docker-ce 时,会自动生成一个 systemd 的 service,所以安装完成后,需要通过 sudo systemctl enable docker.service
来启用该服务。 这个 Docker 服务启动的,就是 docker engine,查看 /usr/lib/systemd/system/docker.service
,能看到有这样一条语句:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
默认情况下,Docker守护进程会生成一个 socket(/var/run/docker.sock
)文件来进行本地进程通信,因此只能在本地使用 docker 客户端或者使用 Docker API 进行操作。 sock 文件是 UNIX 域套接字,它可以通过文件系统(而非网络地址)进行寻址和访问。
因此只要以数据卷的形式将 docker 客户端和上述 socket 套接字挂载到容器内部,就能实现 "Docker in Docker",在容器内使用 docker 命令了。具体的命令见后面的「示例」部分。
要记住的是,真正执行我们的 docker 命令的是 docker engine,而这个 engine 跑在宿主机上。所以这并不是真正的 "Docker in Docker".
二、示例
在容器内部使用宿主机的 docker,方法有二:
- 命令行方式:将
/usr/bin/docker
映射进容器内部,然后直接在容器内部使用这个命令行工具docker
- 需要的时候,也可以将
/etc/docker
文件夹映射到容器内,这样容器内的docker
命令行工具也会使用与宿主机同样的配置。
- 需要的时候,也可以将
- 编程方式:在容器内部以编程的方式使用 docker
- 通过 python 使用 docker: 在 Dockerfile 中通过
pip install docker
将 docker client 安装到镜像中来使用
- 通过 python 使用 docker: 在 Dockerfile 中通过
容器的启动方式也有两种,如下:
1. 直接通过 docker 命令启动
示例命令如下:
docker run --name <name> \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
--user root \
<image-name>:<tag>
**必须以 root 用户启动!(或者其他有权限读写 /var/run/docker.sock
的用户)**然后,在容器内就能正常使用 docker 命令,或者访问宿主机的 docker api 了。
2. 使用 docker-compose 启动
docker-compose.yml 文件内容如下:
version: ''3.3''
services:
jenkins-master:
image: jenkinsci/blueocean:latest
container_name: jenkins-master
environment:
- TZ=Asia/Shanghai # 时区
ports:
- "8080:8080"
- "50000:50000"
volumes:
- ./jenkins_home:/var/jenkins_home # 将容器中的数据映射到宿主机
- /usr/bin/docker:/usr/bin/docker # 为容器内部提供 docker 命令行工具(这个随意)
- /var/run/docker.sock:/var/run/docker.sock # 容器内部通过 unix socket 使用宿主机 docker engine
user: root # 必须确保容器以 root 用户启动!(这样它才有权限读写 docker.socket)
restart: always
然后通过 docker-compose up -d
即可后台启动容器。
Docker 中的 uid 与 gid
通过上面的操作,我们在容器内执行 docker ps
时,还是很可能会遇到一个问题:权限问题。
如果你容器的默认用户是 root,那么你不会遇到这个问题,因为 /var/run/docker.sock
的 onwer 就是 root.
但是一般来说,为了限制用户的权限,容器的默认用户一般都是 uid 和 gid 都是 1000 的普通用户。这样我们就没有权限访问 /var/run/docker.sock
了。
解决办法:
方法一(不一定有效):在构建镜像时,最后一层添加如下内容:
# docker 用户组的 id,通常都是 999
RUN groupadd -g 999 docker \
&& usermod -aG docker <your_user_name>
这样我们的默认用户,就能使用 docker 命令了。
P.S.
999
不一定是 docker 用户组,所以上述方法某些情况下可能失效。这时还是老老实实通过docker run -u root
启动容器吧。(或者在docker-compose.yml
中添加user: root
属性)
参考
- Docker in Docker - 王柏元
docker 使用 curl 命令安装 docker-compose 安装后报错
使用 curl 命令安装 docker-compose 时报错:
curl -L "https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@localhost tile38]# curl -L "https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 0 617 0 0 782 0 --:--:-- --:--:-- --:--:-- 782
0 8649k 0 34370 0 0 635 0 3:52:27 0:00:54 3:51:33 0
0 8649k 0 34370 0 0 105 0 23:25:50 0:05:24 23:20:26 0
[root@localhost tile38]# chmod +x /usr/local/bin/docker-compose
[root@localhost tile38]# ls /usr/local/bin/docker-compose
/usr/local/bin/docker-compose
[root@localhost tile38]# docker-compose version
Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
[root@localhost tile38]# docker-compose up -d
Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
解决办法:
进入下面的网址下载目前的最新版:
https://github.com/docker/compose/releases/tag/1.14.0-rc2
网页拉到最下面,下载:
docker-compose-Linux-x86_64
然后将文件上传到 /usr/local/bin/ 文件夹下,然后将其重命名为 docker-compose,修改此文件的权限,增加可执行:chmod +x /usr/local/bin/docker-compose
然后再运行
docker-compose version 即可。
另一个方法:
wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/25docker/docker-compose-Linux-x86_64
yum install -y docker-compose
docker-compose up -d
关于docker 安装和docker安装mysql的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker、Docker in Docker(实际上是 Docker outside Docker): /var/run/docker.sock、docker 使用 curl 命令安装 docker-compose 安装后报错等相关内容,可以在本站寻找。
本文标签: