docker基础命令
docker search xxxx 搜索xxxx镜像
docker pull xxxx 下载xxxx镜像,版本号可以自己加,默认拉取最新的
docker images 查看本地镜像
ctrl+p+q 退出容器
docker ps : 查看当前运行的容器信息(上面的退出方式就会默认关闭容器)
docker ps -a : 查看所有的容器
docker start [容器ID/名称] 启动容器
docker exec -it [容器ID/名称] /bin/bash 进入容器
docker rm -f [容器ID/名称] 删除容器
centos镜像(并安装jdk)
建议直接使用下面的拉取java:8镜像,那样更简单
docker pull centos #版本号可以自己加,默认拉取最新的
创建容器
容器是基于镜像创建的,执行镜像生成容器,方可进入容器
启动容器命令: docker run <相关参数> <镜像 ID> <初始命令>
docker run --name xxx --restart=always -i -t -v 本地文件夹路径:/mnt/software/ -p 8081:8081 镜像ID /bin/bash
参数解析
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>-p:将第二个端口暴露到第一个端口上,格式:8081:8080(将容器的8080端口暴露在8081上)
--name:容器名称
--restart=always:自启动
/bin/bash:一旦容器启动,需要执行的命令,当前使用 "/bin/bash", 表示启动后直接进bash shell/mnt/software是centos的容器里面的目录文件,这里的意思是让本地的某个文件夹路径和容器里的/mnt/software互通
在容器内部安装jdk1.8
下载 tomcat和jdk的 tar包,通过ftp工具上传到宿主服务器的/root/software/文件下,因为前面做了挂载,所以待会进入docker容器里的/mnt/software/文件夹下也是可以看到的
进入centos中的/mnt/software文件夹,
解压:
tar -zxvf jdk-8u202-linux-x64.tar.gz
mv jdk1.8.0_202/ /opt/jdk
设置java 环境变量,配置profile
vi /etc/profile
在文件末尾加上
输入i进入插入模式 JAVA_HOME=/opt/jdk/ JAVA_BIN=/opt/jdk/bin JRE_HOME=/opt/jdk/jre CLASSPATH=/opt/jdk/jre/lib:/opt/jdk/lib:/opt/jdk/jre/lib/charsets.jar export JAVA_HOME JAVA_BIN JRE_HOME PATH CLASSPATH点击esc退出,输入:wq保存
使得配置立马有效
source /etc/profile
配置 bashrc
vi ~/.bashrc
在文件末尾加上
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使得配置立马有效
source ~/.bashrc
查看成功: java -version
复制jar包到另一个目录
mkdir /opt/jar/
mv mnt/software/demo.jar /opt/jar/demo.jar
启动jar包
cd /opt/jar/
java -jar demo.jar
mysql5.5
docker pull mysql:5.5
第一次启动mysql
让本地1105端口替代容器的3306端口,并设置密码为123456
docker run --restart=always --name mysql -p 1105:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5
redis
docker pull redis
启动redis
docker run --restart=always -d --name redis -p 6379:6379 -d 7614ae9453d1
java8
默认安装好jdk1.8的系统镜像,不用下载centos镜像自己再安装jdk了
docker pull java:8
启动java8并启动jar包
docker run --name java --restart=always -i -t -v C:\Users\lwh\Desktop\docker:/data/jars/ -p 8081:8081 -d d23bdf5b1b1b /bin/bash -c 'java -jar /data/jars/demo.jar'
gitlab
docker pull gitlab/gitlab-ce:latest
启动Gitlab容器
docker run -itd -p 9980:80 -p 9922:22 -v D:/docker/gitlab/etc:/etc/gitlab -v D:/docker/gitlab/log:/var/log/gitlab -v D:/docker/gitlab/opt:/var/opt/gitlab --restart always --privileged=true --name gitlab gitlab/gitlab-ce
进入镜像后,需要修改2个配置文件
#这个是ssh连接的方法,如果不用可以不改
#修改gitlab.rb
vi /etc/gitlab/gitlab.rb
#加入如下
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.249.132'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.249.132'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
# 修改http和ssh配置
#这里主要是修改host和port,本地访问host改为127.0.0.1,port改为docker run时暴露的端口9980,https没有可以为false
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab:
host: 192.168.249.132
port: 9980 # 这里改为9980
https: false
修改完配置文件后需要重启gitlab
#重启gitlab
gitlab-ctl restart
第一次部署可以顺便修改一下root的密码
# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为AAbb11..
user.password='AAbb11..'
# 保存
user.save!
通过浏览器访问项目
http://192.168.249.132:9980
可能会出现如下报错
一般稍等一会就可以了,运行内存保持在4G以上,不然也会出这个问题
打包镜像
docker build -t 镜像名称 . #注意最后还有一个.(在不同系统甚至不同物理机上再导入会报错,不推荐)
docker commit 容器ID 镜像名:版本号 #容器打包成镜像(版本号尽量是数字)
docker save -o 文件名.tar 镜像名:版本号 #镜像导出
docker load -i 文件名.tar #镜像导入
Windows启动docker报错
问题出在Hyper-V已禁用或Hypervisor代理未运行。
方案一 (如果完全禁用或未安装Hyper-V)
docker desktop 基于windows hyper-v,必须确保hyper-v组件已经开启。可通过如下PowerShell (管理员身份)命令启动。
- 以管理员身份打开CMD
- 启用Hyper-V
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
或者在启用和关闭windows功能中先禁用Hyper-V,重启后再开启。
如果上述cmd代码执行报错:
将下面内容复制到文本文件中,然后将文件命名为Hyper-V.cmd,然后以管理员身份运行即可,运行完成后重启电脑。
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
勾选Hyper-V即可
方案二 (如果Hyper-V功能已启用但不起作用)
hyper-v组件开启后,需确保其守护进程自动运行(我问题出在这里,守护进程没有运行),可通过如下PowerShell(管理员身份) 命令启动:
bcdedit /set hypervisorlaunchtype auto
重启电脑,启动docker desktop,即可正常运行。